From b76d4573cdaa41a3493596571dbba452ab7a5b2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Mr=C3=A1zek?= Date: Thu, 4 Aug 2016 23:16:03 +0200 Subject: GH-589 GH-842 GH-901 GH-1117 allow mass-enabling/disabling of mods --- api/logic/minecraft/ModList.cpp | 15 +++++++++++++++ api/logic/minecraft/ModList.h | 3 +++ application/pages/ModFolderPage.cpp | 12 ++++++++++++ application/pages/ModFolderPage.h | 2 ++ application/pages/ModFolderPage.ui | 18 +++++++++++++++++- 5 files changed, 49 insertions(+), 1 deletion(-) diff --git a/api/logic/minecraft/ModList.cpp b/api/logic/minecraft/ModList.cpp index b9c7d9ba..d1ad75ab 100644 --- a/api/logic/minecraft/ModList.cpp +++ b/api/logic/minecraft/ModList.cpp @@ -175,6 +175,21 @@ bool ModList::installMod(const QString &filename) return false; } +bool ModList::enableMods(const QModelIndexList& indexes, bool enable) +{ + if(indexes.isEmpty()) + return true; + + for (auto i: indexes) + { + Mod &m = mods[i.row()]; + m.enable(enable); + emit dataChanged(i, i); + } + emit changed(); + return true; +} + bool ModList::deleteMods(const QModelIndexList& indexes) { if(indexes.isEmpty()) diff --git a/api/logic/minecraft/ModList.h b/api/logic/minecraft/ModList.h index 14b102e1..e7267389 100644 --- a/api/logic/minecraft/ModList.h +++ b/api/logic/minecraft/ModList.h @@ -86,6 +86,9 @@ public: /// Deletes all the selected mods virtual bool deleteMods(const QModelIndexList &indexes); + /// Enable or disable listed mods + virtual bool enableMods(const QModelIndexList &indexes, bool enable = true); + void startWatching(); void stopWatching(); diff --git a/application/pages/ModFolderPage.cpp b/application/pages/ModFolderPage.cpp index a1d02ccf..6b657ef6 100644 --- a/application/pages/ModFolderPage.cpp +++ b/application/pages/ModFolderPage.cpp @@ -165,6 +165,18 @@ void ModFolderPage::on_addModBtn_clicked() } } +void ModFolderPage::on_enableModBtn_clicked() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); + m_mods->enableMods(selection.indexes(), true); +} + +void ModFolderPage::on_disableModBtn_clicked() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); + m_mods->enableMods(selection.indexes(), false); +} + void ModFolderPage::on_rmModBtn_clicked() { auto selection = m_filterModel->mapSelectionToSource(ui->modTreeView->selectionModel()->selection()); diff --git a/application/pages/ModFolderPage.h b/application/pages/ModFolderPage.h index 4102a1bb..1c2710f6 100644 --- a/application/pages/ModFolderPage.h +++ b/application/pages/ModFolderPage.h @@ -90,6 +90,8 @@ slots: void on_addModBtn_clicked(); void on_rmModBtn_clicked(); void on_viewModBtn_clicked(); + void on_enableModBtn_clicked(); + void on_disableModBtn_clicked(); }; class CoreModFolderPage : public ModFolderPage diff --git a/application/pages/ModFolderPage.ui b/application/pages/ModFolderPage.ui index 707987c7..4c79e1fa 100644 --- a/application/pages/ModFolderPage.ui +++ b/application/pages/ModFolderPage.ui @@ -55,6 +55,20 @@ + + + + Enable + + + + + + + Disable + + + @@ -143,10 +157,12 @@ tabWidget modTreeView + filterEdit addModBtn rmModBtn + enableModBtn + disableModBtn viewModBtn - filterEdit -- cgit v1.2.3