diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-04-07 00:27:24 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-04-07 00:27:24 +0200 |
commit | 795889d934e8f4ebe89be1a49a3417fd98e89be1 (patch) | |
tree | c5b0d30d425003c4b88e84a2908e63eb5ed797b9 /application/dialogs | |
parent | 160b5033a79e6b5ee9f3e2a001b96c677f41ddcb (diff) | |
parent | 8e58d61150b0bdbe9eb91065d36342f3004fe97b (diff) | |
download | PrismLauncher-795889d934e8f4ebe89be1a49a3417fd98e89be1.tar.gz PrismLauncher-795889d934e8f4ebe89be1a49a3417fd98e89be1.tar.bz2 PrismLauncher-795889d934e8f4ebe89be1a49a3417fd98e89be1.zip |
Merge branch 'feature/meta' into develop
Diffstat (limited to 'application/dialogs')
-rw-r--r-- | application/dialogs/NewInstanceDialog.cpp | 41 | ||||
-rw-r--r-- | application/dialogs/NewInstanceDialog.h | 4 |
2 files changed, 38 insertions, 7 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); + } } } diff --git a/application/dialogs/NewInstanceDialog.h b/application/dialogs/NewInstanceDialog.h index 1f7fadfb..1741dab8 100644 --- a/application/dialogs/NewInstanceDialog.h +++ b/application/dialogs/NewInstanceDialog.h @@ -36,8 +36,6 @@ public: void setSelectedVersion(BaseVersionPtr version); - void loadVersionList(); - QString instName() const; QString instGroup() const; QString iconKey() const; @@ -50,10 +48,12 @@ slots: void on_iconButton_clicked(); void on_modpackBtn_clicked(); void on_instNameTextBox_textChanged(const QString &arg1); + void versionListUpdated(); private: Ui::NewInstanceDialog *ui; + bool m_versionSetByUser = false; BaseVersionPtr m_selectedVersion; QString InstIconKey; QString originalPlaceholderText; |