summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/modflagicondelegate.cpp22
-rw-r--r--src/modflagicondelegate.h13
3 files changed, 30 insertions, 9 deletions
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<QString> ModFlagIconDelegate::getIcons(const QModelIndex &index) const {
QList<QString> result;
QVariant modid = index.data(Qt::UserRole + 1);
@@ -33,7 +43,7 @@ QList<QString> 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<QString> 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<QString> 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<QString> 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<QString> 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