┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/kitemviews/kstandarditemlistwidget.cpp
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2012-09-06 07:51:22 +0200
committerFrank Reininghaus <[email protected]>2012-09-06 07:51:22 +0200
commitcad870df3bf22592d4c3feeaef22923d1300e482 (patch)
treef4063dccf9ba86fdc77f83c2178c517aae6190a8 /src/kitemviews/kstandarditemlistwidget.cpp
parent055ad286aac372d1542f6c64f32ae4f85d307eed (diff)
Do not show '-' for additional info which is not available for an item
Thanks to Todd Jennings for the patch! CCBUG: 304752 REVIEW: 106304
Diffstat (limited to 'src/kitemviews/kstandarditemlistwidget.cpp')
-rw-r--r--src/kitemviews/kstandarditemlistwidget.cpp28
1 files changed, 25 insertions, 3 deletions
diff --git a/src/kitemviews/kstandarditemlistwidget.cpp b/src/kitemviews/kstandarditemlistwidget.cpp
index 7ae7e2efc..be4fd68cb 100644
--- a/src/kitemviews/kstandarditemlistwidget.cpp
+++ b/src/kitemviews/kstandarditemlistwidget.cpp
@@ -68,6 +68,14 @@ QSizeF KStandardItemListWidgetInformant::itemSizeHint(int index, const KItemList
const qreal maxWidth = itemWidth - 2 * option.padding;
QTextLine line;
+ int emptyRolesCount = 0;
+ foreach (const QByteArray& role, view->visibleRoles()) {
+ const QString text = roleText(role, values);
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ emptyRolesCount++;
+ }
+ }
+
// Calculate the number of lines required for wrapping the name
QTextOption textOption(Qt::AlignHCenter);
textOption.setWrapMode(QTextOption::WrapAtWordBoundaryOrAnywhere);
@@ -84,7 +92,7 @@ QSizeF KStandardItemListWidgetInformant::itemSizeHint(int index, const KItemList
layout.endLayout();
// Add one line for each additional information
- textHeight += additionalRolesCount * option.fontMetrics.lineSpacing();
+ textHeight += (additionalRolesCount - emptyRolesCount) * option.fontMetrics.lineSpacing();
const qreal maxTextHeight = option.maxTextSize.height();
if (maxTextHeight > 0 && textHeight > maxTextHeight) {
@@ -970,8 +978,17 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
qreal nameHeight = 0;
QTextLine line;
+ int emptyRolesCount = 0;
+ foreach (const QByteArray& role, visibleRoles()) {
+ const QString text = roleText(role, values);
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ emptyRolesCount++;
+ }
+ }
+
const int additionalRolesCount = qMax(visibleRoles().count() - 1, 0);
- const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) - additionalRolesCount;
+ const int maxNameLines = (option.maxTextSize.height() / int(lineSpacing)) -
+ (additionalRolesCount - emptyRolesCount);
QTextLayout layout(nameTextInfo->staticText.text(), m_customizedFont);
layout.setTextOption(nameTextInfo->staticText.textOption());
@@ -1005,7 +1022,7 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
nameTextInfo->staticText.setTextWidth(maxWidth);
nameTextInfo->pos = QPointF(padding, widgetHeight -
nameHeight -
- additionalRolesCount * lineSpacing -
+ (additionalRolesCount - emptyRolesCount)* lineSpacing -
padding);
m_textRect = QRectF(padding + (maxWidth - nameWidth) / 2,
nameTextInfo->pos.y(),
@@ -1020,6 +1037,11 @@ void KStandardItemListWidget::updateIconsLayoutTextCache()
}
const QString text = roleText(role, values);
+
+ if (role != "text" && role != "rating" && text.isEmpty()) {
+ continue;
+ }
+
TextInfo* textInfo = m_textInfo.value(role);
textInfo->staticText.setText(text);