summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 13:03:51 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:40:12 +0100
commitd86dec53822e049954d03ba18473dae08d74040f (patch)
treed8988b81a461175e4a359848b7f5d204fc2beba7 /src
parent65577c71f3e51ae1f029c5fb104782e2a2fdca6d (diff)
Minor refactoring.
Diffstat (limited to 'src')
-rw-r--r--src/mainwindow.cpp10
-rw-r--r--src/mainwindow.h6
-rw-r--r--src/modlist.cpp36
-rw-r--r--src/modlist.h37
-rw-r--r--src/modlistview.cpp19
-rw-r--r--src/modlistview.h2
-rw-r--r--src/organizercore.cpp5
7 files changed, 43 insertions, 72 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 23050467..b979be86 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2226,16 +2226,6 @@ void MainWindow::fileMoved(const QString &filePath, const QString &oldOriginName
}
}
-void MainWindow::modlistChanged(const QModelIndex&, int)
-{
- m_OrganizerCore.currentProfile()->writeModlist();
-}
-
-void MainWindow::modlistChanged(const QModelIndexList&, int)
-{
- m_OrganizerCore.currentProfile()->writeModlist();
-}
-
void MainWindow::modRemoved(const QString &fileName)
{
if (!fileName.isEmpty() && !QFileInfo(fileName).isAbsolute()) {
diff --git a/src/mainwindow.h b/src/mainwindow.h
index 0db339f2..b8474bac 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -378,12 +378,10 @@ private slots:
void updateStyle(const QString &style);
- void modlistChanged(const QModelIndex &index, int role);
- void modlistChanged(const QModelIndexList &indicies, int role);
- void fileMoved(const QString &filePath, const QString &oldOriginName, const QString &newOriginName);
-
void resizeLists(bool pluginListCustom);
+ void fileMoved(const QString& filePath, const QString& oldOriginName, const QString& newOriginName);
+
/**
* @brief allow columns in mod list and plugin list to be resized
*/
diff --git a/src/modlist.cpp b/src/modlist.cpp
index b88c6a01..cae40962 100644
--- a/src/modlist.cpp
+++ b/src/modlist.cpp
@@ -588,7 +588,7 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role)
m_Profile->setModEnabled(modID, enabled);
m_Modified = true;
m_LastCheck.restart();
- emit modlistChanged(index, role);
+ emit modStatesChanged({ index });
emit tutorialModlistUpdate();
}
result = true;
@@ -613,7 +613,7 @@ bool ModList::setData(const QModelIndex &index, const QVariant &value, int role)
}
if (ok) {
m_Profile->setModPriority(modID, newPriority);
- emit modPrioritiesChanged({ modID });
+ emit modPrioritiesChanged({ index });
result = true;
} else {
result = false;
@@ -737,35 +737,34 @@ void ModList::changeModPriority(std::vector<int> sourceIndices, int newPriority)
if (m_Profile == nullptr) return;
emit layoutAboutToBeChanged();
- Profile *profile = m_Profile;
// sort the moving mods by ascending priorities
std::sort(sourceIndices.begin(), sourceIndices.end(),
- [profile](const int &LHS, const int &RHS) {
- return profile->getModPriority(LHS) > profile->getModPriority(RHS);
+ [=](const int &LHS, const int &RHS) {
+ return m_Profile->getModPriority(LHS) > m_Profile->getModPriority(RHS);
});
// move mods that are decreasing in priority
for (std::vector<int>::const_iterator iter = sourceIndices.begin();
iter != sourceIndices.end(); ++iter) {
- int oldPriority = profile->getModPriority(*iter);
+ int oldPriority = m_Profile->getModPriority(*iter);
if (oldPriority > newPriority) {
- profile->setModPriority(*iter, newPriority);
+ m_Profile->setModPriority(*iter, newPriority);
m_ModMoved(ModInfo::getByIndex(*iter)->name(), oldPriority, newPriority);
}
}
// sort the moving mods by descending priorities
std::sort(sourceIndices.begin(), sourceIndices.end(),
- [profile](const int &LHS, const int &RHS) {
- return profile->getModPriority(LHS) < profile->getModPriority(RHS);
+ [=](const int &LHS, const int &RHS) {
+ return m_Profile->getModPriority(LHS) < m_Profile->getModPriority(RHS);
});
// if at least one mod is increasing in priority, the target index is
// that of the row BELOW the dropped location, otherwise it's the one above
for (std::vector<int>::const_iterator iter = sourceIndices.begin();
iter != sourceIndices.end(); ++iter) {
- int oldPriority = profile->getModPriority(*iter);
+ int oldPriority = m_Profile->getModPriority(*iter);
if (oldPriority < newPriority) {
--newPriority;
break;
@@ -775,16 +774,21 @@ void ModList::changeModPriority(std::vector<int> sourceIndices, int newPriority)
// move mods that are increasing in priority
for (std::vector<int>::const_iterator iter = sourceIndices.begin();
iter != sourceIndices.end(); ++iter) {
- int oldPriority = profile->getModPriority(*iter);
+ int oldPriority = m_Profile->getModPriority(*iter);
if (oldPriority < newPriority) {
- profile->setModPriority(*iter, newPriority);
+ m_Profile->setModPriority(*iter, newPriority);
m_ModMoved(ModInfo::getByIndex(*iter)->name(), oldPriority, newPriority);
}
}
emit layoutChanged();
- emit modPrioritiesChanged(sourceIndices);
+ QModelIndexList indices;
+ for (auto& idx : sourceIndices) {
+ indices.append(index(idx, 0, QModelIndex()));
+ }
+
+ emit modPrioritiesChanged(indices);
}
@@ -796,7 +800,7 @@ void ModList::changeModPriority(int sourceIndex, int newPriority)
m_Profile->setModPriority(sourceIndex, newPriority);
emit layoutChanged();
- emit modPrioritiesChanged({ sourceIndex });
+ emit modPrioritiesChanged({ index(sourceIndex, 0) });
}
void ModList::setOverwriteMarkers(const std::set<unsigned int> &overwrite, const std::set<unsigned int> &overwritten)
@@ -1473,7 +1477,7 @@ void ModList::shiftModsPriority(const QModelIndexList& indices, int offset)
notifyChange(index);
}
- emit modPrioritiesChanged(allIndex);
+ emit modPrioritiesChanged(indices);
}
void ModList::changeModsPriority(const QModelIndexList& indices, int priority)
@@ -1513,7 +1517,7 @@ bool ModList::toggleState(const QModelIndexList& indices)
m_Profile->setModsEnabled(modsToEnable, modsToDisable);
- emit modlistChanged(indices, 0);
+ emit modStatesChanged(indices);
emit tutorialModlistUpdate();
m_Modified = true;
diff --git a/src/modlist.h b/src/modlist.h
index e77ceb1f..6d4e0e91 100644
--- a/src/modlist.h
+++ b/src/modlist.h
@@ -270,13 +270,16 @@ public slots:
signals:
- /**
- * @brief Emitted whenever the priority of mods changes
- *
- * The sorting of the list can only be manually changed if the list is sorted by priority
- * in which case the move is intended to change the priority of a mod.
- **/
- void modPrioritiesChanged(std::vector<int> const& index);
+ // emitted when the priority of one or multiple mods have changed
+ //
+ // the sorting of the list can only be manually changed if the list is sorted by priority
+ // in which case the move is intended to change the priority of a mod.
+ //
+ void modPrioritiesChanged(const QModelIndexList& indices);
+
+ // emitted when the state (active/inactive) of one or multiple mods have changed
+ //
+ void modStatesChanged(const QModelIndexList& indices);
/**
* @brief emitted when the model wants a text to be displayed by the UI
@@ -313,26 +316,6 @@ signals:
void modUninstalled(const QString &fileName);
/**
- * @brief emitted whenever a row in the list has changed
- *
- * @param index the index of the changed field
- * @param role role of the field that changed
- * @note this signal must only be emitted if the row really did change.
- * Slots handling this signal therefore do not have to verify that a change has happened
- **/
- void modlistChanged(const QModelIndex &index, int role);
-
- /**
- * @brief emitted whenever multiple row sin the list has changed
- *
- * @param indicies the list of indicies of the changed field
- * @param role role of the field that changed
- * @note this signal must only be emitted if the row really did change.
- * Slots handling this signal therefore do not have to verify that a change has happened
- **/
- void modlistChanged(const QModelIndexList &indicies, int role);
-
- /**
* @brief QML seems to handle overloaded signals poorly - create unique signal for tutorials
*/
void tutorialModlistUpdate();
diff --git a/src/modlistview.cpp b/src/modlistview.cpp
index c334db93..f304a1b0 100644
--- a/src/modlistview.cpp
+++ b/src/modlistview.cpp
@@ -336,11 +336,11 @@ void ModListView::expandItem(const QModelIndex& index)
}
}
-void ModListView::onModPrioritiesChanged(std::vector<int> const& indices)
+void ModListView::onModPrioritiesChanged(const QModelIndexList& indices)
{
// expand separator whose priority has changed and parents
for (auto index : indices) {
- auto idx = indexModelToView(m_core->modList()->index(index, 0));
+ auto idx = indexModelToView(index);
if (hasCollapsibleSeparators() && model()->hasChildren(idx)) {
setExpanded(idx, true);
}
@@ -648,17 +648,16 @@ void ModListView::setup(OrganizerCore& core, CategoryFactory& factory, MainWindo
mwui->currentCategoryLabel, mwui->clearFiltersButton, mwui->filtersSeparators
};
- connect(m_core, &OrganizerCore::modInstalled, this, &ModListView::onModInstalled);
- connect(core.modList(), &ModList::modPrioritiesChanged, this, &ModListView::onModPrioritiesChanged);
- connect(core.modList(), &ModList::clearOverwrite, m_actions, &ModListViewActions::clearOverwrite);
- connect(core.modList(), qOverload<QModelIndex const&, int>(&ModList::modlistChanged), [=]() { updateModCount(); });
- connect(core.modList(), qOverload<QModelIndexList const&, int>(&ModList::modlistChanged), [=]() { updateModCount(); });
+ connect(m_core, &OrganizerCore::modInstalled, [=](auto&& name) { onModInstalled(name); });
+ connect(core.modList(), &ModList::modPrioritiesChanged, [=](auto&& indices) { onModPrioritiesChanged(indices); });
+ connect(core.modList(), &ModList::clearOverwrite, [=] { m_actions->clearOverwrite(); });
+ connect(core.modList(), &ModList::modStatesChanged, [=] { updateModCount(); });
m_byPriorityProxy = new ModListByPriorityProxy(core.currentProfile(), core, this);
m_byPriorityProxy->setSourceModel(core.modList());
- connect(this, &QTreeView::expanded, m_byPriorityProxy, &ModListByPriorityProxy::expanded);
- connect(this, &QTreeView::collapsed, m_byPriorityProxy, &ModListByPriorityProxy::collapsed);
- connect(m_byPriorityProxy, &ModListByPriorityProxy::expandItem, this, &ModListView::expandItem);
+ connect(this, &QTreeView::expanded, [=](auto&& name) { m_byPriorityProxy->expanded(name); });
+ connect(this, &QTreeView::collapsed, [=](auto&& name) { m_byPriorityProxy->collapsed(name); });
+ connect(m_byPriorityProxy, &ModListByPriorityProxy::expandItem, [=](auto&& index) { expandItem(index); });
m_byCategoryProxy = new QtGroupingProxy(core.modList(), QModelIndex(), ModList::COL_CATEGORY,
ModList::GroupingRole, 0, ModList::AggrRole);
diff --git a/src/modlistview.h b/src/modlistview.h
index a2e8505d..92b53960 100644
--- a/src/modlistview.h
+++ b/src/modlistview.h
@@ -165,7 +165,7 @@ protected slots:
private:
- void onModPrioritiesChanged(std::vector<int> const& indices);
+ void onModPrioritiesChanged(const QModelIndexList& indices);
void onModInstalled(const QString& modName);
void onModFilterActive(bool filterActive);
diff --git a/src/organizercore.cpp b/src/organizercore.cpp
index 4113607c..2b1cbdc6 100644
--- a/src/organizercore.cpp
+++ b/src/organizercore.cpp
@@ -118,6 +118,7 @@ OrganizerCore::OrganizerCore(Settings &settings)
connect(&m_ModList, SIGNAL(removeOrigin(QString)), this,
SLOT(removeOrigin(QString)));
+ connect(&m_ModList, &ModList::modStatesChanged, [=] { currentProfile()->writeModlist(); });
connect(NexusInterface::instance().getAccessManager(),
SIGNAL(validateSuccessful(bool)), this, SLOT(loginSuccessful(bool)));
@@ -235,10 +236,6 @@ void OrganizerCore::setUserInterface(IUserInterface* ui)
}
if (w) {
- connect(&m_ModList, SIGNAL(modlistChanged(QModelIndex, int)), w,
- SLOT(modlistChanged(QModelIndex, int)));
- connect(&m_ModList, SIGNAL(modlistChanged(QModelIndexList, int)), w,
- SLOT(modlistChanged(QModelIndexList, int)));
connect(&m_ModList, SIGNAL(showMessage(QString)), w,
SLOT(showMessage(QString)));
connect(&m_ModList, SIGNAL(modRenamed(QString, QString)), w,