From 7c24bcc83476dcbdd7f7acbe14ecef4398962689 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sat, 1 Mar 2014 23:06:47 +0100 Subject: Reorganize the version-related code. --- gui/dialogs/OneSixModEditDialog.cpp | 4 ++-- gui/dialogs/OneSixModEditDialog.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index fe621a9a..67210217 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -34,7 +34,7 @@ #include "gui/dialogs/ProgressDialog.h" #include "logic/ModList.h" -#include "logic/OneSixVersion.h" +#include "logic/VersionFinal.h" #include "logic/EnabledItemFilter.h" #include "logic/lists/ForgeVersionList.h" #include "logic/lists/LiteLoaderVersionList.h" @@ -353,7 +353,7 @@ QMap OneSixModEditDialog::getExistingOrder() const QMap order; // default { - for (OneSixVersion::VersionFile file : m_version->versionFiles) + for (VersionFinal::VersionFile file : m_version->versionFiles) { if (file.id.startsWith("org.multimc.")) { diff --git a/gui/dialogs/OneSixModEditDialog.h b/gui/dialogs/OneSixModEditDialog.h index f44b336b..1f3f9f67 100644 --- a/gui/dialogs/OneSixModEditDialog.h +++ b/gui/dialogs/OneSixModEditDialog.h @@ -60,7 +60,7 @@ protected: private: Ui::OneSixModEditDialog *ui; - std::shared_ptr m_version; + std::shared_ptr m_version; std::shared_ptr m_mods; std::shared_ptr m_resourcepacks; EnabledItemFilter *main_model; -- cgit v1.2.3 From 80d146866c8c5f00c6d790b476a774def71010bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 2 Mar 2014 02:17:55 +0100 Subject: Remove widgets from logic. --- gui/dialogs/OneSixModEditDialog.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index 67210217..d936f3f1 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -124,7 +124,7 @@ void OneSixModEditDialog::disableVersionControls() void OneSixModEditDialog::on_reloadLibrariesBtn_clicked() { - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } void OneSixModEditDialog::on_removeLibraryBtn_clicked() @@ -137,7 +137,7 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() } else { - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } } } @@ -145,7 +145,7 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() void OneSixModEditDialog::on_resetLibraryOrderBtn_clicked() { QDir(m_inst->instanceRoot()).remove("order.json"); - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() { @@ -181,7 +181,7 @@ void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() } else { - m_inst->reloadVersion(this); + m_inst->reloadVersion(); ui->libraryTreeView->selectionModel()->select(m_version->index(ourRow - 1), QItemSelectionModel::SelectCurrent); } } @@ -218,7 +218,7 @@ void OneSixModEditDialog::on_moveLibraryDownBtn_clicked() } else { - m_inst->reloadVersion(this); + m_inst->reloadVersion(); ui->libraryTreeView->selectionModel()->select(m_version->index(ourRow + 1), QItemSelectionModel::SelectCurrent); } } @@ -232,7 +232,7 @@ void OneSixModEditDialog::on_forgeBtn_clicked() return; } QDir(m_inst->instanceRoot()).remove("custom.json"); - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); vselect.setFilter(1, m_inst->currentVersionId()); @@ -277,7 +277,7 @@ void OneSixModEditDialog::on_forgeBtn_clicked() } } } - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } void OneSixModEditDialog::on_liteloaderBtn_clicked() @@ -289,7 +289,7 @@ void OneSixModEditDialog::on_liteloaderBtn_clicked() return; } QDir(m_inst->instanceRoot()).remove("custom.json"); - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"), this); vselect.setFilter(1, m_inst->currentVersionId()); @@ -310,7 +310,7 @@ void OneSixModEditDialog::on_liteloaderBtn_clicked() } else { - m_inst->reloadVersion(this); + m_inst->reloadVersion(); } } } -- cgit v1.2.3 From d66f2500a6b4215a135f1e41802f7c7498375c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Mon, 3 Mar 2014 01:44:07 +0100 Subject: No end in sight :< --- gui/dialogs/OneSixModEditDialog.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index d936f3f1..cc383993 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -175,6 +175,7 @@ void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() order[ourId] = ourNewOrder; order[sortedOrder[sortedOrders[ourIndex - 1]]] = ourOrder; + // FIXME: why is GUI code doing this in particular? why isn't this part of a model? if (!OneSixVersionBuilder::writeOverrideOrders(order, m_inst)) { QMessageBox::critical(this, tr("Error"), tr("Couldn't save the new order")); @@ -185,6 +186,8 @@ void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() ui->libraryTreeView->selectionModel()->select(m_version->index(ourRow - 1), QItemSelectionModel::SelectCurrent); } } + +// FIXME: WHY IS THIS DUPLICATED? void OneSixModEditDialog::on_moveLibraryDownBtn_clicked() { QMap order = getExistingOrder(); @@ -212,6 +215,7 @@ void OneSixModEditDialog::on_moveLibraryDownBtn_clicked() order[ourId] = ourNewOrder; order[sortedOrder[sortedOrders[ourIndex + 1]]] = ourOrder; + // FIXME: why is GUI code doing this in particular? why isn't this part of a model? if (!OneSixVersionBuilder::writeOverrideOrders(order, m_inst)) { QMessageBox::critical(this, tr("Error"), tr("Couldn't save the new order")); -- cgit v1.2.3 From 47bc7e5ee377dacfeb7cf3d13f07cfd24db906fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Wed, 5 Mar 2014 01:50:05 +0100 Subject: More refactor. --- gui/dialogs/OneSixModEditDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index cc383993..96205d0a 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -357,7 +357,7 @@ QMap OneSixModEditDialog::getExistingOrder() const QMap order; // default { - for (VersionFinal::VersionFile file : m_version->versionFiles) + for (auto & file : m_version->versionFiles) { if (file.id.startsWith("org.multimc.")) { -- cgit v1.2.3 From ffff2cd3248a574d3d666731580ac7b8c33e1735 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 9 Mar 2014 17:38:42 +0100 Subject: Remove version patch reordering. Remove the main class display from onesix edit mods. --- gui/dialogs/OneSixModEditDialog.cpp | 114 +++--------------------------------- gui/dialogs/OneSixModEditDialog.ui | 50 ++++++++-------- 2 files changed, 34 insertions(+), 130 deletions(-) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index 96205d0a..c211d3e1 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -110,7 +110,6 @@ void OneSixModEditDialog::updateVersionControls() { ui->forgeBtn->setEnabled(true); ui->liteloaderBtn->setEnabled(true); - ui->mainClassEdit->setText(m_version->mainClass); } void OneSixModEditDialog::disableVersionControls() @@ -119,7 +118,6 @@ void OneSixModEditDialog::disableVersionControls() ui->liteloaderBtn->setEnabled(false); ui->reloadLibrariesBtn->setEnabled(false); ui->removeLibraryBtn->setEnabled(false); - ui->mainClassEdit->setText(""); } void OneSixModEditDialog::on_reloadLibrariesBtn_clicked() @@ -131,6 +129,7 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() { if (ui->libraryTreeView->currentIndex().isValid()) { + // FIXME: use actual model, not reloading. if (!m_version->remove(ui->libraryTreeView->currentIndex().row())) { QMessageBox::critical(this, tr("Error"), tr("Couldn't remove file")); @@ -144,97 +143,31 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() void OneSixModEditDialog::on_resetLibraryOrderBtn_clicked() { - QDir(m_inst->instanceRoot()).remove("order.json"); - m_inst->reloadVersion(); + // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). } + void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() { - - QMap order = getExistingOrder(); - if (order.size() < 2 || ui->libraryTreeView->selectionModel()->selectedIndexes().isEmpty()) - { - return; - } - const int ourRow = ui->libraryTreeView->selectionModel()->selectedIndexes().first().row(); - const QString ourId = m_version->versionFileId(ourRow); - const int ourOrder = order[ourId]; - if (ourId.isNull() || ourId.startsWith("org.multimc.")) - { - return; - } - - QMap sortedOrder = invert(order); - - QList sortedOrders = sortedOrder.keys(); - const int ourIndex = sortedOrders.indexOf(ourOrder); - if (ourIndex <= 0) - { - return; - } - const int ourNewOrder = sortedOrders.at(ourIndex - 1); - order[ourId] = ourNewOrder; - order[sortedOrder[sortedOrders[ourIndex - 1]]] = ourOrder; - - // FIXME: why is GUI code doing this in particular? why isn't this part of a model? - if (!OneSixVersionBuilder::writeOverrideOrders(order, m_inst)) - { - QMessageBox::critical(this, tr("Error"), tr("Couldn't save the new order")); - } - else - { - m_inst->reloadVersion(); - ui->libraryTreeView->selectionModel()->select(m_version->index(ourRow - 1), QItemSelectionModel::SelectCurrent); - } + // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). } -// FIXME: WHY IS THIS DUPLICATED? void OneSixModEditDialog::on_moveLibraryDownBtn_clicked() { - QMap order = getExistingOrder(); - if (order.size() < 2 || ui->libraryTreeView->selectionModel()->selectedIndexes().isEmpty()) - { - return; - } - const int ourRow = ui->libraryTreeView->selectionModel()->selectedIndexes().first().row(); - const QString ourId = m_version->versionFileId(ourRow); - const int ourOrder = order[ourId]; - if (ourId.isNull() || ourId.startsWith("org.multimc.")) - { - return; - } - - QMap sortedOrder = invert(order); - - QList sortedOrders = sortedOrder.keys(); - const int ourIndex = sortedOrders.indexOf(ourOrder); - if ((ourIndex + 1) >= sortedOrders.size()) - { - return; - } - const int ourNewOrder = sortedOrders.at(ourIndex + 1); - order[ourId] = ourNewOrder; - order[sortedOrder[sortedOrders[ourIndex + 1]]] = ourOrder; - - // FIXME: why is GUI code doing this in particular? why isn't this part of a model? - if (!OneSixVersionBuilder::writeOverrideOrders(order, m_inst)) - { - QMessageBox::critical(this, tr("Error"), tr("Couldn't save the new order")); - } - else - { - m_inst->reloadVersion(); - ui->libraryTreeView->selectionModel()->select(m_version->index(ourRow + 1), QItemSelectionModel::SelectCurrent); - } + // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). } void OneSixModEditDialog::on_forgeBtn_clicked() { + // FIXME: use actual model, not reloading. Move logic to model. + + // FIXME: model::isCustom(); if (QDir(m_inst->instanceRoot()).exists("custom.json")) { if (QMessageBox::question(this, tr("Revert?"), tr("This action will remove your custom.json. Continue?")) != QMessageBox::Yes) { return; } + // FIXME: model::revertToBase(); QDir(m_inst->instanceRoot()).remove("custom.json"); m_inst->reloadVersion(); } @@ -351,35 +284,6 @@ bool OneSixModEditDialog::resourcePackListFilter(QKeyEvent *keyEvent) return QDialog::eventFilter(ui->resPackTreeView, keyEvent); } -QMap OneSixModEditDialog::getExistingOrder() const -{ - - QMap order; - // default - { - for (auto & file : m_version->versionFiles) - { - if (file.id.startsWith("org.multimc.")) - { - continue; - } - order.insert(file.id, file.order); - } - } - // overriden - { - QMap overridenOrder = OneSixVersionBuilder::readOverrideOrders(m_inst); - for (auto id : order.keys()) - { - if (overridenOrder.contains(id)) - { - order[id] = overridenOrder[id]; - } - } - } - return order; -} - bool OneSixModEditDialog::eventFilter(QObject *obj, QEvent *ev) { if (ev->type() != QEvent::KeyPress) diff --git a/gui/dialogs/OneSixModEditDialog.ui b/gui/dialogs/OneSixModEditDialog.ui index eaf8f7fd..b606dcd2 100644 --- a/gui/dialogs/OneSixModEditDialog.ui +++ b/gui/dialogs/OneSixModEditDialog.ui @@ -48,24 +48,6 @@ - - - - - - Main Class: - - - - - - - false - - - - - @@ -108,13 +90,6 @@ - - - - Reset order - - - @@ -124,6 +99,12 @@ + + false + + + This isn't implemented yet. + Move up @@ -131,11 +112,30 @@ + + false + + + This isn't implemented yet. + Move down + + + + false + + + This isn't implemented yet. + + + Reset order + + + -- cgit v1.2.3 From b2c803a378695026f12aabc3729eb2139bee1b2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Sun, 9 Mar 2014 23:42:25 +0100 Subject: Improve reporting of version file errors.x --- gui/dialogs/OneSixModEditDialog.cpp | 60 +++++++++++++++++++++++++++---------- gui/dialogs/OneSixModEditDialog.h | 4 +-- 2 files changed, 46 insertions(+), 18 deletions(-) (limited to 'gui') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index c211d3e1..78585a05 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -42,8 +42,7 @@ #include "logic/LiteLoaderInstaller.h" #include "logic/OneSixVersionBuilder.h" -template -QMap invert(const QMap &in) +template QMap invert(const QMap &in) { QMap out; for (auto it = in.begin(); it != in.end(); ++it) @@ -96,7 +95,8 @@ OneSixModEditDialog::OneSixModEditDialog(OneSixInstance *inst, QWidget *parent) m_resourcepacks->startWatching(); } - connect(m_inst, &OneSixInstance::versionReloaded, this, &OneSixModEditDialog::updateVersionControls); + connect(m_inst, &OneSixInstance::versionReloaded, this, + &OneSixModEditDialog::updateVersionControls); } OneSixModEditDialog::~OneSixModEditDialog() @@ -120,9 +120,30 @@ void OneSixModEditDialog::disableVersionControls() ui->removeLibraryBtn->setEnabled(false); } +bool OneSixModEditDialog::reloadInstanceVersion() +{ + try + { + m_inst->reloadVersion(); + return true; + } + catch (MMCError &e) + { + QMessageBox::critical(this, tr("Error"), e.cause()); + return false; + } + catch (...) + { + QMessageBox::critical( + this, tr("Error"), + tr("Failed to load the version description file for reasons unknown.")); + return false; + } +} + void OneSixModEditDialog::on_reloadLibrariesBtn_clicked() { - m_inst->reloadVersion(); + reloadInstanceVersion(); } void OneSixModEditDialog::on_removeLibraryBtn_clicked() @@ -136,7 +157,7 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() } else { - m_inst->reloadVersion(); + reloadInstanceVersion(); } } } @@ -163,18 +184,20 @@ void OneSixModEditDialog::on_forgeBtn_clicked() // FIXME: model::isCustom(); if (QDir(m_inst->instanceRoot()).exists("custom.json")) { - if (QMessageBox::question(this, tr("Revert?"), tr("This action will remove your custom.json. Continue?")) != QMessageBox::Yes) + if (QMessageBox::question(this, tr("Revert?"), + tr("This action will remove your custom.json. Continue?")) != + QMessageBox::Yes) { return; } // FIXME: model::revertToBase(); QDir(m_inst->instanceRoot()).remove("custom.json"); - m_inst->reloadVersion(); + reloadInstanceVersion(); } VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); vselect.setFilter(1, m_inst->currentVersionId()); vselect.setEmptyString(tr("No Forge versions are currently available for Minecraft ") + - m_inst->currentVersionId()); + m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { ForgeVersionPtr forgeVersion = @@ -214,28 +237,32 @@ void OneSixModEditDialog::on_forgeBtn_clicked() } } } - m_inst->reloadVersion(); + reloadInstanceVersion(); } void OneSixModEditDialog::on_liteloaderBtn_clicked() { + // FIXME: model... if (QDir(m_inst->instanceRoot()).exists("custom.json")) { - if (QMessageBox::question(this, tr("Revert?"), tr("This action will remove your custom.json. Continue?")) != QMessageBox::Yes) + if (QMessageBox::question(this, tr("Revert?"), + tr("This action will remove your custom.json. Continue?")) != + QMessageBox::Yes) { return; } QDir(m_inst->instanceRoot()).remove("custom.json"); - m_inst->reloadVersion(); + reloadInstanceVersion(); } - VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"), this); + VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"), + this); vselect.setFilter(1, m_inst->currentVersionId()); vselect.setEmptyString(tr("No LiteLoader versions are currently available for Minecraft ") + - m_inst->currentVersionId()); + m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { LiteLoaderVersionPtr liteloaderVersion = - std::dynamic_pointer_cast(vselect.selectedVersion()); + std::dynamic_pointer_cast(vselect.selectedVersion()); if (!liteloaderVersion) return; LiteLoaderInstaller liteloader(liteloaderVersion); @@ -247,7 +274,7 @@ void OneSixModEditDialog::on_liteloaderBtn_clicked() } else { - m_inst->reloadVersion(); + reloadInstanceVersion(); } } } @@ -369,7 +396,8 @@ void OneSixModEditDialog::loaderCurrent(QModelIndex current, QModelIndex previou ui->frame->updateWithMod(m); } -void OneSixModEditDialog::versionCurrent(const QModelIndex ¤t, const QModelIndex &previous) +void OneSixModEditDialog::versionCurrent(const QModelIndex ¤t, + const QModelIndex &previous) { if (!current.isValid()) { diff --git a/gui/dialogs/OneSixModEditDialog.h b/gui/dialogs/OneSixModEditDialog.h index 1f3f9f67..e106c6fe 100644 --- a/gui/dialogs/OneSixModEditDialog.h +++ b/gui/dialogs/OneSixModEditDialog.h @@ -57,6 +57,8 @@ protected: bool eventFilter(QObject *obj, QEvent *ev); bool loaderListFilter(QKeyEvent *ev); bool resourcePackListFilter(QKeyEvent *ev); + /// FIXME: this shouldn't be necessary! + bool reloadInstanceVersion(); private: Ui::OneSixModEditDialog *ui; @@ -66,8 +68,6 @@ private: EnabledItemFilter *main_model; OneSixInstance *m_inst; - QMap getExistingOrder() const; - public slots: void loaderCurrent(QModelIndex current, QModelIndex previous); -- cgit v1.2.3