summaryrefslogtreecommitdiff
path: root/src/icondelegate.cpp
diff options
context:
space:
mode:
authorTannin <Tannin@Serenity>2013-02-03 12:49:25 +0100
committerTannin <Tannin@Serenity>2013-02-03 12:49:25 +0100
commit981f8b3acf7e76f27c02f4ced80d55b424cc7497 (patch)
tree0f504d99d1e5fe197258febff3c147d0725abda4 /src/icondelegate.cpp
initial commit to mercurial repository.
Corresponds to MO version 0.12.6
Diffstat (limited to 'src/icondelegate.cpp')
-rw-r--r--src/icondelegate.cpp77
1 files changed, 77 insertions, 0 deletions
diff --git a/src/icondelegate.cpp b/src/icondelegate.cpp
new file mode 100644
index 00000000..859311fc
--- /dev/null
+++ b/src/icondelegate.cpp
@@ -0,0 +1,77 @@
+/*
+Copyright (C) 2012 Sebastian Herbord. All rights reserved.
+
+This file is part of Mod Organizer.
+
+Mod Organizer is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Mod Organizer is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "icondelegate.h"
+#include <QHBoxLayout>
+#include <QLabel>
+#include <QPainter>
+
+
+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<ModInfo::EFlag> 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);
+ }
+}
+