+
+ const TextInfo* ratingTextInfo = m_textInfo.value("rating");
+ if (ratingTextInfo) {
+ // The text of the rating-role has been set to empty to get
+ // replaced by a rating-image showing the rating as stars.
+ const KItemListStyleOption& option = styleOption();
+ QSizeF ratingSize = preferredRatingSize(option);
+
+ const qreal availableWidth = (m_layout == DetailsLayout)
+ ? columnWidth("rating") - columnPadding(option)
+ : m_textRect.width();
+ if (ratingSize.width() > availableWidth) {
+ ratingSize.rwidth() = availableWidth;
+ }
+ m_rating = QPixmap(ratingSize.toSize());
+ m_rating.fill(Qt::transparent);
+
+ QPainter painter(&m_rating);
+ const QRect rect(0, 0, m_rating.width(), m_rating.height());
+ const int rating = data().value("rating").toInt();
+ KRatingPainter::paintRating(&painter, rect, Qt::AlignJustify | Qt::AlignVCenter, rating);
+ } else if (!m_rating.isNull()) {
+ m_rating = QPixmap();
+ }