X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/67ebd66f94356b4e66005b1072919cb7b5e858bb..99cc976a8564cbdae63e4261fcb2292a33148dbc:/src/kitemviews/kitemlistwidget.cpp diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index fce06a53f..69a38432a 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -11,6 +11,9 @@ #include "kitemlistview.h" #include "private/kitemlistselectiontoggle.h" +#include +#include + #include #include #include @@ -41,9 +44,11 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* informant, QGraphicsI m_hoverOpacity(0), m_hoverCache(nullptr), m_hoverAnimation(nullptr), + m_hoverSequenceIndex(0), m_selectionToggle(nullptr), m_editedRole() { + connect(&m_hoverSequenceTimer, &QTimer::timeout, this, &KItemListWidget::slotHoverSequenceTimerTimeout); } KItemListWidget::~KItemListWidget() @@ -80,7 +85,7 @@ void KItemListWidget::setData(const QHash& data, m_data = data; dataChanged(m_data); } else { - foreach (const QByteArray& role, roles) { + for (const QByteArray& role : roles) { m_data[role] = data[role]; } dataChanged(m_data, roles); @@ -240,6 +245,8 @@ void KItemListWidget::setHovered(bool hovered) } m_hoverAnimation->stop(); + m_hoverSequenceIndex = 0; + if (hovered) { const qreal startValue = qMax(hoverOpacity(), qreal(0.1)); m_hoverAnimation->setStartValue(startValue); @@ -247,9 +254,19 @@ void KItemListWidget::setHovered(bool hovered) if (m_enabledSelectionToggle && !(QApplication::mouseButtons() & Qt::LeftButton)) { initializeSelectionToggle(); } + + hoverSequenceStarted(); + + const KConfigGroup globalConfig(KSharedConfig::openConfig(), "PreviewSettings"); + const int interval = globalConfig.readEntry("HoverSequenceInterval", 700); + + m_hoverSequenceTimer.start(interval); } else { m_hoverAnimation->setStartValue(hoverOpacity()); m_hoverAnimation->setEndValue(0.0); + + hoverSequenceEnded(); + m_hoverSequenceTimer.stop(); } m_hoverAnimation->start(); @@ -450,11 +467,29 @@ void KItemListWidget::resizeEvent(QGraphicsSceneResizeEvent* event) } } +void KItemListWidget::hoverSequenceStarted() +{ +} + +void KItemListWidget::hoverSequenceIndexChanged(int sequenceIndex) +{ + Q_UNUSED(sequenceIndex); +} + +void KItemListWidget::hoverSequenceEnded() +{ +} + qreal KItemListWidget::hoverOpacity() const { return m_hoverOpacity; } +int KItemListWidget::hoverSequenceIndex() const +{ + return m_hoverSequenceIndex; +} + void KItemListWidget::slotHoverAnimationFinished() { if (!m_hovered && m_selectionToggle) { @@ -463,6 +498,12 @@ void KItemListWidget::slotHoverAnimationFinished() } } +void KItemListWidget::slotHoverSequenceTimerTimeout() +{ + m_hoverSequenceIndex++; + hoverSequenceIndexChanged(m_hoverSequenceIndex); +} + void KItemListWidget::initializeSelectionToggle() { Q_ASSERT(m_enabledSelectionToggle);