summaryrefslogtreecommitdiffstats
path: root/sigtools
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-25 02:27:16 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-25 02:27:16 -0400
commit474611ee60d0ba4d734584f275d3191ef541359f (patch)
treeac27084904c145a6f1a38401b7b74d7053fea410 /sigtools
parent001fdfa40e9f1a6e8ad18a9e8d054aabcbec17f0 (diff)
downloadsigen-474611ee60d0ba4d734584f275d3191ef541359f.tar.gz
sigen-474611ee60d0ba4d734584f275d3191ef541359f.tar.xz
sigen-474611ee60d0ba4d734584f275d3191ef541359f.zip
Update ClassModel
Diffstat (limited to 'sigtools')
-rw-r--r--sigtools/ClassModel.cpp54
-rw-r--r--sigtools/ClassModel.h1
2 files changed, 47 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);
+}
diff --git a/sigtools/ClassModel.h b/sigtools/ClassModel.h
index d5d0a65c..23a6c3d2 100644
--- a/sigtools/ClassModel.h
+++ b/sigtools/ClassModel.h
@@ -46,6 +46,7 @@ class SIGTOOLS_NO_EXPORT ClassModel : public BaseModel
BaseModel* childItem(const int row);
protected:
int findChild(BaseModel* model) const;
+ void redraw(const int width) const;
const QIcon& m_icon;
const QString& m_name;