From e5b4dee1c05d0d6ebc0d7b2dd802b93cb8765e63 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer <jan@dalheimer.de> Date: Fri, 14 Mar 2014 19:51:56 +0100 Subject: Move version stuff to the model and reimplement reordering --- gui/dialogs/OneSixModEditDialog.cpp | 60 ++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 20 deletions(-) (limited to 'gui/dialogs/OneSixModEditDialog.cpp') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index 78585a05..b5a0d5aa 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -42,16 +42,6 @@ #include "logic/LiteLoaderInstaller.h" #include "logic/OneSixVersionBuilder.h" -template <typename A, typename B> QMap<A, B> invert(const QMap<B, A> &in) -{ - QMap<A, B> out; - for (auto it = in.begin(); it != in.end(); ++it) - { - out.insert(it.value(), it.key()); - } - return out; -} - OneSixModEditDialog::OneSixModEditDialog(OneSixInstance *inst, QWidget *parent) : QDialog(parent), ui(new Ui::OneSixModEditDialog), m_inst(inst) { @@ -164,25 +154,57 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() void OneSixModEditDialog::on_resetLibraryOrderBtn_clicked() { - // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). + try + { + m_version->resetOrder(); + } + catch (MMCError &e) + { + QMessageBox::critical(this, tr("Error"), e.cause()); + } } void OneSixModEditDialog::on_moveLibraryUpBtn_clicked() { - // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). + if (ui->libraryTreeView->selectionModel()->selectedRows().isEmpty()) + { + return; + } + try + { + const int row = ui->libraryTreeView->selectionModel()->selectedRows().first().row(); + const int newRow = 0;m_version->move(row, VersionFinal::MoveUp); + //ui->libraryTreeView->selectionModel()->setCurrentIndex(m_version->index(newRow), QItemSelectionModel::ClearAndSelect); + } + catch (MMCError &e) + { + QMessageBox::critical(this, tr("Error"), e.cause()); + } } void OneSixModEditDialog::on_moveLibraryDownBtn_clicked() { - // FIXME: IMPLEMENT LOGIC IN MODEL. SEE LEGACY DIALOG FOR EXAMPLE(S). + if (ui->libraryTreeView->selectionModel()->selectedRows().isEmpty()) + { + return; + } + try + { + const int row = ui->libraryTreeView->selectionModel()->selectedRows().first().row(); + const int newRow = 0;m_version->move(row, VersionFinal::MoveDown); + //ui->libraryTreeView->selectionModel()->setCurrentIndex(m_version->index(newRow), QItemSelectionModel::ClearAndSelect); + } + catch (MMCError &e) + { + QMessageBox::critical(this, tr("Error"), e.cause()); + } } 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 (m_version->isCustom()) { if (QMessageBox::question(this, tr("Revert?"), tr("This action will remove your custom.json. Continue?")) != @@ -190,8 +212,7 @@ void OneSixModEditDialog::on_forgeBtn_clicked() { return; } - // FIXME: model::revertToBase(); - QDir(m_inst->instanceRoot()).remove("custom.json"); + m_version->revertToBase(); reloadInstanceVersion(); } VersionSelectDialog vselect(MMC->forgelist().get(), tr("Select Forge version"), this); @@ -242,8 +263,7 @@ void OneSixModEditDialog::on_forgeBtn_clicked() void OneSixModEditDialog::on_liteloaderBtn_clicked() { - // FIXME: model... - if (QDir(m_inst->instanceRoot()).exists("custom.json")) + if (m_version->isCustom()) { if (QMessageBox::question(this, tr("Revert?"), tr("This action will remove your custom.json. Continue?")) != @@ -251,7 +271,7 @@ void OneSixModEditDialog::on_liteloaderBtn_clicked() { return; } - QDir(m_inst->instanceRoot()).remove("custom.json"); + m_version->revertToBase(); reloadInstanceVersion(); } VersionSelectDialog vselect(MMC->liteloaderlist().get(), tr("Select LiteLoader version"), -- cgit v1.2.3 From e95619fa67239b709522a66b8bb7403bb7b84098 Mon Sep 17 00:00:00 2001 From: Jan Dalheimer <jan@dalheimer.de> Date: Fri, 14 Mar 2014 20:48:57 +0100 Subject: Pull in BaseInstaller related changes from quickmod --- gui/dialogs/OneSixModEditDialog.cpp | 56 +++---------------------------------- 1 file changed, 4 insertions(+), 52 deletions(-) (limited to 'gui/dialogs/OneSixModEditDialog.cpp') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index b5a0d5aa..7dac68e5 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -221,44 +221,9 @@ void OneSixModEditDialog::on_forgeBtn_clicked() m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { - ForgeVersionPtr forgeVersion = - std::dynamic_pointer_cast<ForgeVersion>(vselect.selectedVersion()); - if (!forgeVersion) - return; - auto entry = MMC->metacache()->resolveEntry("minecraftforge", forgeVersion->filename); - if (entry->stale) - { - NetJob *fjob = new NetJob("Forge download"); - fjob->addNetAction(CacheDownload::make(forgeVersion->installer_url, entry)); - ProgressDialog dlg(this); - dlg.exec(fjob); - if (dlg.result() == QDialog::Accepted) - { - // install - QString forgePath = entry->getFullPath(); - ForgeInstaller forge(forgePath, forgeVersion->universal_url); - if (!forge.add(m_inst)) - { - QLOG_ERROR() << "Failure installing forge"; - } - } - else - { - // failed to download forge :/ - } - } - else - { - // install - QString forgePath = entry->getFullPath(); - ForgeInstaller forge(forgePath, forgeVersion->universal_url); - if (!forge.add(m_inst)) - { - QLOG_ERROR() << "Failure installing forge"; - } - } + ProgressDialog dialog(this); + dialog.exec(ForgeInstaller().createInstallTask(m_inst, vselect.selectedVersion(), this)); } - reloadInstanceVersion(); } void OneSixModEditDialog::on_liteloaderBtn_clicked() @@ -281,21 +246,8 @@ void OneSixModEditDialog::on_liteloaderBtn_clicked() m_inst->currentVersionId()); if (vselect.exec() && vselect.selectedVersion()) { - LiteLoaderVersionPtr liteloaderVersion = - std::dynamic_pointer_cast<LiteLoaderVersion>(vselect.selectedVersion()); - if (!liteloaderVersion) - return; - LiteLoaderInstaller liteloader(liteloaderVersion); - if (!liteloader.add(m_inst)) - { - QMessageBox::critical(this, tr("LiteLoader"), - tr("For reasons unknown, the LiteLoader installation failed. " - "Check your MultiMC log files for details.")); - } - else - { - reloadInstanceVersion(); - } + ProgressDialog dialog(this); + dialog.exec(LiteLoaderInstaller().createInstallTask(m_inst, vselect.selectedVersion(), this)); } } -- cgit v1.2.3 From 42a85def60036a5788a9dd862d0c6f835b62337c Mon Sep 17 00:00:00 2001 From: Jan Dalheimer <jan@dalheimer.de> Date: Fri, 14 Mar 2014 21:18:17 +0100 Subject: Get rid of one reloadInstanceVersion --- gui/dialogs/OneSixModEditDialog.cpp | 4 ---- 1 file changed, 4 deletions(-) (limited to 'gui/dialogs/OneSixModEditDialog.cpp') diff --git a/gui/dialogs/OneSixModEditDialog.cpp b/gui/dialogs/OneSixModEditDialog.cpp index 7dac68e5..2d459001 100644 --- a/gui/dialogs/OneSixModEditDialog.cpp +++ b/gui/dialogs/OneSixModEditDialog.cpp @@ -145,10 +145,6 @@ void OneSixModEditDialog::on_removeLibraryBtn_clicked() { QMessageBox::critical(this, tr("Error"), tr("Couldn't remove file")); } - else - { - reloadInstanceVersion(); - } } } -- cgit v1.2.3