diff options
author | Petr Mrázek <peterix@gmail.com> | 2019-08-04 21:13:50 +0200 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2019-08-04 21:13:50 +0200 |
commit | 4ed67413ac33f0814b76ffc76ad8c1dae734febf (patch) | |
tree | 2ef6033e7835a10c740d5492b474bd6979d7c864 | |
parent | d31184f9a4d96644e8cef249045d511b1960096f (diff) | |
download | MultiMC-4ed67413ac33f0814b76ffc76ad8c1dae734febf.tar MultiMC-4ed67413ac33f0814b76ffc76ad8c1dae734febf.tar.gz MultiMC-4ed67413ac33f0814b76ffc76ad8c1dae734febf.tar.lz MultiMC-4ed67413ac33f0814b76ffc76ad8c1dae734febf.tar.xz MultiMC-4ed67413ac33f0814b76ffc76ad8c1dae734febf.zip |
GH-988 add ability to toggle mods with keyboard
-rw-r--r-- | api/logic/minecraft/mod/ModFolderModel.cpp | 20 | ||||
-rw-r--r-- | api/logic/minecraft/mod/ModFolderModel.h | 9 | ||||
-rw-r--r-- | application/pages/instance/ModFolderPage.cpp | 9 | ||||
-rw-r--r-- | application/pages/instance/ModFolderPage.h | 1 |
4 files changed, 32 insertions, 7 deletions
diff --git a/api/logic/minecraft/mod/ModFolderModel.cpp b/api/logic/minecraft/mod/ModFolderModel.cpp index c9a69995..14907dea 100644 --- a/api/logic/minecraft/mod/ModFolderModel.cpp +++ b/api/logic/minecraft/mod/ModFolderModel.cpp @@ -312,15 +312,29 @@ bool ModFolderModel::enableMods(const QModelIndexList& indexes, bool enable) if(indexes.isEmpty()) return true; - for (auto i: indexes) + for (auto index: indexes) { - Mod &m = mods[i.row()]; + Mod &m = mods[index.row()]; m.enable(enable); - emit dataChanged(i, i); + emit dataChanged(index, index); } return true; } +void ModFolderModel::toggleEnabled(const QModelIndex& index) +{ + if(interaction_disabled) { + return; + } + if(!index.isValid()) { + return; + } + + Mod &m = mods[index.row()]; + m.enable(!m.enabled()); + emit dataChanged(index, index); +} + bool ModFolderModel::deleteMods(const QModelIndexList& indexes) { if(interaction_disabled) { diff --git a/api/logic/minecraft/mod/ModFolderModel.h b/api/logic/minecraft/mod/ModFolderModel.h index ff56be4a..624345be 100644 --- a/api/logic/minecraft/mod/ModFolderModel.h +++ b/api/logic/minecraft/mod/ModFolderModel.h @@ -82,7 +82,7 @@ public: } /// Reloads the mod list and returns true if the list changed. - virtual bool update(); + bool update(); /** * Adds the given mod to the list at the given index - if the list supports custom ordering @@ -90,15 +90,16 @@ public: bool installMod(const QString& filename); /// Deletes all the selected mods - virtual bool deleteMods(const QModelIndexList &indexes); + bool deleteMods(const QModelIndexList &indexes); /// Enable or disable listed mods - virtual bool enableMods(const QModelIndexList &indexes, bool enable = true); + bool enableMods(const QModelIndexList &indexes, bool enable = true); + void toggleEnabled(const QModelIndex &index); void startWatching(); void stopWatching(); - virtual bool isValid(); + bool isValid(); QDir dir() { diff --git a/application/pages/instance/ModFolderPage.cpp b/application/pages/instance/ModFolderPage.cpp index 97002824..9e987e95 100644 --- a/application/pages/instance/ModFolderPage.cpp +++ b/application/pages/instance/ModFolderPage.cpp @@ -139,6 +139,7 @@ ModFolderPage::ModFolderPage( ui->modTreeView->sortByColumn(1, Qt::AscendingOrder); ui->modTreeView->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->modTreeView, &ModListView::customContextMenuRequested, this, &ModFolderPage::ShowContextMenu); + connect(ui->modTreeView, &ModListView::activated, this, &ModFolderPage::modItemActivated); auto smodel = ui->modTreeView->selectionModel(); connect(smodel, &QItemSelectionModel::currentChanged, this, &ModFolderPage::modCurrent); @@ -146,6 +147,14 @@ ModFolderPage::ModFolderPage( connect(m_inst, &BaseInstance::runningStatusChanged, this, &ModFolderPage::on_RunningState_changed); } +void ModFolderPage::modItemActivated(const QModelIndex& index) +{ + auto modsModelIndex = m_filterModel->mapToSource(index); + if(modsModelIndex.isValid()) { + m_mods->toggleEnabled(modsModelIndex); + } +} + QMenu * ModFolderPage::createPopupMenu() { QMenu* filteredMenu = QMainWindow::createPopupMenu(); diff --git a/application/pages/instance/ModFolderPage.h b/application/pages/instance/ModFolderPage.h index a99ab161..d49d25c3 100644 --- a/application/pages/instance/ModFolderPage.h +++ b/application/pages/instance/ModFolderPage.h @@ -94,6 +94,7 @@ slots: private slots: + void modItemActivated(const QModelIndex &index); void on_filterTextChanged(const QString & newContents); void on_RunningState_changed(bool running); void on_actionAdd_triggered(); |