]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Using the gesture recognizer from KWidgetsAddons
authorSteffen Hartleib <sh033@gmx.de>
Wed, 23 Mar 2022 22:00:31 +0000 (22:00 +0000)
committerNate Graham <nate@kde.org>
Wed, 23 Mar 2022 22:00:31 +0000 (22:00 +0000)
Using the gesture recognizer from KWidgetsAddons, so that the source code for the gestures is only in one place

CMakeLists.txt
src/CMakeLists.txt
src/kitemviews/kitemlistcontroller.cpp
src/kitemviews/private/ktwofingerswipe.cpp [deleted file]
src/kitemviews/private/ktwofingerswipe.h [deleted file]
src/kitemviews/private/ktwofingertap.cpp [deleted file]
src/kitemviews/private/ktwofingertap.h [deleted file]

index e19f6c233095c1339f2eb36b027043371259198b..ae9507ef6d257cc14ac9df0e78b13b4904f9fbe0 100644 (file)
@@ -67,6 +67,7 @@ find_package(KF5 ${KF5_MIN_VERSION} REQUIRED COMPONENTS
     Notifications
     Crash
     WindowSystem
+    WidgetsAddons
 )
 
 find_package(KUserFeedback 1.2.0)
index 7f26ee3dccffa1e0d8905ac7cd27101c64e0f544..364f12a74d11c514c4cabb89aa232702e42125c0 100644 (file)
@@ -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)
index 2422e91109ba7bc35f62cb9bcdceaeb7fbe1312e..966dc822b530e3597279d8fa670fedafde0ad738 100644 (file)
 #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 (file)
index 6d0e18e..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <steffenhartleib@t-online.de>
- *
- * 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 (file)
index 6d64d8f..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <steffenhartleib@t-online.de>
- *
- * 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 (file)
index edd9d1d..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <steffenhartleib@t-online.de>
- *
- * 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 (file)
index 6d40990..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * SPDX-FileCopyrightText: 2020 Steffen Hartleib <steffenhartleib@t-online.de>
- *
- * 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 */