From 98683eca6f4b2668de875c14986657764e1123c7 Mon Sep 17 00:00:00 2001 From: LostDragonist Date: Thu, 7 Feb 2019 21:39:59 -0600 Subject: Enable compact mode for mod list flags when column is smaller than 6 icons --- src/mainwindow.cpp | 4 +++- src/modflagicondelegate.cpp | 22 +++++++++++++++------- src/modflagicondelegate.h | 13 ++++++++++++- 3 files changed, 30 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index e4fe8769..fe39e023 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -283,7 +283,9 @@ MainWindow::MainWindow(QSettings &initSettings GenericIconDelegate *contentDelegate = new GenericIconDelegate(ui->modList, Qt::UserRole + 3, ModList::COL_CONTENT, 150); connect(ui->modList->header(), SIGNAL(sectionResized(int,int,int)), contentDelegate, SLOT(columnResized(int,int,int))); ui->modList->sortByColumn(ModList::COL_PRIORITY, Qt::AscendingOrder); - ui->modList->setItemDelegateForColumn(ModList::COL_FLAGS, new ModFlagIconDelegate(ui->modList)); + ModFlagIconDelegate *flagDelegate = new ModFlagIconDelegate(ui->modList, ModList::COL_FLAGS, 120); + connect(ui->modList->header(), SIGNAL(sectionResized(int,int,int)), flagDelegate, SLOT(columnResized(int,int,int))); + ui->modList->setItemDelegateForColumn(ModList::COL_FLAGS, flagDelegate); ui->modList->setItemDelegateForColumn(ModList::COL_CONTENT, contentDelegate); ui->modList->header()->installEventFilter(m_OrganizerCore.modList()); connect(ui->modList->header(), SIGNAL(sectionResized(int, int, int)), this, SLOT(modListSectionResized(int, int, int))); diff --git a/src/modflagicondelegate.cpp b/src/modflagicondelegate.cpp index a8e9d58f..343c6ee3 100644 --- a/src/modflagicondelegate.cpp +++ b/src/modflagicondelegate.cpp @@ -14,11 +14,21 @@ ModInfo::EFlag ModFlagIconDelegate::m_ArchiveConflictFlags[3] = { ModInfo::FLAG_ , ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITE , ModInfo::FLAG_ARCHIVE_CONFLICT_OVERWRITTEN }; -ModFlagIconDelegate::ModFlagIconDelegate(QObject *parent) +ModFlagIconDelegate::ModFlagIconDelegate(QObject *parent, int logicalIndex, int compactSize) : IconDelegate(parent) + , m_LogicalIndex(logicalIndex) + , m_CompactSize(compactSize) + , m_Compact(false) { } +void ModFlagIconDelegate::columnResized(int logicalIndex, int, int newSize) +{ + if (logicalIndex == m_LogicalIndex) { + m_Compact = newSize < m_CompactSize; + } +} + QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { QList result; QVariant modid = index.data(Qt::UserRole + 1); @@ -33,7 +43,7 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { if (iter != flags.end()) { result.append(getFlagIcon(*iter)); flags.erase(iter); - } else { + } else if (!m_Compact) { result.append(QString()); } } @@ -44,8 +54,7 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { if (iter != flags.end()) { result.append(getFlagIcon(*iter)); flags.erase(iter); - } - else { + } else if (!m_Compact) { result.append(QString()); } } @@ -56,8 +65,7 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { if (iter != flags.end()) { result.append(getFlagIcon(*iter)); flags.erase(iter); - } - else { + } else if (!m_Compact) { result.append(QString()); } } @@ -68,7 +76,7 @@ QList ModFlagIconDelegate::getIcons(const QModelIndex &index) const { if (iter != flags.end()) { result.append(getFlagIcon(*iter)); flags.erase(iter); - } else { + } else if (!m_Compact) { result.append(QString()); } } diff --git a/src/modflagicondelegate.h b/src/modflagicondelegate.h index 0f257c7d..eb6a76ab 100644 --- a/src/modflagicondelegate.h +++ b/src/modflagicondelegate.h @@ -5,18 +5,29 @@ class ModFlagIconDelegate : public IconDelegate { +Q_OBJECT + public: - explicit ModFlagIconDelegate(QObject *parent = 0); + explicit ModFlagIconDelegate(QObject *parent = 0, int logicalIndex = -1, int compactSize = 120); virtual QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const; + +public slots: + void columnResized(int logicalIndex, int oldSize, int newSize); + private: virtual QList getIcons(const QModelIndex &index) const; virtual size_t getNumIcons(const QModelIndex &index) const; QString getFlagIcon(ModInfo::EFlag flag) const; + private: static ModInfo::EFlag m_ConflictFlags[4]; static ModInfo::EFlag m_ArchiveLooseConflictFlags[2]; static ModInfo::EFlag m_ArchiveConflictFlags[3]; + + int m_LogicalIndex; + int m_CompactSize; + bool m_Compact; }; #endif // MODFLAGICONDELEGATE_H -- cgit v1.3.1