diff options
Diffstat (limited to 'application/dialogs/NewInstanceDialog.cpp')
-rw-r--r-- | application/dialogs/NewInstanceDialog.cpp | 41 |
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); + } } } |