2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
4 * Based on the Itemviews NG project from Trolltech Labs
6 * SPDX-License-Identifier: GPL-2.0-or-later
9 #include "kstandarditemlistgroupheader.h"
11 #include <KRatingPainter>
14 KStandardItemListGroupHeader::KStandardItemListGroupHeader(QGraphicsWidget
*parent
)
15 : KItemListGroupHeader(parent
)
22 KStandardItemListGroupHeader::~KStandardItemListGroupHeader()
26 void KStandardItemListGroupHeader::paint(QPainter
*painter
, const QStyleOptionGraphicsItem
*option
, QWidget
*widget
)
31 KItemListGroupHeader::paint(painter
, option
, widget
);
34 void KStandardItemListGroupHeader::paintRole(QPainter
*painter
, const QRectF
&roleBounds
, const QColor
&color
)
36 if (m_pixmap
.isNull()) {
37 painter
->setPen(color
);
38 painter
->drawText(roleBounds
, 0, m_text
);
40 painter
->drawPixmap(roleBounds
.topLeft(), m_pixmap
);
44 void KStandardItemListGroupHeader::paintSeparator(QPainter
*painter
, const QColor
&color
)
46 if (itemIndex() == 0) {
47 // No top- or left-line should be drawn for the first group-header
51 painter
->setPen(color
);
53 if (scrollOrientation() == Qt::Horizontal
) {
54 painter
->drawLine(0, 0, 0, size().height() - 1);
56 if (layoutDirection() == Qt::LeftToRight
) {
57 painter
->drawLine(0, 0, size().width() - 1, 0);
59 painter
->drawLine(1, 0, size().width(), 0);
64 void KStandardItemListGroupHeader::roleChanged(const QByteArray
¤t
, const QByteArray
&previous
)
71 void KStandardItemListGroupHeader::dataChanged(const QVariant
¤t
, const QVariant
&previous
)
78 void KStandardItemListGroupHeader::resizeEvent(QGraphicsSceneResizeEvent
*event
)
80 KItemListGroupHeader::resizeEvent(event
);
84 void KStandardItemListGroupHeader::updateCache()
86 Q_ASSERT(m_dirtyCache
);
89 const qreal maxWidth
= size().width() - 4 * styleOption().padding
;
91 if (role() == "rating") {
94 const qreal height
= styleOption().fontMetrics
.ascent();
95 const QSizeF
pixmapSize(qMin(height
* 5, maxWidth
), height
);
97 m_pixmap
= QPixmap(pixmapSize
.toSize());
98 m_pixmap
.fill(Qt::transparent
);
100 QPainter
painter(&m_pixmap
);
101 const QRect
rect(0, 0, m_pixmap
.width(), m_pixmap
.height());
102 const int rating
= data().toInt();
103 KRatingPainter::paintRating(&painter
, rect
, Qt::AlignJustify
| Qt::AlignVCenter
, rating
);
105 m_pixmap
= QPixmap();
107 QFontMetricsF
fontMetrics(font());
108 const QString text
= fontMetrics
.elidedText(data().toString(), Qt::ElideRight
, maxWidth
);
113 #include "moc_kstandarditemlistgroupheader.cpp"