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 const qreal x
= layoutDirection() == Qt::RightToLeft
? size().width() - 1 : 0;
55 painter
->drawLine(x
, 0, x
, size().height() - 1);
57 if (layoutDirection() == Qt::LeftToRight
) {
58 painter
->drawLine(0, 0, size().width() - 1, 0);
60 painter
->drawLine(1, 0, size().width(), 0);
65 void KStandardItemListGroupHeader::roleChanged(const QByteArray
¤t
, const QByteArray
&previous
)
72 void KStandardItemListGroupHeader::dataChanged(const QVariant
¤t
, const QVariant
&previous
)
79 void KStandardItemListGroupHeader::resizeEvent(QGraphicsSceneResizeEvent
*event
)
81 KItemListGroupHeader::resizeEvent(event
);
85 void KStandardItemListGroupHeader::updateCache()
87 Q_ASSERT(m_dirtyCache
);
90 const qreal maxWidth
= size().width() - 4 * styleOption().padding
;
92 if (role() == "rating") {
95 const qreal height
= styleOption().fontMetrics
.ascent();
96 const QSizeF
pixmapSize(qMin(height
* 5, maxWidth
), height
);
98 m_pixmap
= QPixmap(pixmapSize
.toSize());
99 m_pixmap
.fill(Qt::transparent
);
101 QPainter
painter(&m_pixmap
);
102 const QRect
rect(0, 0, m_pixmap
.width(), m_pixmap
.height());
103 const int rating
= data().toInt();
104 KRatingPainter::paintRating(&painter
, rect
, Qt::AlignJustify
| Qt::AlignVCenter
, rating
);
106 m_pixmap
= QPixmap();
108 QFontMetricsF
fontMetrics(font());
109 const QString text
= fontMetrics
.elidedText(data().toString(), Qt::ElideRight
, maxWidth
);
114 #include "moc_kstandarditemlistgroupheader.cpp"