diff options
| author | David Lerch <[email protected]> | 2021-01-30 12:11:22 +0100 |
|---|---|---|
| committer | Elvis Angelaccio <[email protected]> | 2021-07-04 10:24:07 +0000 |
| commit | aba4462e0238d6075e8822d56a78372eacfa7d2e (patch) | |
| tree | 1b735f8959036ff66568ad209416d3b1362bff7f /src/kitemviews/kitemlistwidget.cpp | |
| parent | 8048e6ed1bee096fb82fa2335d533779c89c809a (diff) | |
Add support for hover sequence thumbnails (via ThumbSequenceCreator)
This shows a slideshow of thumbs when the user hovers a file item.
Diffstat (limited to 'src/kitemviews/kitemlistwidget.cpp')
| -rw-r--r-- | src/kitemviews/kitemlistwidget.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index b4c14c1a7..69a38432a 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -11,6 +11,9 @@ #include "kitemlistview.h" #include "private/kitemlistselectiontoggle.h" +#include <KConfigGroup> +#include <KSharedConfig> + #include <QApplication> #include <QPainter> #include <QPropertyAnimation> @@ -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() @@ -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); |
