summaryrefslogtreecommitdiffstats
path: root/sigtools
diff options
context:
space:
mode:
authorBen Boeckel <MathStuf@gmail.com>2009-03-25 02:25:50 -0400
committerBen Boeckel <MathStuf@gmail.com>2009-03-25 02:25:50 -0400
commitf68f7434b47502f2853638e8041a15ef62035879 (patch)
treed7b411b41745a62eb1e9e579d74e913ad77ec77e /sigtools
parentaad586616b64fae819de93594c83b815071bce2d (diff)
downloadsigen-f68f7434b47502f2853638e8041a15ef62035879.tar.gz
sigen-f68f7434b47502f2853638e8041a15ef62035879.tar.xz
sigen-f68f7434b47502f2853638e8041a15ef62035879.zip
Move the paint and sizeHint down to BaseModel
Diffstat (limited to 'sigtools')
-rw-r--r--sigtools/BaseModel.cpp18
-rw-r--r--sigtools/BaseModel.h7
-rw-r--r--sigtools/PluginModel.cpp16
-rw-r--r--sigtools/PluginModel.h4
-rw-r--r--sigtools/PluginTypeModel.cpp25
-rw-r--r--sigtools/PluginTypeModel.h4
-rw-r--r--sigtools/RootPluginModel.cpp13
-rw-r--r--sigtools/RootPluginModel.h4
8 files changed, 44 insertions, 47 deletions
diff --git a/sigtools/BaseModel.cpp b/sigtools/BaseModel.cpp
index 3ddcccd7..c806bf83 100644
--- a/sigtools/BaseModel.cpp
+++ b/sigtools/BaseModel.cpp
@@ -18,6 +18,10 @@
// Header include
#include "BaseModel.h"
+// Qt includes
+#include <QtGui/QPainter>
+#include <QtGui/QStyleOptionViewItem>
+
using namespace Sigtools;
const int BaseModel::borderWidth = 1;
@@ -38,6 +42,20 @@ BaseModel* BaseModel::parent()
return m_parent;
}
+void BaseModel::paint(QPainter* painter, const QStyleOptionViewItem& option) const
+{
+ if (option.rect.width() != m_pixmap.width())
+ redraw(option.rect.width());
+ painter->drawPixmap(option.rect.topLeft(), m_pixmap);
+}
+
+QSize BaseModel::sizeHint(const QStyleOptionViewItem& option) const
+{
+ if (option.rect.width() != m_pixmap.width())
+ redraw(option.rect.width());
+ return m_pixmap.size();
+}
+
int BaseModel::indexNumber() const
{
if (m_parent)
diff --git a/sigtools/BaseModel.h b/sigtools/BaseModel.h
index 53f34aac..6761f1e3 100644
--- a/sigtools/BaseModel.h
+++ b/sigtools/BaseModel.h
@@ -24,6 +24,7 @@
// Qt includes
#include <QtCore/QString>
#include <QtCore/QVariant>
+#include <QtGui/QPixmap>
// Forward declarations
class QPainter;
@@ -45,19 +46,21 @@ class SIGTOOLS_NO_EXPORT BaseModel : public QObject
virtual Qt::ItemFlags flags() const = 0;
- virtual void paint(QPainter* painter, const QStyleOptionViewItem& option) const = 0;
- virtual QSize sizeHint(const QStyleOptionViewItem& option) const = 0;
+ void paint(QPainter* painter, const QStyleOptionViewItem& option) const;
+ QSize sizeHint(const QStyleOptionViewItem& option) const;
virtual BaseModel* childItem(const int row) = 0;
int indexNumber() const;
protected:
virtual int findChild(BaseModel* model) const = 0;
+ virtual void redraw(const int width) const = 0;
static const int borderWidth;
static const int vertSpacing;
static const int horizSpacing;
BaseModel* m_parent;
+ mutable QPixmap m_pixmap;
};
}
diff --git a/sigtools/PluginModel.cpp b/sigtools/PluginModel.cpp
index 34d283ae..a1cd2483 100644
--- a/sigtools/PluginModel.cpp
+++ b/sigtools/PluginModel.cpp
@@ -34,9 +34,7 @@
#include <KPluginInfo>
// Qt includes
-#include <QtCore/QSize>
#include <QtGui/QPainter>
-#include <QtGui/QStyleOptionViewItem>
using namespace Sigencore::Interfaces;
using namespace Sigtools;
@@ -93,20 +91,6 @@ Qt::ItemFlags PluginModel::flags() const
return Qt::ItemIsEnabled;
}
-void PluginModel::paint(QPainter* painter, const QStyleOptionViewItem& option) const
-{
- if (option.rect.width() != m_pixmap.width())
- redraw(option.rect.width());
- painter->drawPixmap(option.rect.topLeft(), m_pixmap);
-}
-
-QSize PluginModel::sizeHint(const QStyleOptionViewItem& option) const
-{
- if (option.rect.width() != m_pixmap.width())
- redraw(option.rect.width());
- return m_pixmap.size();
-}
-
BaseModel* PluginModel::childItem(const int row)
{
if ((0 <= row) && (row < m_classes.size()))
diff --git a/sigtools/PluginModel.h b/sigtools/PluginModel.h
index 354ca900..f2e0ede6 100644
--- a/sigtools/PluginModel.h
+++ b/sigtools/PluginModel.h
@@ -46,9 +46,6 @@ class SIGTOOLS_NO_EXPORT PluginModel : public BaseModel
Qt::ItemFlags flags() const;
- void paint(QPainter* painter, const QStyleOptionViewItem& option) const;
- QSize sizeHint(const QStyleOptionViewItem& option) const;
-
BaseModel* childItem(const int row);
protected:
int findChild(BaseModel* model) const;
@@ -56,7 +53,6 @@ class SIGTOOLS_NO_EXPORT PluginModel : public BaseModel
const KService::Ptr m_service;
const KPluginInfo* m_info;
- mutable QPixmap m_pixmap;
QList<ClassModel*> m_classes;
};
}
diff --git a/sigtools/PluginTypeModel.cpp b/sigtools/PluginTypeModel.cpp
index cfb79f5c..102cdcbc 100644
--- a/sigtools/PluginTypeModel.cpp
+++ b/sigtools/PluginTypeModel.cpp
@@ -22,11 +22,14 @@
#include "PluginModel.h"
#include "RootPluginModel.h"
+// KDE includes
+#include <KColorScheme>
+#include <KGlobalSettings>
+
// Qt includes
#include <QtCore/QSize>
#include <QtGui/QFontMetrics>
#include <QtGui/QPainter>
-#include <QtGui/QStyleOptionViewItem>
using namespace Sigtools;
@@ -46,16 +49,6 @@ Qt::ItemFlags PluginTypeModel::flags() const
return Qt::ItemIsEnabled;
}
-void PluginTypeModel::paint(QPainter* painter, const QStyleOptionViewItem& option) const
-{
- painter->drawText(option.rect.adjusted(borderWidth, borderWidth, -borderWidth, -borderWidth), m_type);
-}
-
-QSize PluginTypeModel::sizeHint(const QStyleOptionViewItem& option) const
-{
- return QFontMetrics(option.font).size(0, m_type) + 2 * QSize(borderWidth, borderWidth);
-}
-
BaseModel* PluginTypeModel::childItem(const int row)
{
if ((0 <= row) && (row < m_services.size()))
@@ -72,3 +65,13 @@ int PluginTypeModel::findChild(BaseModel* model) const
{
return m_services.indexOf(qobject_cast<PluginModel*>(model));
}
+
+void PluginTypeModel::redraw(const int width) const
+{
+ QSize typeSize = QFontMetrics(KGlobalSettings::generalFont()).size(0, m_type) + QSize(2 * borderWidth, 2 * borderWidth);
+ m_pixmap = QPixmap(qMax(width, typeSize.width()) + 2 * borderWidth, typeSize.height() + 2 * borderWidth);
+ m_pixmap.fill(KStatefulBrush(KColorScheme::View, KColorScheme::NormalBackground).brush(QPalette::Normal).color());
+ QPainter painter(&m_pixmap);
+
+ painter.drawText(QRect(QPoint(borderWidth, borderWidth), typeSize), m_type);
+}
diff --git a/sigtools/PluginTypeModel.h b/sigtools/PluginTypeModel.h
index 3f8119b4..a79c7815 100644
--- a/sigtools/PluginTypeModel.h
+++ b/sigtools/PluginTypeModel.h
@@ -41,14 +41,12 @@ class SIGTOOLS_NO_EXPORT PluginTypeModel : public BaseModel
Qt::ItemFlags flags() const;
- void paint(QPainter* painter, const QStyleOptionViewItem& option) const;
- QSize sizeHint(const QStyleOptionViewItem& option) const;
-
BaseModel* childItem(const int row);
void addPlugin(KService::Ptr service);
protected:
int findChild(BaseModel* model) const;
+ void redraw(const int width) const;
const QString m_type;
QList<PluginModel*> m_services;
diff --git a/sigtools/RootPluginModel.cpp b/sigtools/RootPluginModel.cpp
index cc7f9d88..0722b58a 100644
--- a/sigtools/RootPluginModel.cpp
+++ b/sigtools/RootPluginModel.cpp
@@ -41,14 +41,6 @@ Qt::ItemFlags RootPluginModel::flags() const
return Qt::ItemIsEnabled;
}
-void RootPluginModel::paint(QPainter* painter, const QStyleOptionViewItem& option) const
-{
-}
-
-QSize RootPluginModel::sizeHint(const QStyleOptionViewItem& option) const
-{
-}
-
BaseModel* RootPluginModel::childItem(const int row)
{
if ((0 <= row) && (row < m_types.size()))
@@ -67,3 +59,8 @@ int RootPluginModel::findChild(BaseModel* model) const
{
return m_types.values().indexOf(qobject_cast<PluginTypeModel*>(model));
}
+
+void RootPluginModel::redraw(const int width) const
+{
+ Q_UNUSED(width)
+}
diff --git a/sigtools/RootPluginModel.h b/sigtools/RootPluginModel.h
index fbb5090f..ea170aa1 100644
--- a/sigtools/RootPluginModel.h
+++ b/sigtools/RootPluginModel.h
@@ -40,14 +40,12 @@ class SIGTOOLS_NO_EXPORT RootPluginModel : public BaseModel
Qt::ItemFlags flags() const;
- void paint(QPainter* painter, const QStyleOptionViewItem& option) const;
- QSize sizeHint(const QStyleOptionViewItem& option) const;
-
BaseModel* childItem(const int row);
void addPlugin(const QString& type, KService::Ptr service);
protected:
int findChild(BaseModel* model) const;
+ void redraw(const int width) const;
QMap<QString, PluginTypeModel*> m_types;
};