X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/37deaaef2c39a4c4b410cd0313a55a4072d2b2ff..ca0d0bb322925e2119f13f76d8e9643d24cbf3e0:/src/kitemviews/kitemlistwidget.cpp diff --git a/src/kitemviews/kitemlistwidget.cpp b/src/kitemviews/kitemlistwidget.cpp index 42bf9ebdc..5541aa9f8 100644 --- a/src/kitemviews/kitemlistwidget.cpp +++ b/src/kitemviews/kitemlistwidget.cpp @@ -1,29 +1,19 @@ -/*************************************************************************** - * Copyright (C) 2011 by Peter Penz * - * * - * Based on the Itemviews NG project from Trolltech Labs * - * * - * This program is free software; you can redistribute it and/or modify * - * it under the terms of the GNU General Public License as published by * - * the Free Software Foundation; either version 2 of the License, or * - * (at your option) any later version. * - * * - * This program is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU General Public License for more details. * - * * - * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * - ***************************************************************************/ +/* + * SPDX-FileCopyrightText: 2011 Peter Penz + * + * Based on the Itemviews NG project from Trolltech Labs + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ #include "kitemlistwidget.h" #include "kitemlistview.h" #include "private/kitemlistselectiontoggle.h" +#include +#include + #include #include #include @@ -44,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(), @@ -54,9 +45,12 @@ KItemListWidget::KItemListWidget(KItemListWidgetInformant* informant, QGraphicsI m_hoverOpacity(0), m_hoverCache(nullptr), m_hoverAnimation(nullptr), + m_hoverSequenceIndex(0), m_selectionToggle(nullptr), - m_editedRole() + m_editedRole(), + m_iconSize(-1) { + connect(&m_hoverSequenceTimer, &QTimer::timeout, this, &KItemListWidget::slotHoverSequenceTimerTimeout); } KItemListWidget::~KItemListWidget() @@ -93,7 +87,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); @@ -188,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) { @@ -253,6 +259,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); @@ -260,9 +268,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(); @@ -276,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) { @@ -337,6 +369,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)) { @@ -412,11 +458,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) @@ -451,6 +506,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); @@ -463,11 +524,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) { @@ -476,6 +555,12 @@ void KItemListWidget::slotHoverAnimationFinished() } } +void KItemListWidget::slotHoverSequenceTimerTimeout() +{ + m_hoverSequenceIndex++; + hoverSequenceIndexChanged(m_hoverSequenceIndex); +} + void KItemListWidget::initializeSelectionToggle() { Q_ASSERT(m_enabledSelectionToggle);