diff options
| author | Peter Penz <[email protected]> | 2011-09-24 00:18:09 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-09-24 00:20:24 +0200 |
| commit | 740e9569327c0026257dfcea38ab2efac4a29d67 (patch) | |
| tree | 96d09d0f89d8ebd3974522200c5337195bbbfcc8 /src/kitemviews/kfileitemlistwidget.cpp | |
| parent | 9ea4d3c70c3765c1ef417642a392465caa31997c (diff) | |
Fix size-hint calculation in KFileItemListView
The current approach works fine but should be replaced in the longterm
by a helper class shared by KFileItemListWidget and
KFileItemListView to share information that is required to
calculate the size hints in KFileItemListView and to represent
the actual data in KFileItemListWidget.
Diffstat (limited to 'src/kitemviews/kfileitemlistwidget.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemlistwidget.cpp | 95 |
1 files changed, 48 insertions, 47 deletions
diff --git a/src/kitemviews/kfileitemlistwidget.cpp b/src/kitemviews/kfileitemlistwidget.cpp index 49c5db5fd..7cf1b4df1 100644 --- a/src/kitemviews/kfileitemlistwidget.cpp +++ b/src/kitemviews/kfileitemlistwidget.cpp @@ -155,6 +155,51 @@ QRectF KFileItemListWidget::expansionToggleRect() const return m_isDir ? m_expansionArea : QRectF(); } +QString KFileItemListWidget::roleText(const QByteArray& role, const QHash<QByteArray, QVariant>& values) +{ + QString text; + const QVariant roleValue = values.value(role); + + switch (roleTextId(role)) { + case Name: + case Permissions: + case Owner: + case Group: + case Type: + case Destination: + case Path: + text = roleValue.toString(); + break; + + case Size: { + if (values.value("isDir").toBool()) { + // The item represents a directory. Show the number of sub directories + // instead of the file size of the directory. + if (!roleValue.isNull()) { + const KIO::filesize_t size = roleValue.value<KIO::filesize_t>(); + text = i18ncp("@item:intable", "%1 item", "%1 items", size); + } + } else { + const KIO::filesize_t size = roleValue.value<KIO::filesize_t>(); + text = KIO::convertSize(size); + } + break; + } + + case Date: { + const QDateTime dateTime = roleValue.toDateTime(); + text = KGlobal::locale()->formatDateTime(dateTime); + break; + } + + default: + Q_ASSERT(false); + break; + } + + return text; +} + void KFileItemListWidget::invalidateCache() { m_dirtyLayout = true; @@ -482,7 +527,7 @@ void KFileItemListWidget::updateIconsLayoutTextCache() continue; } - const QString text = roleText(textId, values[role]); + const QString text = roleText(role, values); m_text[textId].setText(text); qreal requiredWidth = 0; @@ -540,7 +585,7 @@ void KFileItemListWidget::updateCompactLayoutTextCache() foreach (const QByteArray& role, m_sortedVisibleRoles) { const TextId textId = roleTextId(role); - const QString text = roleText(textId, values[role]); + const QString text = roleText(role, values); m_text[textId].setText(text); qreal requiredWidth = option.fontMetrics.width(text); @@ -586,7 +631,7 @@ void KFileItemListWidget::updateDetailsLayoutTextCache() foreach (const QByteArray& role, m_sortedVisibleRoles) { const TextId textId = roleTextId(role); - const QString text = roleText(textId, values[role]); + const QString text = roleText(role, values); m_text[textId].setText(text); const qreal requiredWidth = option.fontMetrics.width(text); @@ -630,50 +675,6 @@ void KFileItemListWidget::updateAdditionalInfoTextColor() (c1.blue() * p1 + c2.blue() * p2) / 100); } -QString KFileItemListWidget::roleText(TextId textId, const QVariant& roleValue) const -{ - QString text; - - switch (textId) { - case Name: - case Permissions: - case Owner: - case Group: - case Type: - case Destination: - case Path: - text = roleValue.toString(); - break; - - case Size: { - if (data().value("isDir").toBool()) { - // The item represents a directory. Show the number of sub directories - // instead of the file size of the directory. - if (!roleValue.isNull()) { - const KIO::filesize_t size = roleValue.value<KIO::filesize_t>(); - text = i18ncp("@item:intable", "%1 item", "%1 items", size); - } - } else { - const KIO::filesize_t size = roleValue.value<KIO::filesize_t>(); - text = KIO::convertSize(size); - } - break; - } - - case Date: { - const QDateTime dateTime = roleValue.toDateTime(); - text = KGlobal::locale()->formatDateTime(dateTime); - break; - } - - default: - Q_ASSERT(false); - break; - } - - return text; -} - void KFileItemListWidget::drawPixmap(QPainter* painter, const QPixmap& pixmap) { const bool isHiddenItem = m_text[Name].text().startsWith(QLatin1Char('.')); |
