From e8e7f70dedd8808d44cc3156ec2687c83153f5e9 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Sat, 9 Mar 2019 21:41:20 -0600 Subject: Allow selecting overwrite to trigger mod conflict highlights --- src/modflagicondelegate.cpp | 4 ++++ src/modinfo.cpp | 7 ++++--- src/modinfo.h | 3 ++- src/modinfooverwrite.cpp | 5 ++++- src/modinfooverwrite.h | 6 +++--- src/modinfowithconflictinfo.cpp | 20 ++++++++++---------- 6 files changed, 27 insertions(+), 18 deletions(-) (limited to 'src') 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 ModFlagIconDelegate::getIcons(const QModelIndex &index) const { ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt()); std::vector 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 #include -ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer) : ModInfo(pluginContainer) +ModInfoOverwrite::ModInfoOverwrite(PluginContainer *pluginContainer, MOShared::DirectoryEntry **directoryStructure) + : ModInfoWithConflictInfo(pluginContainer, directoryStructure) { testValid(); } @@ -31,6 +32,8 @@ std::vector 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 -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 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; } -- cgit v1.3.1