summaryrefslogtreecommitdiffstats
path: root/sigtools/ClassModel.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'sigtools/ClassModel.cpp')
-rw-r--r--sigtools/ClassModel.cpp54
1 files changed, 46 insertions, 8 deletions
diff --git a/sigtools/ClassModel.cpp b/sigtools/ClassModel.cpp
index 3bab9b35..5c138abb 100644
--- a/sigtools/ClassModel.cpp
+++ b/sigtools/ClassModel.cpp
@@ -21,8 +21,15 @@
// Sigtools includes
#include "PluginModel.h"
+// KDE includes
+#include <KColorScheme>
+#include <KGlobalSettings>
+#include <KIcon>
+
// Qt includes
#include <QtCore/QSize>
+#include <QtGui/QFontMetrics>
+#include <QtGui/QPainter>
using namespace Sigtools;
@@ -44,20 +51,51 @@ Qt::ItemFlags ClassModel::flags() const
return Qt::ItemIsEnabled;
}
-void ClassModel::paint(QPainter* painter, const QStyleOptionViewItem& option) const
-{
-}
-
-QSize ClassModel::sizeHint(const QStyleOptionViewItem& option) const
-{
-}
-
BaseModel* ClassModel::childItem(const int row)
{
+ Q_UNUSED(row)
return NULL;
}
int ClassModel::findChild(BaseModel* model) const
{
+ Q_UNUSED(model)
return -1;
}
+
+void ClassModel::redraw(const int width) const
+{
+ QFont regFont = KGlobalSettings::generalFont();
+ QFontMetrics regMetrics(regFont);
+ QFont smallFont = KGlobalSettings::smallestReadableFont();
+ smallFont.setItalic(true);
+ QFontMetrics smallMetrics(smallFont);
+
+ QSize nameSize = regMetrics.size(0, m_name);
+
+ int maxWidth = qMax(nameSize.width() + nameSize.width() + horizSpacing, width);
+
+ QSize descSize = smallMetrics.boundingRect(QRect(0, 0, maxWidth, 0), Qt::TextWordWrap, m_description).size();
+
+ int maxHeight = nameSize.height() + descSize.height() + vertSpacing;
+
+ m_pixmap = QPixmap(maxWidth + 2 * borderWidth, maxHeight + 2 * borderWidth);
+ m_pixmap.fill(KStatefulBrush(KColorScheme::View, KColorScheme::NormalBackground).brush(QPalette::Normal).color());
+ QPainter painter(&m_pixmap);
+
+ int h = borderWidth;
+ int w = borderWidth;
+
+ painter.drawPixmap(w, h, KIcon(m_icon).pixmap(nameSize.height(), nameSize.height()));
+
+ w += nameSize.height();
+ w += horizSpacing;
+
+ painter.drawText(QRect(QPoint(w, h), QSize(maxWidth - w, nameSize.height())), Qt::AlignBottom | Qt::AlignLeft, m_name);
+
+ w = borderWidth;
+ h += vertSpacing;
+
+ painter.setFont(smallFont);
+ painter.drawText(QRect(QPoint(w, h), descSize), Qt::AlignBottom | Qt::AlignLeft | Qt::TextWordWrap, m_description);
+}