diff --git a/api/logic/minecraft/ComponentList.cpp b/api/logic/minecraft/ComponentList.cpp index e5c373a4..b2afdb17 100644 --- a/api/logic/minecraft/ComponentList.cpp +++ b/api/logic/minecraft/ComponentList.cpp @@ -635,6 +635,9 @@ void ComponentList::componentDataChanged() qWarning() << "ComponentList got dataChenged signal from a non-Component!"; return; } + if(objPtr->getID() == "net.minecraft") { + emit minecraftChanged(); + } // figure out which one is it... in a seriously dumb way. int index = 0; for (auto component: d->components) diff --git a/api/logic/minecraft/ComponentList.h b/api/logic/minecraft/ComponentList.h index 18beaf60..cb20c559 100644 --- a/api/logic/minecraft/ComponentList.h +++ b/api/logic/minecraft/ComponentList.h @@ -104,6 +104,9 @@ public: /// if there is a save scheduled, do it now. void saveNow(); +signals: + void minecraftChanged(); + public: /// get the profile component by id Component * getComponent(const QString &id); diff --git a/api/logic/minecraft/MinecraftInstance.h b/api/logic/minecraft/MinecraftInstance.h index fac309c2..501697f7 100644 --- a/api/logic/minecraft/MinecraftInstance.h +++ b/api/logic/minecraft/MinecraftInstance.h @@ -113,9 +113,6 @@ public: virtual JavaVersion getJavaVersion() const; -signals: - void versionReloaded(); - protected: QMap createCensorFilterFromSession(AuthSessionPtr session); QStringList validLaunchMethods(); diff --git a/application/pages/instance/VersionPage.cpp b/application/pages/instance/VersionPage.cpp index 6f1b9206..f27d562a 100644 --- a/application/pages/instance/VersionPage.cpp +++ b/application/pages/instance/VersionPage.cpp @@ -109,25 +109,18 @@ VersionPage::VersionPage(MinecraftInstance *inst, QWidget *parent) reloadComponentList(); - if (m_profile) - { - auto proxy = new IconProxy(ui->packageView); - proxy->setSourceModel(m_profile.get()); - ui->packageView->setModel(proxy); - ui->packageView->installEventFilter(this); - ui->packageView->setSelectionMode(QAbstractItemView::SingleSelection); - connect(ui->packageView->selectionModel(), &QItemSelectionModel::currentChanged, this, &VersionPage::versionCurrent); - auto smodel = ui->packageView->selectionModel(); - connect(smodel, &QItemSelectionModel::currentChanged, this, &VersionPage::packageCurrent); - updateVersionControls(); - // select first item. - preselect(0); - } - else - { - disableVersionControls(); - } - connect(m_inst, &MinecraftInstance::versionReloaded, this, &VersionPage::updateVersionControls); + auto proxy = new IconProxy(ui->packageView); + proxy->setSourceModel(m_profile.get()); + ui->packageView->setModel(proxy); + ui->packageView->installEventFilter(this); + ui->packageView->setSelectionMode(QAbstractItemView::SingleSelection); + connect(ui->packageView->selectionModel(), &QItemSelectionModel::currentChanged, this, &VersionPage::versionCurrent); + auto smodel = ui->packageView->selectionModel(); + connect(smodel, &QItemSelectionModel::currentChanged, this, &VersionPage::packageCurrent); + + updateVersionControls(); + preselect(0); + connect(m_profile.get(), &ComponentList::minecraftChanged, this, &VersionPage::updateVersionControls); } VersionPage::~VersionPage() @@ -181,21 +174,20 @@ void VersionPage::packageCurrent(const QModelIndex ¤t, const QModelIndex & void VersionPage::updateVersionControls() { // FIXME: this is a dirty hack - auto minecraftVersion = Version(m_profile->getComponentVersion("net.minecraft")); - bool newCraft = minecraftVersion >= Version("1.14"); - bool oldCraft = minecraftVersion <= Version("1.12.2"); - ui->fabricBtn->setEnabled(newCraft); - ui->forgeBtn->setEnabled(oldCraft); - ui->liteloaderBtn->setEnabled(oldCraft); - updateButtons(); -} - -void VersionPage::disableVersionControls() -{ - ui->fabricBtn->setEnabled(false); - ui->forgeBtn->setEnabled(false); - ui->liteloaderBtn->setEnabled(false); - ui->reloadBtn->setEnabled(false); + if(m_profile) { + auto minecraftVersion = Version(m_profile->getComponentVersion("net.minecraft")); + bool newCraft = minecraftVersion >= Version("1.14"); + bool oldCraft = minecraftVersion <= Version("1.12.2"); + ui->fabricBtn->setEnabled(newCraft); + ui->forgeBtn->setEnabled(oldCraft); + ui->liteloaderBtn->setEnabled(oldCraft); + } + else { + ui->fabricBtn->setEnabled(false); + ui->forgeBtn->setEnabled(false); + ui->liteloaderBtn->setEnabled(false); + ui->reloadBtn->setEnabled(false); + } updateButtons(); } diff --git a/application/pages/instance/VersionPage.h b/application/pages/instance/VersionPage.h index 4957c9ea..2d64120a 100644 --- a/application/pages/instance/VersionPage.h +++ b/application/pages/instance/VersionPage.h @@ -66,7 +66,6 @@ private slots: void on_downloadBtn_clicked(); void updateVersionControls(); - void disableVersionControls(); void on_changeVersionBtn_clicked(); private: