summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSilarn <jrim@rimpo.org>2018-08-09 02:30:06 -0500
committerLostDragonist <lost.dragonist@gmail.com>2018-12-12 20:16:40 -0600
commit75a663941d5a58b9676e2eb99a2a288abc19a359 (patch)
tree800075d59a10071e638805b66495ad53c1e55793 /src
parentb05f56c8084fc95590f8a79b9d8a7faf4e0b1844 (diff)
Add flag padding for all conflict icons
Diffstat (limited to 'src')
-rw-r--r--src/modflagicondelegate.cpp39
-rw-r--r--src/modflagicondelegate.h2
2 files changed, 40 insertions, 1 deletions
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<QString> ModFlagIconDelegate::getIcons(const QModelIndex &index) const {
ModInfo::Ptr info = ModInfo::getByIndex(modid.toInt());
std::vector<ModInfo::EFlag> 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<QString> 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