summaryrefslogtreecommitdiffstats
path: root/sizedelegate.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sizedelegate.cpp')
-rw-r--r--sizedelegate.cpp41
1 files changed, 41 insertions, 0 deletions
diff --git a/sizedelegate.cpp b/sizedelegate.cpp
new file mode 100644
index 0000000..c6b3ae0
--- /dev/null
+++ b/sizedelegate.cpp
@@ -0,0 +1,41 @@
+/*
+ This program 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
+ 2 of the License, or (at your option) any later version.
+*/
+
+#include <QFontMetrics>
+#include <QLocale>
+#include <QPainter>
+#include <QApplication>
+
+#include "sizedelegate.h"
+
+SizeDelegate::SizeDelegate(QObject *parent) : QAbstractItemDelegate(parent) {};
+
+void SizeDelegate::paint(QPainter *p, const QStyleOptionViewItem &option, const QModelIndex &index) const{
+ p->save();
+ qint64 size = index.data().toInt();
+ qint64 maxSize = Q_INT64_C(2147483648);
+ QColor c(QColor(Qt::darkGreen));
+ if(size > maxSize){
+ c = QColor(Qt::red);
+ }
+ qApp->style()->drawControl(QStyle::CE_ItemViewItem, &option, p);
+ p->setPen(QPen(c));
+ p->setFont(option.font);
+ QLocale l;
+ QString text = l.toString(size);
+ p->drawText(option.rect, Qt::AlignRight | Qt::AlignCenter | Qt::AlignVCenter, text);
+ p->restore();
+}
+
+QSize SizeDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const {
+ QFont font = option.font;
+ QFontMetrics metrics(font);
+ QLocale l;
+ QString size = l.toString(index.data().toInt());
+ return metrics.size(Qt::TextSingleLine, size);
+}
+