┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSteffen Hartleib <[email protected]>2022-03-23 22:00:31 +0000
committerNate Graham <[email protected]>2022-03-23 22:00:31 +0000
commitf509d41baf326d59d9a71a56628ae282ae58511b (patch)
tree5c5d974e2c61c072249b51d92a320786cd371d05 /src
parent45af4bc0e09ebacca4d7f8177dd5dc0a5fd109cd (diff)
Using the gesture recognizer from KWidgetsAddons
Using the gesture recognizer from KWidgetsAddons, so that the source code for the gestures is only in one place
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt3
-rw-r--r--src/kitemviews/kitemlistcontroller.cpp5
-rw-r--r--src/kitemviews/private/ktwofingerswipe.cpp139
-rw-r--r--src/kitemviews/private/ktwofingerswipe.h54
-rw-r--r--src/kitemviews/private/ktwofingertap.cpp122
-rw-r--r--src/kitemviews/private/ktwofingertap.h48
6 files changed, 4 insertions, 367 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7f26ee3dc..364f12a74 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -92,8 +92,6 @@ target_sources(dolphinprivate PRIVATE
kitemviews/private/kitemlistviewanimation.cpp
kitemviews/private/kitemlistviewlayouter.cpp
kitemviews/private/kpixmapmodifier.cpp
- kitemviews/private/ktwofingerswipe.cpp
- kitemviews/private/ktwofingertap.cpp
settings/applyviewpropsjob.cpp
settings/viewmodes/viewmodesettings.cpp
settings/viewpropertiesdialog.cpp
@@ -159,6 +157,7 @@ target_link_libraries(
KF5::NewStuff
KF5::Parts
KF5::WindowSystem
+ KF5::WidgetsAddons
)
if(HAVE_BALOO)
diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp
index 2422e9110..966dc822b 100644
--- a/src/kitemviews/kitemlistcontroller.cpp
+++ b/src/kitemviews/kitemlistcontroller.cpp
@@ -13,10 +13,11 @@
#include "kitemlistview.h"
#include "private/kitemlistkeyboardsearchmanager.h"
#include "private/kitemlistrubberband.h"
-#include "private/ktwofingerswipe.h"
-#include "private/ktwofingertap.h"
#include "views/draganddrophelper.h"
+#include <KTwoFingerSwipe>
+#include <KTwoFingerTap>
+
#include <QAccessible>
#include <QApplication>
#include <QDrag>
diff --git a/src/kitemviews/private/ktwofingerswipe.cpp b/src/kitemviews/private/ktwofingerswipe.cpp
deleted file mode 100644
index 6d0e18e65..000000000
--- a/src/kitemviews/private/ktwofingerswipe.cpp
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-// Self
-#include "ktwofingerswipe.h"
-
-// Qt
-#include <QTouchEvent>
-#include <QLineF>
-
-KTwoFingerSwipeRecognizer::KTwoFingerSwipeRecognizer() :
- QGestureRecognizer(),
- m_touchBeginnTimestamp(0),
- m_gestureAlreadyTriggered(false)
-{
-}
-
-KTwoFingerSwipeRecognizer::~KTwoFingerSwipeRecognizer()
-{
-}
-
-QGesture* KTwoFingerSwipeRecognizer::create(QObject*)
-{
- return static_cast<QGesture*>(new KTwoFingerSwipe());
-}
-
-QGestureRecognizer::Result KTwoFingerSwipeRecognizer::recognize(QGesture* gesture, QObject* watched, QEvent* event)
-{
- Q_UNUSED(watched)
-
- KTwoFingerSwipe* const kTwoFingerSwipe = static_cast<KTwoFingerSwipe*>(gesture);
- const QTouchEvent* touchEvent = static_cast<const QTouchEvent*>(event);
-
- const int maxTimeFrameForSwipe = 90;
- const int minDistanceForSwipe = 30;
-
- switch (event->type()) {
- case QEvent::TouchBegin: {
- m_touchBeginnTimestamp = touchEvent->timestamp();
- m_gestureAlreadyTriggered = false;
- kTwoFingerSwipe->setHotSpot(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerSwipe->setPos(touchEvent->touchPoints().first().startPos());
- kTwoFingerSwipe->setScreenPos(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerSwipe->setScenePos(touchEvent->touchPoints().first().startScenePos());
- return MayBeGesture;
- }
-
- case QEvent::TouchUpdate: {
- const qint64 now = touchEvent->timestamp();
- const qint64 elapsedTime = now - m_touchBeginnTimestamp;
- const QPointF distance = touchEvent->touchPoints().first().startPos() - touchEvent->touchPoints().first().pos();
- kTwoFingerSwipe->setHotSpot(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerSwipe->setPos(touchEvent->touchPoints().first().startPos());
- kTwoFingerSwipe->setScreenPos(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerSwipe->setScenePos(touchEvent->touchPoints().first().startScenePos());
- const QLineF ql = QLineF(touchEvent->touchPoints().first().startPos(), touchEvent->touchPoints().first().pos());
- kTwoFingerSwipe->setSwipeAngle(ql.angle());
-
- if (touchEvent->touchPoints().size() > 2) {
- return CancelGesture;
- }
-
- if (touchEvent->touchPoints().size() == 2) {
- if ((elapsedTime) > maxTimeFrameForSwipe) {
- return CancelGesture;
- }
-
- if (distance.manhattanLength() >= minDistanceForSwipe &&
- (elapsedTime) <= maxTimeFrameForSwipe && !m_gestureAlreadyTriggered) {
- m_gestureAlreadyTriggered = true;
- return FinishGesture;
- } else if ((elapsedTime) <= maxTimeFrameForSwipe && !m_gestureAlreadyTriggered) {
- return TriggerGesture;
- }
- }
- break;
- }
-
- default:
- return Ignore;
- }
- return Ignore;
-}
-
-KTwoFingerSwipe::KTwoFingerSwipe(QObject* parent) :
- QGesture(parent),
- m_pos(QPointF(-1, -1)),
- m_screenPos(QPointF(-1, -1)),
- m_scenePos(QPointF(-1, -1)),
- m_swipeAngle(0.0)
-{
-}
-
-KTwoFingerSwipe::~KTwoFingerSwipe()
-{
-}
-
-QPointF KTwoFingerSwipe::pos() const
-{
- return m_pos;
-}
-
-void KTwoFingerSwipe::setPos(QPointF _pos)
-{
- m_pos = _pos;
-}
-
-QPointF KTwoFingerSwipe::screenPos() const
-{
- return m_screenPos;
-}
-
-void KTwoFingerSwipe::setScreenPos(QPointF _screenPos)
-{
- m_screenPos = _screenPos;
-}
-
-QPointF KTwoFingerSwipe::scenePos() const
-{
- return m_scenePos;
-}
-
-void KTwoFingerSwipe::setScenePos(QPointF _scenePos)
-{
- m_scenePos = _scenePos;
-}
-
-qreal KTwoFingerSwipe::swipeAngle() const
-{
- return m_swipeAngle;
-}
- void KTwoFingerSwipe::setSwipeAngle(qreal _swipeAngle)
-{
- m_swipeAngle = _swipeAngle;
-}
-
diff --git a/src/kitemviews/private/ktwofingerswipe.h b/src/kitemviews/private/ktwofingerswipe.h
deleted file mode 100644
index 6d64d8ff7..000000000
--- a/src/kitemviews/private/ktwofingerswipe.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef KTWOFINGERSWIPE_H
-#define KTWOFINGERSWIPE_H
-
-#include "dolphin_export.h"
-// Qt
-#include <QGesture>
-#include <QGestureRecognizer>
-
-class DOLPHIN_EXPORT KTwoFingerSwipe : public QGesture
-{
- Q_OBJECT
- Q_PROPERTY(QPointF pos READ pos WRITE setPos)
- Q_PROPERTY(QPointF screenPos READ screenPos WRITE setScreenPos)
- Q_PROPERTY(QPointF scenePos READ scenePos WRITE setScenePos)
- Q_PROPERTY(qreal swipeAngle READ swipeAngle WRITE setSwipeAngle)
-public:
- explicit KTwoFingerSwipe(QObject* parent = nullptr);
- ~KTwoFingerSwipe() override;
- QPointF pos() const;
- void setPos(QPointF pos);
- QPointF screenPos() const;
- void setScreenPos(QPointF screenPos);
- QPointF scenePos() const;
- void setScenePos(QPointF scenePos);
- qreal swipeAngle() const;
- void setSwipeAngle(qreal swipeAngle);
-private:
- QPointF m_pos;
- QPointF m_screenPos;
- QPointF m_scenePos;
- qreal m_swipeAngle;
-};
-
-class DOLPHIN_EXPORT KTwoFingerSwipeRecognizer : public QGestureRecognizer
-{
-public:
- explicit KTwoFingerSwipeRecognizer();
- ~KTwoFingerSwipeRecognizer() override;
- QGesture* create(QObject*) override;
- Result recognize(QGesture*, QObject*, QEvent*) override;
-private:
- Q_DISABLE_COPY( KTwoFingerSwipeRecognizer )
- qint64 m_touchBeginnTimestamp;
- bool m_gestureAlreadyTriggered;
-};
-
-#endif /* KTWOFINGERSWIPE_H */
-
diff --git a/src/kitemviews/private/ktwofingertap.cpp b/src/kitemviews/private/ktwofingertap.cpp
deleted file mode 100644
index edd9d1d35..000000000
--- a/src/kitemviews/private/ktwofingertap.cpp
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-// Self
-#include "ktwofingertap.h"
-
-// Qt
-#include <QTouchEvent>
-#include <QApplication>
-#include <QGraphicsWidget>
-
-KTwoFingerTapRecognizer::KTwoFingerTapRecognizer() :
- QGestureRecognizer(),
- m_gestureTriggered(false)
-{
-}
-
-KTwoFingerTapRecognizer::~KTwoFingerTapRecognizer()
-{
-}
-
-QGesture* KTwoFingerTapRecognizer::create(QObject*)
-{
- return static_cast<QGesture*>(new KTwoFingerTap());
-}
-
-QGestureRecognizer::Result KTwoFingerTapRecognizer::recognize(QGesture* gesture, QObject* watched, QEvent* event)
-{
- if (qobject_cast<QGraphicsWidget*>(watched)) {
- return Ignore;
- }
-
- KTwoFingerTap* const kTwoFingerTap = static_cast<KTwoFingerTap*>(gesture);
- const QTouchEvent* touchEvent = static_cast<const QTouchEvent*>(event);
-
- switch (event->type()) {
- case QEvent::TouchBegin: {
- kTwoFingerTap->setHotSpot(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerTap->setPos(touchEvent->touchPoints().first().startPos());
- kTwoFingerTap->setScreenPos(touchEvent->touchPoints().first().startScreenPos());
- kTwoFingerTap->setScenePos(touchEvent->touchPoints().first().startScenePos());
- m_gestureTriggered = false;
- return MayBeGesture;
- }
-
- case QEvent::TouchUpdate: {
-
- if (touchEvent->touchPoints().size() > 2) {
- m_gestureTriggered = false;
- return CancelGesture;
- }
-
- if (touchEvent->touchPoints().size() == 2) {
- if ((touchEvent->touchPoints().first().startPos() - touchEvent->touchPoints().first().pos()).manhattanLength() >= QApplication::startDragDistance()) {
- m_gestureTriggered = false;
- return CancelGesture;
- }
- if ((touchEvent->touchPoints().at(1).startPos() - touchEvent->touchPoints().at(1).pos()).manhattanLength() >= QApplication::startDragDistance()) {
- m_gestureTriggered = false;
- return CancelGesture;
- }
- if (touchEvent->touchPointStates() & Qt::TouchPointPressed) {
- m_gestureTriggered = true;
- }
- if (touchEvent->touchPointStates() & Qt::TouchPointReleased && m_gestureTriggered) {
- m_gestureTriggered = false;
- return FinishGesture;
- }
- }
- break;
- }
-
- default:
- return Ignore;
- }
- return Ignore;
-}
-
-KTwoFingerTap::KTwoFingerTap(QObject* parent) :
- QGesture(parent),
- m_pos(QPointF(-1, -1)),
- m_screenPos(QPointF(-1, -1)),
- m_scenePos(QPointF(-1, -1))
-{
-}
-
-KTwoFingerTap::~KTwoFingerTap()
-{
-}
-
-QPointF KTwoFingerTap::pos() const
-{
- return m_pos;
-}
-
-void KTwoFingerTap::setPos(QPointF _pos)
-{
- m_pos = _pos;
-}
-
-QPointF KTwoFingerTap::screenPos() const
-{
- return m_screenPos;
-}
-
-void KTwoFingerTap::setScreenPos(QPointF _screenPos)
-{
- m_screenPos = _screenPos;
-}
-
-QPointF KTwoFingerTap::scenePos() const
-{
- return m_scenePos;
-}
-
-void KTwoFingerTap::setScenePos(QPointF _scenePos)
-{
- m_scenePos = _scenePos;
-}
diff --git a/src/kitemviews/private/ktwofingertap.h b/src/kitemviews/private/ktwofingertap.h
deleted file mode 100644
index 6d409900b..000000000
--- a/src/kitemviews/private/ktwofingertap.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <[email protected]>
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- */
-
-#ifndef KTWOFINGERTAP_H
-#define KTWOFINGERTAP_H
-
-#include <dolphin_export.h>
-// Qt
-#include <QGesture>
-#include <QGestureRecognizer>
-
-class DOLPHIN_EXPORT KTwoFingerTap : public QGesture
-{
- Q_OBJECT
- Q_PROPERTY(QPointF pos READ pos WRITE setPos)
- Q_PROPERTY(QPointF screenPos READ screenPos WRITE setScreenPos)
- Q_PROPERTY(QPointF scenePos READ scenePos WRITE setScenePos)
-public:
- explicit KTwoFingerTap(QObject* parent = nullptr);
- ~KTwoFingerTap() override;
- QPointF pos() const;
- void setPos(QPointF pos);
- QPointF screenPos() const;
- void setScreenPos(QPointF screenPos);
- QPointF scenePos() const;
- void setScenePos(QPointF scenePos);
-private:
- QPointF m_pos;
- QPointF m_screenPos;
- QPointF m_scenePos;
-};
-
-class DOLPHIN_EXPORT KTwoFingerTapRecognizer : public QGestureRecognizer
-{
-public:
- explicit KTwoFingerTapRecognizer();
- ~KTwoFingerTapRecognizer() override;
- QGesture* create(QObject*) override;
- Result recognize(QGesture*, QObject*, QEvent*) override;
-private:
- Q_DISABLE_COPY(KTwoFingerTapRecognizer)
- bool m_gestureTriggered;
-};
-
-#endif /* KTWOFINGERTAP_H */