- const qreal width = size().width() - 4 * styleOption().padding;
- m_font = font(); // TODO: Most probably the font size will be slightly shrinked in future
+ Q_ASSERT(m_dirtyCache);
+ m_dirtyCache = false;
+
+ const qreal maxWidth = size().width() - 4 * styleOption().padding;
+
+ if (role() == "rating") {
+ m_text = QString();
+
+ const qreal height = styleOption().fontMetrics.ascent();
+ const QSizeF pixmapSize(qMin(height * 5, maxWidth), height);
+
+ m_pixmap = QPixmap(pixmapSize.toSize());
+ m_pixmap.fill(Qt::transparent);
+
+ QPainter painter(&m_pixmap);
+ const QRect rect(0, 0, m_pixmap.width(), m_pixmap.height());
+ const int rating = data().toInt();
+ KRatingPainter::paintRating(&painter, rect, Qt::AlignJustify | Qt::AlignVCenter, rating);
+ } else {
+ m_pixmap = QPixmap();