X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ce7852fb2352155e4373f9a41f0a01549985bd45..ed2d352c42a6d517d4f29b3582c0e00aa34fe647:/src/kitemviews/kitemlistwidget.cpp diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 79ffee210..c8b3d2c3c 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -27,27 +27,29 @@ KItemListWidgetInformant::~KItemListWidgetInformant() { } -KItemListWidget::KItemListWidget(KItemListWidgetInformant* informant, QGraphicsItem* parent) : - QGraphicsWidget(parent), - m_informant(informant), - m_index(-1), - m_selected(false), - m_current(false), - m_hovered(false), - m_expansionAreaHovered(false), - m_alternateBackground(false), - m_enabledSelectionToggle(false), - m_data(), - m_visibleRoles(), - m_columnWidths(), - m_styleOption(), - m_siblingsInfo(), - m_hoverOpacity(0), - m_hoverCache(nullptr), - m_hoverAnimation(nullptr), - m_hoverSequenceIndex(0), - m_selectionToggle(nullptr), - m_editedRole() +KItemListWidget::KItemListWidget(KItemListWidgetInformant *informant, QGraphicsItem *parent) + : QGraphicsWidget(parent) + , m_informant(informant) + , m_index(-1) + , m_selected(false) + , m_current(false) + , m_hovered(false) + , m_expansionAreaHovered(false) + , m_alternateBackground(false) + , m_enabledSelectionToggle(false) + , m_data() + , m_visibleRoles() + , m_columnWidths() + , m_sidePadding(0) + , m_styleOption() + , m_siblingsInfo() + , m_hoverOpacity(0) + , m_hoverCache(nullptr) + , m_hoverAnimation(nullptr) + , m_hoverSequenceIndex(0) + , m_selectionToggle(nullptr) + , m_editedRole() + , m_iconSize(-1) { connect(&m_hoverSequenceTimer, &QTimer::timeout, this, &KItemListWidget::slotHoverSequenceTimerTimeout); } @@ -78,15 +80,14 @@ int KItemListWidget::index() const return m_index; } -void KItemListWidget::setData(const QHash& data, - const QSet& roles) +void KItemListWidget::setData(const QHash &data, const QSet &roles) { clearHoverCache(); if (roles.isEmpty()) { m_data = data; dataChanged(m_data); } else { - for (const QByteArray& role : roles) { + for (const QByteArray &role : roles) { m_data[role] = data[role]; } dataChanged(m_data, roles); @@ -99,7 +100,7 @@ QHash KItemListWidget::data() const return m_data; } -void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) +void KItemListWidget::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { Q_UNUSED(option) @@ -111,10 +112,7 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o if (m_selected && m_editedRole.isEmpty()) { const QStyle::State activeState(isActiveWindow() ? QStyle::State_Active : 0); - drawItemStyleOption(painter, widget, activeState | - QStyle::State_Enabled | - QStyle::State_Selected | - QStyle::State_Item); + drawItemStyleOption(painter, widget, activeState | QStyle::State_Enabled | QStyle::State_Selected | QStyle::State_Item); } if (m_current && m_editedRole.isEmpty()) { @@ -138,10 +136,7 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o QPainter pixmapPainter(m_hoverCache); const QStyle::State activeState(isActiveWindow() ? QStyle::State_Active : 0); - drawItemStyleOption(&pixmapPainter, widget, activeState | - QStyle::State_Enabled | - QStyle::State_MouseOver | - QStyle::State_Item); + drawItemStyleOption(&pixmapPainter, widget, activeState | QStyle::State_Enabled | QStyle::State_MouseOver | QStyle::State_Item); } const qreal opacity = painter->opacity(); @@ -151,7 +146,7 @@ void KItemListWidget::paint(QPainter* painter, const QStyleOptionGraphicsItem* o } } -void KItemListWidget::setVisibleRoles(const QList& roles) +void KItemListWidget::setVisibleRoles(const QList &roles) { const QList previousRoles = m_visibleRoles; m_visibleRoles = roles; @@ -165,8 +160,7 @@ QList KItemListWidget::visibleRoles() const return m_visibleRoles; } - -void KItemListWidget::setColumnWidth(const QByteArray& role, qreal width) +void KItemListWidget::setColumnWidth(const QByteArray &role, qreal width) { const qreal previousWidth = m_columnWidths.value(role); if (previousWidth != width) { @@ -176,24 +170,26 @@ void KItemListWidget::setColumnWidth(const QByteArray& role, qreal width) } } -qreal KItemListWidget::columnWidth(const QByteArray& role) const +qreal KItemListWidget::columnWidth(const QByteArray &role) const { return m_columnWidths.value(role); } -qreal KItemListWidget::leadingPadding() const { - return m_leadingPadding; +qreal KItemListWidget::sidePadding() const +{ + return m_sidePadding; } -void KItemListWidget::setLeadingPadding(qreal width) { - if (m_leadingPadding != width){ - m_leadingPadding = width; - leadingPaddingChanged(width); +void KItemListWidget::setSidePadding(qreal width) +{ + if (m_sidePadding != width) { + m_sidePadding = width; + sidePaddingChanged(width); update(); } } -void KItemListWidget::setStyleOption(const KItemListStyleOption& option) +void KItemListWidget::setStyleOption(const KItemListStyleOption &option) { if (m_styleOption == option) { return; @@ -206,7 +202,7 @@ void KItemListWidget::setStyleOption(const KItemListStyleOption& option) update(); } -const KItemListStyleOption& KItemListWidget::styleOption() const +const KItemListStyleOption &KItemListWidget::styleOption() const { return m_styleOption; } @@ -307,7 +303,7 @@ bool KItemListWidget::expansionAreaHovered() const return m_expansionAreaHovered; } -void KItemListWidget::setHoverPosition(const QPointF& pos) +void KItemListWidget::setHoverPosition(const QPointF &pos) { if (m_selectionToggle) { m_selectionToggle->setHovered(selectionToggleRect().contains(pos)); @@ -332,6 +328,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,7 +348,7 @@ bool KItemListWidget::enabledSelectionToggle() const return m_enabledSelectionToggle; } -void KItemListWidget::setSiblingsInformation(const QBitArray& siblings) +void KItemListWidget::setSiblingsInformation(const QBitArray &siblings) { const QBitArray previous = m_siblingsInfo; m_siblingsInfo = siblings; @@ -354,7 +361,7 @@ QBitArray KItemListWidget::siblingsInformation() const return m_siblingsInfo; } -void KItemListWidget::setEditedRole(const QByteArray& role) +void KItemListWidget::setEditedRole(const QByteArray &role) { if (m_editedRole != role) { const QByteArray previous = m_editedRole; @@ -368,16 +375,27 @@ QByteArray KItemListWidget::editedRole() const return m_editedRole; } -bool KItemListWidget::contains(const QPointF& point) const +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)) { return false; } - return iconRect().contains(point) || - textRect().contains(point) || - expansionToggleRect().contains(point) || - selectionToggleRect().contains(point); + return iconRect().contains(point) || textRect().contains(point) || expansionToggleRect().contains(point) || selectionToggleRect().contains(point); } QRectF KItemListWidget::textFocusRect() const @@ -395,8 +413,7 @@ QRectF KItemListWidget::expansionToggleRect() const return QRectF(); } -QPixmap KItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem* option, - QWidget* widget) +QPixmap KItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem *option, QWidget *widget) { QPixmap pixmap(size().toSize() * widget->devicePixelRatio()); pixmap.setDevicePixelRatio(widget->devicePixelRatio()); @@ -420,39 +437,38 @@ QPixmap KItemListWidget::createDragPixmap(const QStyleOptionGraphicsItem* option return pixmap; } -void KItemListWidget::dataChanged(const QHash& current, - const QSet& roles) +void KItemListWidget::dataChanged(const QHash ¤t, const QSet &roles) { Q_UNUSED(current) Q_UNUSED(roles) } -void KItemListWidget::visibleRolesChanged(const QList& current, - const QList& previous) +void KItemListWidget::visibleRolesChanged(const QList ¤t, const QList &previous) { Q_UNUSED(current) Q_UNUSED(previous) } -void KItemListWidget::columnWidthChanged(const QByteArray& role, - qreal current, - qreal previous) +void KItemListWidget::columnWidthChanged(const QByteArray &role, qreal current, qreal previous) { Q_UNUSED(role) Q_UNUSED(current) Q_UNUSED(previous) } -void KItemListWidget::leadingPaddingChanged(qreal width) +void KItemListWidget::sidePaddingChanged(qreal width) { Q_UNUSED(width) } -void KItemListWidget::styleOptionChanged(const KItemListStyleOption& current, - const KItemListStyleOption& previous) +void KItemListWidget::styleOptionChanged(const KItemListStyleOption ¤t, 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) @@ -475,25 +491,31 @@ void KItemListWidget::alternateBackgroundChanged(bool enabled) Q_UNUSED(enabled) } -void KItemListWidget::siblingsInformationChanged(const QBitArray& current, const QBitArray& previous) +void KItemListWidget::siblingsInformationChanged(const QBitArray ¤t, const QBitArray &previous) +{ + Q_UNUSED(current) + Q_UNUSED(previous) +} + +void KItemListWidget::editedRoleChanged(const QByteArray ¤t, const QByteArray &previous) { Q_UNUSED(current) Q_UNUSED(previous) } -void KItemListWidget::editedRoleChanged(const QByteArray& current, const QByteArray& previous) +void KItemListWidget::iconSizeChanged(int current, int previous) { Q_UNUSED(current) Q_UNUSED(previous) } -void KItemListWidget::resizeEvent(QGraphicsSceneResizeEvent* event) +void KItemListWidget::resizeEvent(QGraphicsSceneResizeEvent *event) { QGraphicsWidget::resizeEvent(event); clearHoverCache(); if (m_selectionToggle) { - const QRectF& toggleRect = selectionToggleRect(); + const QRectF &toggleRect = selectionToggleRect(); m_selectionToggle->setPos(toggleRect.topLeft()); m_selectionToggle->resize(toggleRect.size()); } @@ -572,7 +594,7 @@ void KItemListWidget::clearHoverCache() m_hoverCache = nullptr; } -void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QStyle::State styleState) +void KItemListWidget::drawItemStyleOption(QPainter *painter, QWidget *widget, QStyle::State styleState) { QStyleOptionViewItem viewItemOption; initStyleOption(&viewItemOption); @@ -583,3 +605,4 @@ void KItemListWidget::drawItemStyleOption(QPainter* painter, QWidget* widget, QS style()->drawPrimitive(QStyle::PE_PanelItemViewItem, &viewItemOption, painter, widget); } +#include "moc_kitemlistwidget.cpp"