X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/54b5a283765f168575f2eaeff95c93dbeca3d63d..01e4f60a0931aba506b184d384a4e2f926b2233c:/src/kitemviews/kitemlistgroupheader.h diff --git a/src/kitemviews/kitemlistgroupheader.h b/src/kitemviews/kitemlistgroupheader.h index 20a58cc5b..1e8ed2cca 100644 --- a/src/kitemviews/kitemlistgroupheader.h +++ b/src/kitemviews/kitemlistgroupheader.h @@ -30,6 +30,13 @@ class KItemListView; +/** + * @brief Base class for group headers. + * + * Draws a default header background. Derived classes must reimplement + * the method paint() and draw the role within the given roleBounds() with + * the color roleColor(). + */ class LIBDOLPHINPRIVATE_EXPORT KItemListGroupHeader : public QGraphicsWidget { Q_OBJECT @@ -55,9 +62,15 @@ public: void setScrollOrientation(Qt::Orientation orientation); Qt::Orientation scrollOrientation() const; + void setItemIndex(int index); + int itemIndex() const; + virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0); protected: + virtual void paintRole(QPainter* painter, const QRectF& roleBounds, const QColor& color) = 0; + virtual void paintSeparator(QPainter* painter, const QColor& color) = 0; + /** * Is called after the role has been changed and allows the derived class * to react on this change. @@ -82,22 +95,37 @@ protected: */ virtual void scrollOrientationChanged(Qt::Orientation current, Qt::Orientation previous); + /** + * Is called after the item index has been changed and allows the derived class to react on + * this change. + */ + virtual void itemIndexChanged(int current, int previous); + /** @reimp */ virtual void resizeEvent(QGraphicsSceneResizeEvent* event); + virtual QPalette::ColorRole normalTextColorRole() const; + virtual QPalette::ColorRole normalBaseColorRole() const; + private: void updateCache(); + static QColor mixedColor(const QColor& c1, const QColor& c2, int c1Percent = 50); + + QColor textColor() const; + QColor baseColor() const; + private: bool m_dirtyCache; QByteArray m_role; QVariant m_data; KItemListStyleOption m_styleOption; Qt::Orientation m_scrollOrientation; + int m_itemIndex; - QPixmap* m_leftBorderCache; - QPixmap* m_rightBorderCache; - QColor m_outlineColor; + QColor m_separatorColor; + QColor m_roleColor; + QRectF m_roleBounds; }; #endif