X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d9de39172033c28b8f9a7c1573130cf2124b4f7a..848abc5922167a467bb73107ee6b72e9af3c8317:/src/kitemviews/kstandarditemlistview.cpp diff --git a/src/kitemviews/kstandarditemlistview.cpp b/src/kitemviews/kstandarditemlistview.cpp index f4d05dcf6..00f111053 100644 --- a/src/kitemviews/kstandarditemlistview.cpp +++ b/src/kitemviews/kstandarditemlistview.cpp @@ -19,10 +19,8 @@ #include "kstandarditemlistview.h" -#include #include #include "kstandarditemlistwidget.h" -#include "kstandarditemlistgroupheader.h" KStandardItemListView::KStandardItemListView(QGraphicsWidget* parent) : KItemListView(parent), @@ -30,7 +28,7 @@ KStandardItemListView::KStandardItemListView(QGraphicsWidget* parent) : { setAcceptDrops(true); setScrollOrientation(Qt::Vertical); - setVisibleRoles(QList() << "text"); + setVisibleRoles({"text"}); } KStandardItemListView::~KStandardItemListView() @@ -48,23 +46,8 @@ void KStandardItemListView::setItemLayout(ItemLayout layout) const ItemLayout previous = m_itemLayout; m_itemLayout = layout; - switch (layout) { - case IconsLayout: - setScrollOrientation(Qt::Vertical); - setSupportsItemExpanding(false); - break; - case DetailsLayout: - setScrollOrientation(Qt::Vertical); - setSupportsItemExpanding(true); - break; - case CompactLayout: - setScrollOrientation(Qt::Horizontal); - setSupportsItemExpanding(false); - break; - default: - Q_ASSERT(false); - break; - } + setSupportsItemExpanding(itemLayoutSupportsItemExpanding(layout)); + setScrollOrientation(layout == CompactLayout ? Qt::Horizontal : Qt::Vertical); onItemLayoutChanged(layout, previous); @@ -104,17 +87,22 @@ void KStandardItemListView::initializeItemListWidget(KItemListWidget* item) bool KStandardItemListView::itemSizeHintUpdateRequired(const QSet& changedRoles) const { + // The only thing that can modify the item's size hint is the amount of space + // needed to display the text for the visible roles. // Even if the icons have a different size they are always aligned within // the area defined by KItemStyleOption.iconSize and hence result in no // change of the item-size. - const bool containsIconName = changedRoles.contains("iconName"); - const bool containsIconPixmap = changedRoles.contains("iconPixmap"); - const int count = changedRoles.count(); - - const bool iconChanged = (containsIconName && containsIconPixmap && count == 2) || - (containsIconName && count == 1) || - (containsIconPixmap && count == 1); - return !iconChanged; + foreach (const QByteArray& role, visibleRoles()) { + if (changedRoles.contains(role)) { + return true; + } + } + return false; +} + +bool KStandardItemListView::itemLayoutSupportsItemExpanding(ItemLayout layout) const +{ + return layout == DetailsLayout; } void KStandardItemListView::onItemLayoutChanged(ItemLayout current, ItemLayout previous) @@ -141,9 +129,9 @@ void KStandardItemListView::onSupportsItemExpandingChanged(bool supportsExpandin void KStandardItemListView::polishEvent() { switch (m_itemLayout) { - case IconsLayout: applyDefaultStyleOption(KIconLoader::SizeMedium, 2, 4, 8); break; - case CompactLayout: applyDefaultStyleOption(KIconLoader::SizeSmall, 2, 8, 0); break; - case DetailsLayout: applyDefaultStyleOption(KIconLoader::SizeSmall, 2, 0, 0); break; + case IconsLayout: applyDefaultStyleOption(style()->pixelMetric(QStyle::PM_LargeIconSize), 2, 4, 8); break; + case CompactLayout: applyDefaultStyleOption(style()->pixelMetric(QStyle::PM_SmallIconSize), 2, 8, 0); break; + case DetailsLayout: applyDefaultStyleOption(style()->pixelMetric(QStyle::PM_SmallIconSize), 2, 0, 0); break; default: Q_ASSERT(false); break; } @@ -189,4 +177,3 @@ void KStandardItemListView::updateLayoutOfVisibleItems() } } -#include "kstandarditemlistview.moc"