X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/67ebd66f94356b4e66005b1072919cb7b5e858bb..f510339f033658eae27f8400bf042b78b36f82f2:/src/kitemviews/kstandarditemlistview.cpp diff --git a/src/kitemviews/kstandarditemlistview.cpp b/src/kitemviews/kstandarditemlistview.cpp index bc766a5dc..a4e7c3edd 100644 --- a/src/kitemviews/kstandarditemlistview.cpp +++ b/src/kitemviews/kstandarditemlistview.cpp @@ -10,13 +10,14 @@ #include -KStandardItemListView::KStandardItemListView(QGraphicsWidget* parent) : - KItemListView(parent), - m_itemLayout(DetailsLayout) +KStandardItemListView::KStandardItemListView(QGraphicsWidget *parent) + : KItemListView(parent) + , m_itemLayout(DetailsLayout) { setAcceptDrops(true); setScrollOrientation(Qt::Vertical); setVisibleRoles({"text"}); + setAlternateBackgrounds(true); } KStandardItemListView::~KStandardItemListView() @@ -34,6 +35,8 @@ void KStandardItemListView::setItemLayout(ItemLayout layout) const ItemLayout previous = m_itemLayout; m_itemLayout = layout; + // keep the leading padding option unchanged here + setHighlightEntireRow(itemLayoutHighlightEntireRow(layout)); setSupportsItemExpanding(itemLayoutSupportsItemExpanding(layout)); setScrollOrientation(layout == CompactLayout ? Qt::Horizontal : Qt::Vertical); @@ -47,40 +50,49 @@ KStandardItemListView::ItemLayout KStandardItemListView::itemLayout() const return m_itemLayout; } -KItemListWidgetCreatorBase* KStandardItemListView::defaultWidgetCreator() const +KItemListWidgetCreatorBase *KStandardItemListView::defaultWidgetCreator() const { return new KItemListWidgetCreator(); } -KItemListGroupHeaderCreatorBase* KStandardItemListView::defaultGroupHeaderCreator() const +KItemListGroupHeaderCreatorBase *KStandardItemListView::defaultGroupHeaderCreator() const { return new KItemListGroupHeaderCreator(); } -void KStandardItemListView::initializeItemListWidget(KItemListWidget* item) +void KStandardItemListView::initializeItemListWidget(KItemListWidget *item) { - KStandardItemListWidget* standardItemListWidget = qobject_cast(item); + KStandardItemListWidget *standardItemListWidget = qobject_cast(item); Q_ASSERT(standardItemListWidget); switch (itemLayout()) { - case IconsLayout: standardItemListWidget->setLayout(KStandardItemListWidget::IconsLayout); break; - case CompactLayout: standardItemListWidget->setLayout(KStandardItemListWidget::CompactLayout); break; - case DetailsLayout: standardItemListWidget->setLayout(KStandardItemListWidget::DetailsLayout); break; - default: Q_ASSERT(false); break; + case IconsLayout: + standardItemListWidget->setLayout(KStandardItemListWidget::IconsLayout); + break; + case CompactLayout: + standardItemListWidget->setLayout(KStandardItemListWidget::CompactLayout); + break; + case DetailsLayout: + standardItemListWidget->setLayout(KStandardItemListWidget::DetailsLayout); + break; + default: + Q_ASSERT(false); + break; } + standardItemListWidget->setHighlightEntireRow(highlightEntireRow()); standardItemListWidget->setSupportsItemExpanding(supportsItemExpanding()); } - -bool KStandardItemListView::itemSizeHintUpdateRequired(const QSet& changedRoles) const +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. - foreach (const QByteArray& role, visibleRoles()) { + const auto roles = visibleRoles(); + for (const QByteArray &role : roles) { if (changedRoles.contains(role)) { return true; } @@ -88,6 +100,11 @@ bool KStandardItemListView::itemSizeHintUpdateRequired(const QSet& c return false; } +bool KStandardItemListView::itemLayoutHighlightEntireRow(ItemLayout layout) const +{ + return layout == DetailsLayout; +} + bool KStandardItemListView::itemLayoutSupportsItemExpanding(ItemLayout layout) const { return layout == DetailsLayout; @@ -113,23 +130,27 @@ void KStandardItemListView::onSupportsItemExpandingChanged(bool supportsExpandin updateLayoutOfVisibleItems(); } - void KStandardItemListView::polishEvent() { switch (m_itemLayout) { - 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; + 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; } QGraphicsWidget::polishEvent(); } -void KStandardItemListView::applyDefaultStyleOption(int iconSize, - int padding, - int horizontalMargin, - int verticalMargin) +void KStandardItemListView::applyDefaultStyleOption(int iconSize, int padding, int horizontalMargin, int verticalMargin) { KItemListStyleOption option = styleOption(); @@ -152,9 +173,11 @@ void KStandardItemListView::applyDefaultStyleOption(int iconSize, void KStandardItemListView::updateLayoutOfVisibleItems() { if (model()) { - foreach (KItemListWidget* widget, visibleItemListWidgets()) { + const auto widgets = visibleItemListWidgets(); + for (KItemListWidget *widget : widgets) { initializeItemListWidget(widget); } } } +#include "moc_kstandarditemlistview.cpp"