summaryrefslogtreecommitdiff
path: root/src/modlistviewactions.cpp
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-01-16 13:22:20 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-16 13:29:36 +0100
commit8fafcce33f1d5633cf1cb1acbb067fd485869bbf (patch)
tree2fdcb2fc60767cf111b0dcc4d55c9e169b35c8ca /src/modlistviewactions.cpp
parent899308b31d541e78a3e4395bf33cd66c5ec4f769 (diff)
Add send to last conflict action for modlist.
Diffstat (limited to 'src/modlistviewactions.cpp')
-rw-r--r--src/modlistviewactions.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/modlistviewactions.cpp b/src/modlistviewactions.cpp
index ed26faa8..ded43284 100644
--- a/src/modlistviewactions.cpp
+++ b/src/modlistviewactions.cpp
@@ -576,10 +576,35 @@ void ModListViewActions::sendModsToSeparator(const QModelIndexList& index) const
}
m_core.modList()->changeModsPriority(index, newPriority);
+ m_view->scrollToAndSelect(index.first());
}
}
}
+void ModListViewActions::sendModsToLastConflict(const QModelIndexList& indexes) const
+{
+ std::set<unsigned int> conflicts;
+
+ for (auto& idx : indexes) {
+ if (!idx.data(ModList::IndexRole).isValid()) {
+ continue;
+ }
+ auto info = ModInfo::getByIndex(idx.data(ModList::IndexRole).toInt());
+ conflicts.insert(info->getModOverwritten().begin(), info->getModOverwritten().end());
+ conflicts.insert(info->getModArchiveOverwritten().begin(), info->getModArchiveOverwritten().end());
+ conflicts.insert(info->getModArchiveLooseOverwritten().begin(), info->getModArchiveLooseOverwritten().end());
+ }
+
+ std::set<int> priorities;
+ std::transform(conflicts.begin(), conflicts.end(), std::inserter(priorities, priorities.end()), [=](auto index) {
+ return m_core.currentProfile()->getModPriority(index);
+ });
+
+ if (!priorities.empty()) {
+ m_core.modList()->changeModsPriority(indexes, *priorities.rbegin());
+ }
+}
+
void ModListViewActions::renameMod(const QModelIndex& index) const
{
try {