diff options
author | Ben Boeckel <MathStuf@gmail.com> | 2009-03-25 02:25:50 -0400 |
---|---|---|
committer | Ben Boeckel <MathStuf@gmail.com> | 2009-03-25 02:25:50 -0400 |
commit | f68f7434b47502f2853638e8041a15ef62035879 (patch) | |
tree | d7b411b41745a62eb1e9e579d74e913ad77ec77e /sigtools | |
parent | aad586616b64fae819de93594c83b815071bce2d (diff) | |
download | sigen-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.cpp | 18 | ||||
-rw-r--r-- | sigtools/BaseModel.h | 7 | ||||
-rw-r--r-- | sigtools/PluginModel.cpp | 16 | ||||
-rw-r--r-- | sigtools/PluginModel.h | 4 | ||||
-rw-r--r-- | sigtools/PluginTypeModel.cpp | 25 | ||||
-rw-r--r-- | sigtools/PluginTypeModel.h | 4 | ||||
-rw-r--r-- | sigtools/RootPluginModel.cpp | 13 | ||||
-rw-r--r-- | sigtools/RootPluginModel.h | 4 |
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; }; |