summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLostDragonist <lost.dragonist@gmail.com>2019-03-09 21:41:20 -0600
committerLostDragonist <lost.dragonist@gmail.com>2019-03-09 21:41:20 -0600
commite8e7f70dedd8808d44cc3156ec2687c83153f5e9 (patch)
treefc4a4c71cc8710eb793eb3cb3a941a4fa90cfa1e /src
parentabfbf684699d8f14a058ed4648e231024fe3c077 (diff)
Allow selecting overwrite to trigger mod conflict highlights
Diffstat (limited to 'src')
-rw-r--r--src/modflagicondelegate.cpp4
-rw-r--r--src/modinfo.cpp7
-rw-r--r--src/modinfo.h3
-rw-r--r--src/modinfooverwrite.cpp5
-rw-r--r--src/modinfooverwrite.h6
-rw-r--r--src/modinfowithconflictinfo.cpp20
6 files changed, 27 insertions, 18 deletions
diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp
index fbd951eb..c3142962 100644
--- a/src/modflagicondelegate.cpp
+++ b/src/modflagicondelegate.cpp
@@ -36,6 +36,10 @@ QList<QString> ModFlagIconDelegate::getIcons(const QModelIndex &index) const {
ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt());
std::vector<ModInfo::EFlag> flags = info->getFlags();
+ // Don't do flags for overwrite
+ if (std::find(flags.begin(), flags.end(),ModInfo::FLAG_OVERWRITE) != flags.end())
+ return result;
+
// insert conflict icons to provide nicer alignment
{ // insert loose file conflicts first
auto iter = std::find_first_of(flags.begin(), flags.end(),
diff --git a/src/modinfo.cpp b/src/modinfo.cpp
index 661681d8..13b40aba 100644
--- a/src/modinfo.cpp
+++ b/src/modinfo.cpp
@@ -114,11 +114,12 @@ QString ModInfo::getContentTypeName(int contentType)
}
}
-void ModInfo::createFromOverwrite(PluginContainer *pluginContainer)
+void ModInfo::createFromOverwrite(PluginContainer *pluginContainer,
+ MOShared::DirectoryEntry **directoryStructure)
{
QMutexLocker locker(&s_Mutex);
- s_Collection.push_back(ModInfo::Ptr(new ModInfoOverwrite(pluginContainer)));
+ s_Collection.push_back(ModInfo::Ptr(new ModInfoOverwrite(pluginContainer, directoryStructure)));
}
unsigned int ModInfo::getNumMods()
@@ -255,7 +256,7 @@ void ModInfo::updateFromDisc(const QString &modDirectory,
}
}
- createFromOverwrite(pluginContainer);
+ createFromOverwrite(pluginContainer, directoryStructure);
std::sort(s_Collection.begin(), s_Collection.end(), ModInfo::ByName);
diff --git a/src/modinfo.h b/src/modinfo.h
index 365dfe50..81f59b61 100644
--- a/src/modinfo.h
+++ b/src/modinfo.h
@@ -750,7 +750,8 @@ protected:
private:
- static void createFromOverwrite(PluginContainer *pluginContainer);
+ static void createFromOverwrite(PluginContainer *pluginContainer,
+ MOShared::DirectoryEntry **directoryStructure);
protected:
diff --git a/src/modinfooverwrite.cpp b/src/modinfooverwrite.cpp
index 0e428483..37c8c650 100644
--- a/src/modinfooverwrite.cpp
+++ b/src/modinfooverwrite.cpp
@@ -6,7 +6,8 @@
#include <QApplication>
#include <QDirIterator>
-ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer) : ModInfo(pluginContainer)
+ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure)
+ : ModInfoWithConflictInfo(pluginContainer, directoryStructure)
{
testValid();
}
@@ -31,6 +32,8 @@ std::vector<ModInfo::EFlag> ModInfoOverwrite::getFlags() const
result.push_back(FLAG_OVERWRITE);
if (m_PluginSelected)
result.push_back(FLAG_PLUGIN_SELECTED);
+ for (auto flag : ModInfoWithConflictInfo::getFlags())
+ result.push_back(flag);
return result;
}
diff --git a/src/modinfooverwrite.h b/src/modinfooverwrite.h
index ff0d8cd4..c5f58c2e 100644
--- a/src/modinfooverwrite.h
+++ b/src/modinfooverwrite.h
@@ -1,11 +1,11 @@
#ifndef MODINFOOVERWRITE_H
#define MODINFOOVERWRITE_H
-#include "modinfo.h"
+#include "modinfowithconflictinfo.h"
#include <QDateTime>
-class ModInfoOverwrite : public ModInfo
+class ModInfoOverwrite : public ModInfoWithConflictInfo
{
Q_OBJECT
@@ -67,7 +67,7 @@ public:
private:
- ModInfoOverwrite(PluginContainer *pluginContainer);
+ ModInfoOverwrite(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure );
};
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp
index 744f323c..7a2b0071 100644
--- a/src/modinfowithconflictinfo.cpp
+++ b/src/modinfowithconflictinfo.cpp
@@ -46,16 +46,16 @@ std::vector<ModInfo::EFlag> ModInfoWithConflictInfo::getFlags() const
default: { /* NOP */ }
}
switch (isArchiveConflicted()) {
- case CONFLICT_MIXED: {
- result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED);
- } break;
- case CONFLICT_OVERWRITE: {
- result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE);
- } break;
- case CONFLICT_OVERWRITTEN: {
- result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN);
- } break;
- default: { /* NOP */ }
+ case CONFLICT_MIXED: {
+ result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED);
+ } break;
+ case CONFLICT_OVERWRITE: {
+ result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE);
+ } break;
+ case CONFLICT_OVERWRITTEN: {
+ result.push_back(ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN);
+ } break;
+ default: { /* NOP */ }
}
return result;
}