summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Mrázek <peterix@gmail.com>2019-08-04 21:13:50 +0200
committerPetr Mrázek <peterix@gmail.com>2019-08-04 21:13:50 +0200
commit4ed67413ac33f0814b76ffc76ad8c1dae734febf (patch)
tree2ef6033e7835a10c740d5492b474bd6979d7c864
parentd31184f9a4d96644e8cef249045d511b1960096f (diff)
downloadMultiMC-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.cpp20
-rw-r--r--api/logic/minecraft/mod/ModFolderModel.h9
-rw-r--r--application/pages/instance/ModFolderPage.cpp9
-rw-r--r--application/pages/instance/ModFolderPage.h1
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();