summaryrefslogtreecommitdiffstats
path: root/application/dialogs/NewInstanceDialog.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'application/dialogs/NewInstanceDialog.cpp')
-rw-r--r--application/dialogs/NewInstanceDialog.cpp41
1 files changed, 36 insertions, 5 deletions
diff --git a/application/dialogs/NewInstanceDialog.cpp b/application/dialogs/NewInstanceDialog.cpp
index d53e1959..8180aa27 100644
--- a/application/dialogs/NewInstanceDialog.cpp
+++ b/application/dialogs/NewInstanceDialog.cpp
@@ -19,7 +19,6 @@
#include <BaseVersion.h>
#include <icons/IconList.h>
-#include <minecraft/MinecraftVersionList.h>
#include <tasks/Task.h>
#include <InstanceList.h>
@@ -32,6 +31,9 @@
#include <QFileDialog>
#include <QValidator>
+#include <meta/Index.h>
+#include <meta/VersionList.h>
+
class UrlValidator : public QValidator
{
public:
@@ -62,7 +64,25 @@ NewInstanceDialog::NewInstanceDialog(const QString & initialGroup, QWidget *pare
resize(minimumSizeHint());
layout()->setSizeConstraint(QLayout::SetFixedSize);
- setSelectedVersion(MMC->minecraftlist()->getRecommended());
+ auto vlist = ENV.metadataIndex()->get("net.minecraft");
+ if(vlist->isLoaded())
+ {
+ setSelectedVersion(vlist->getRecommended());
+ }
+ else
+ {
+ vlist->load();
+ auto task = vlist->getLoadTask();
+ if(vlist->isLoaded())
+ {
+ setSelectedVersion(vlist->getRecommended());
+ }
+ if(task)
+ {
+ connect(task.get(), &Task::succeeded, this, &NewInstanceDialog::versionListUpdated);
+ }
+ }
+
InstIconKey = "default";
ui->iconButton->setIcon(MMC->icons()->getIcon(InstIconKey));
@@ -95,6 +115,15 @@ NewInstanceDialog::NewInstanceDialog(const QString & initialGroup, QWidget *pare
updateDialogState();
}
+void NewInstanceDialog::versionListUpdated()
+{
+ if(!m_versionSetByUser)
+ {
+ auto vlist = ENV.metadataIndex()->get("net.minecraft");
+ setSelectedVersion(vlist->getRecommended());
+ }
+}
+
NewInstanceDialog::~NewInstanceDialog()
{
delete ui;
@@ -134,7 +163,7 @@ void NewInstanceDialog::setSelectedVersion(BaseVersionPtr version)
if (m_selectedVersion)
{
- ui->versionTextBox->setText(version->name());
+ ui->versionTextBox->setText(version->descriptor());
}
else
{
@@ -192,14 +221,16 @@ BaseVersionPtr NewInstanceDialog::selectedVersion() const
void NewInstanceDialog::on_btnChangeVersion_clicked()
{
- VersionSelectDialog vselect(MMC->minecraftlist().get(), tr("Change Minecraft version"),
- this);
+ VersionSelectDialog vselect(ENV.metadataIndex()->get("net.minecraft").get(), tr("Change Minecraft version"), this);
vselect.exec();
if (vselect.result() == QDialog::Accepted)
{
BaseVersionPtr version = vselect.selectedVersion();
if (version)
+ {
+ m_versionSetByUser = true;
setSelectedVersion(version);
+ }
}
}