From 0a19f0433992be5f9791c8869380d09cd06b66b8 Mon Sep 17 00:00:00 2001 From: Tannin Date: Fri, 22 Mar 2013 18:46:40 +0100 Subject: - support for grouping filters for mod list (incomplete) - offering multiple options for mod names during installation - support for renaming profiles - updated installer plugins - minor bugfixes --- src/icondelegate.cpp | 120 ++++++++++++++++++++++++++------------------------- 1 file changed, 62 insertions(+), 58 deletions(-) (limited to 'src/icondelegate.cpp') diff --git a/src/icondelegate.cpp b/src/icondelegate.cpp index 859311fc..05a5c0c3 100644 --- a/src/icondelegate.cpp +++ b/src/icondelegate.cpp @@ -17,61 +17,65 @@ You should have received a copy of the GNU General Public License along with Mod Organizer. If not, see . */ -#include "icondelegate.h" -#include -#include -#include - - -IconDelegate::IconDelegate(QAbstractProxyModel *proxyModel, QObject *parent) - : QStyledItemDelegate(parent), m_ProxyModel(proxyModel) -{ -} - - -QIcon IconDelegate::getFlagIcon(ModInfo::EFlag flag) const -{ - switch (flag) { - case ModInfo::FLAG_BACKUP: return QIcon(":/MO/gui/emblem_backup"); - case ModInfo::FLAG_INVALID: return QIcon(":/MO/gui/emblem_problem"); - case ModInfo::FLAG_NOTENDORSED: return QIcon(":/MO/gui/emblem_notendorsed"); - case ModInfo::FLAG_NOTES: return QIcon(":/MO/gui/emblem_notes"); - case ModInfo::FLAG_CONFLICT_OVERWRITE: return QIcon(":/MO/gui/emblem_conflict_overwrite"); - case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return QIcon(":/MO/gui/emblem_conflict_overwritten"); - case ModInfo::FLAG_CONFLICT_MIXED: return QIcon(":/MO/gui/emblem_conflict_mixed"); - case ModInfo::FLAG_CONFLICT_REDUNDANT: return QIcon(":MO/gui/emblem_conflict_redundant"); - default: return QIcon(); - } -} - - -void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const -{ - QStyledItemDelegate::paint(painter, option, index); - ModInfo::Ptr info = ModInfo::getByIndex(m_ProxyModel->mapToSource(index).row()); - std::vector flags = info->getFlags(); - - int x = 4; - painter->save(); - painter->translate(option.rect.topLeft()); - for (auto iter = flags.begin(); iter != flags.end(); ++iter) { - QIcon temp = getFlagIcon(*iter); - painter->drawPixmap(x, 2, 16, 16, temp.pixmap(QSize(16, 16))); - x += 20; - } - - painter->restore(); -} - - -QSize IconDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex &modelIndex) const -{ - unsigned int index = m_ProxyModel->mapToSource(modelIndex).row(); - if (index < ModInfo::getNumMods()) { - ModInfo::Ptr info = ModInfo::getByIndex(index); - return QSize(info->getFlags().size() * 20, 20); - } else { - return QSize(1, 20); - } -} - +#include "icondelegate.h" +#include +#include +#include + + +IconDelegate::IconDelegate(QAbstractProxyModel *proxyModel, QObject *parent) + : QStyledItemDelegate(parent), m_ProxyModel(proxyModel) +{ +} + + +QIcon IconDelegate::getFlagIcon(ModInfo::EFlag flag) const +{ + switch (flag) { + case ModInfo::FLAG_BACKUP: return QIcon(":/MO/gui/emblem_backup"); + case ModInfo::FLAG_INVALID: return QIcon(":/MO/gui/emblem_problem"); + case ModInfo::FLAG_NOTENDORSED: return QIcon(":/MO/gui/emblem_notendorsed"); + case ModInfo::FLAG_NOTES: return QIcon(":/MO/gui/emblem_notes"); + case ModInfo::FLAG_CONFLICT_OVERWRITE: return QIcon(":/MO/gui/emblem_conflict_overwrite"); + case ModInfo::FLAG_CONFLICT_OVERWRITTEN: return QIcon(":/MO/gui/emblem_conflict_overwritten"); + case ModInfo::FLAG_CONFLICT_MIXED: return QIcon(":/MO/gui/emblem_conflict_mixed"); + case ModInfo::FLAG_CONFLICT_REDUNDANT: return QIcon(":MO/gui/emblem_conflict_redundant"); + default: return QIcon(); + } +} + + +void IconDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const +{ + QStyledItemDelegate::paint(painter, option, index); + QModelIndex sourceIndex = m_ProxyModel->mapToSource(index); + if (!sourceIndex.isValid()) { + return; + } + ModInfo::Ptr info = ModInfo::getByIndex(sourceIndex.row()); + std::vector flags = info->getFlags(); + + int x = 4; + painter->save(); + painter->translate(option.rect.topLeft()); + for (auto iter = flags.begin(); iter != flags.end(); ++iter) { + QIcon temp = getFlagIcon(*iter); + painter->drawPixmap(x, 2, 16, 16, temp.pixmap(QSize(16, 16))); + x += 20; + } + + painter->restore(); +} + + +QSize IconDelegate::sizeHint(const QStyleOptionViewItem&, const QModelIndex &modelIndex) const +{ + unsigned int index = m_ProxyModel->mapToSource(modelIndex).row(); + if (index < ModInfo::getNumMods()) { + ModInfo::Ptr info = ModInfo::getByIndex(index); + return QSize(info->getFlags().size() * 20, 20); + } else { + return QSize(1, 20); + } +} + -- cgit v1.3.1