From 75a663941d5a58b9676e2eb99a2a288abc19a359 Mon Sep 17 00:00:00 2001 From: Silarn Date: Thu, 9 Aug 2018 02:30:06 -0500 Subject: Add flag padding for all conflict icons --- src/modflagicondelegate.cpp | 39 ++++++++++++++++++++++++++++++++++++++- src/modflagicondelegate.h | 2 ++ 2 files changed, 40 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp index 5584dea1..a0a0a86d 100644 --- a/src/modflagicondelegate.cpp +++ b/src/modflagicondelegate.cpp @@ -7,6 +7,14 @@ ModInfo::EFlag ModFlagIconDelegate::m_ConflictFlags[4] = { ModInfo::FLAG_CONFLIC , ModInfo::FLAG_CONFLICT_OVERWRITTEN , ModInfo::FLAG_CONFLICT_REDUNDANT }; +ModInfo::EFlag ModFlagIconDelegate::m_ArchiveLooseConflictFlags[3] = { ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_MIXED + , ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITE + , ModInfo::FLAG_ARCHIVE_LOOSE_CONFLICT_OVERWRITTEN }; + +ModInfo::EFlag ModFlagIconDelegate::m_ArchiveConflictFlags[3] = { ModInfo::FLAG_ARCHIVE_CONFLICT_MIXED + , ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE + , ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN }; + ModFlagIconDelegate::ModFlagIconDelegate(QObject *parent) : IconDelegate(parent) { @@ -19,7 +27,8 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt()); std::vector flags = info->getFlags(); - { // insert conflict icon first to provide nicer alignment + // insert conflict icons to provide nicer alignment + { // insert loose file conflicts first auto iter = std::find_first_of(flags.begin(), flags.end(), m_ConflictFlags, m_ConflictFlags + 4); if (iter != flags.end()) { @@ -30,6 +39,34 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { } } + { // insert archive vs loose conflicts second + int pad = 2; + auto iter = std::find_first_of(flags.begin(), flags.end(), + m_ArchiveLooseConflictFlags, m_ArchiveLooseConflictFlags + 4); + while (iter != flags.end()) { + result.append(getFlagIcon(*iter)); + flags.erase(iter); + pad--; + iter = std::find_first_of(flags.begin(), flags.end(), + m_ArchiveLooseConflictFlags, m_ArchiveLooseConflictFlags + 4); + } + while (pad > 0) { + result.append(QString()); + pad--; + } + } + + { // insert archive conflicts last + auto iter = std::find_first_of(flags.begin(), flags.end(), + m_ArchiveConflictFlags, m_ArchiveConflictFlags + 4); + if (iter != flags.end()) { + result.append(getFlagIcon(*iter)); + flags.erase(iter); + } else { + result.append(QString()); + } + } + for (auto iter = flags.begin(); iter != flags.end(); ++iter) { result.append(getFlagIcon(*iter)); } diff --git a/src/modflagicondelegate.h b/src/modflagicondelegate.h index b31a250b..7324d516 100644 --- a/src/modflagicondelegate.h +++ b/src/modflagicondelegate.h @@ -15,6 +15,8 @@ private: QString getFlagIcon(ModInfo::EFlag flag) const; private: static ModInfo::EFlag m_ConflictFlags[4]; + static ModInfo::EFlag m_ArchiveLooseConflictFlags[3]; + static ModInfo::EFlag m_ArchiveConflictFlags[3]; }; #endif // MODFLAGICONDELEGATE_H -- cgit v1.3.1