]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/kitemviews/kitemlistwidget.cpp
Don't include `iconOverlays` in rolesData if it is empty
[dolphin.git] / src / kitemviews / kitemlistwidget.cpp
index 69a38432a4e21fe360b2610858c67ce21cd9f71b..ae721c7e41d3f0664ff898888fc74192bb3f4211 100644 (file)
@@ -34,6 +34,7 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* informant, QGraphicsI
     m_selected(false),
     m_current(false),
     m_hovered(false),
+    m_expansionAreaHovered(false),
     m_alternateBackground(false),
     m_enabledSelectionToggle(false),
     m_data(),
@@ -46,7 +47,8 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* informant, QGraphicsI
     m_hoverAnimation(nullptr),
     m_hoverSequenceIndex(0),
     m_selectionToggle(nullptr),
-    m_editedRole()
+    m_editedRole(),
+    m_iconSize(-1)
 {
     connect(&m_hoverSequenceTimer, &QTimer::timeout, this, &KItemListWidget::slotHoverSequenceTimerTimeout);
 }
@@ -180,6 +182,18 @@ qreal KItemListWidget::columnWidth(const QByteArray& role) const
     return m_columnWidths.value(role);
 }
 
+qreal KItemListWidget::sidePadding() const {
+    return m_sidePadding;
+}
+
+void KItemListWidget::setSidePadding(qreal width) {
+    if (m_sidePadding != width){
+        m_sidePadding = width;
+        sidePaddingChanged(width);
+        update();
+    }
+}
+
 void KItemListWidget::setStyleOption(const KItemListStyleOption& option)
 {
     if (m_styleOption == option) {
@@ -280,6 +294,20 @@ bool KItemListWidget::isHovered() const
     return m_hovered;
 }
 
+void KItemListWidget::setExpansionAreaHovered(bool hovered)
+{
+    if (hovered == m_expansionAreaHovered) {
+        return;
+    }
+    m_expansionAreaHovered = hovered;
+    update();
+}
+
+bool KItemListWidget::expansionAreaHovered() const
+{
+    return m_expansionAreaHovered;
+}
+
 void KItemListWidget::setHoverPosition(const QPointF& pos)
 {
     if (m_selectionToggle) {
@@ -305,6 +333,17 @@ void KItemListWidget::setEnabledSelectionToggle(bool enable)
 {
     if (m_enabledSelectionToggle != enable) {
         m_enabledSelectionToggle = enable;
+
+        // We want the change to take effect immediately.
+        if (m_enabledSelectionToggle) {
+            if (m_hovered) {
+                initializeSelectionToggle();
+            }
+        } else if (m_selectionToggle) {
+            m_selectionToggle->deleteLater();
+            m_selectionToggle = nullptr;
+        }
+
         update();
     }
 }
@@ -341,6 +380,20 @@ QByteArray KItemListWidget::editedRole() const
     return m_editedRole;
 }
 
+void KItemListWidget::setIconSize(int iconSize)
+{
+    if (m_iconSize != iconSize) {
+        const int previousIconSize = m_iconSize;
+        m_iconSize = iconSize;
+        iconSizeChanged(iconSize, previousIconSize);
+    }
+}
+
+int KItemListWidget::iconSize() const
+{
+    return m_iconSize;
+}
+
 bool KItemListWidget::contains(const QPointF& point) const
 {
     if (!QGraphicsWidget::contains(point)) {
@@ -416,11 +469,20 @@ void KItemListWidget::columnWidthChanged(const QByteArray& role,
     Q_UNUSED(previous)
 }
 
+void KItemListWidget::sidePaddingChanged(qreal width)
+{
+    Q_UNUSED(width)
+}
+
 void KItemListWidget::styleOptionChanged(const KItemListStyleOption& current,
                                          const KItemListStyleOption& previous)
 {
-    Q_UNUSED(current)
     Q_UNUSED(previous)
+
+    // set the initial value of m_iconSize if not set
+    if (m_iconSize == -1) {
+        m_iconSize = current.iconSize;
+    }
 }
 
 void KItemListWidget::currentChanged(bool current)
@@ -455,6 +517,12 @@ void KItemListWidget::editedRoleChanged(const QByteArray& current, const QByteAr
     Q_UNUSED(previous)
 }
 
+void KItemListWidget::iconSizeChanged(int current, int previous)
+{
+    Q_UNUSED(current)
+    Q_UNUSED(previous)
+}
+
 void KItemListWidget::resizeEvent(QGraphicsSceneResizeEvent* event)
 {
     QGraphicsWidget::resizeEvent(event);