diff options
-rw-r--r-- | api/logic/minecraft/ModList.cpp | 15 | ||||
-rw-r--r-- | api/logic/minecraft/ModList.h | 3 | ||||
-rw-r--r-- | application/pages/ModFolderPage.cpp | 12 | ||||
-rw-r--r-- | application/pages/ModFolderPage.h | 2 | ||||
-rw-r--r-- | application/pages/ModFolderPage.ui | 18 |
5 files changed, 49 insertions, 1 deletions
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 @@ -56,6 +56,20 @@ </widget> </item> <item> + <widget class="QPushButton" name="enableModBtn"> + <property name="text"> + <string>Enable</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="disableModBtn"> + <property name="text"> + <string>Disable</string> + </property> + </widget> + </item> + <item> <spacer name="verticalSpacer"> <property name="orientation"> <enum>Qt::Vertical</enum> @@ -143,10 +157,12 @@ <tabstops> <tabstop>tabWidget</tabstop> <tabstop>modTreeView</tabstop> + <tabstop>filterEdit</tabstop> <tabstop>addModBtn</tabstop> <tabstop>rmModBtn</tabstop> + <tabstop>enableModBtn</tabstop> + <tabstop>disableModBtn</tabstop> <tabstop>viewModBtn</tabstop> - <tabstop>filterEdit</tabstop> </tabstops> <resources/> <connections/> |