From 00f4e1799fb34e070773f3ec170be2dd86ec9c0d Mon Sep 17 00:00:00 2001 From: Tannin Date: Sun, 23 Feb 2014 17:18:20 +0100 Subject: - slightly overworked display of icon delegates - updated installer --- src/modflagicondelegate.cpp | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) (limited to 'src/modflagicondelegate.cpp') diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp index db69eb52..914503a1 100644 --- a/src/modflagicondelegate.cpp +++ b/src/modflagicondelegate.cpp @@ -2,6 +2,11 @@ #include +ModInfo::EFlag ModFlagIconDelegate::m_ConflictFlags[4] = { ModInfo::FLAG_CONFLICT_MIXED + , ModInfo::FLAG_CONFLICT_OVERWRITE + , ModInfo::FLAG_CONFLICT_OVERWRITTEN + , ModInfo::FLAG_CONFLICT_REDUNDANT }; + ModFlagIconDelegate::ModFlagIconDelegate(QObject *parent) : IconDelegate(parent) { @@ -15,6 +20,16 @@ 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 + auto iter = std::find_first_of(flags.begin(), flags.end(), m_ConflictFlags, m_ConflictFlags + 4); + if (iter != flags.end()) { + result.append(getFlagIcon(*iter)); + flags.erase(iter); + } else { + result.append(QIcon()); + } + } + for (auto iter = flags.begin(); iter != flags.end(); ++iter) { result.append(getFlagIcon(*iter)); } @@ -42,7 +57,12 @@ size_t ModFlagIconDelegate::getNumIcons(const QModelIndex &index) const unsigned int modIdx = index.data(Qt::UserRole + 1).toInt(); if (modIdx < ModInfo::getNumMods()) { ModInfo::Ptr info = ModInfo::getByIndex(modIdx); - return info->getFlags().size(); + std::vector flags = info->getFlags(); + int count = flags.size(); + if (std::find_first_of(flags.begin(), flags.end(), m_ConflictFlags, m_ConflictFlags + 4) == flags.end()) { + ++count; + } + return count; } else { return 0; } -- cgit v1.3.1