Files
RedBear-OS/local/recipes/kde/kf6-kwidgetsaddons/source/src/ktwofingertap.h
T
2026-04-14 10:51:06 +01:00

150 lines
3.7 KiB
C++

/*
This file is part of the KDE project
SPDX-FileCopyrightText: 2021 Steffen Hartleib <steffenhartleib@t-online.de>
SPDX-License-Identifier: LGPL-2.1-or-later
*/
#ifndef KTWOFINGERTAP_H
#define KTWOFINGERTAP_H
#include <kwidgetsaddons_export.h>
#include <QGesture>
#include <QGestureRecognizer>
#include <memory>
/**
* @class KTwoFingerTap ktwofingertap.h KTwoFingerTap
*
* @short A two finger tap gesture.
*
* Provides a class for a two finger tap gesture.
*
* Note: The QGestureManager need a QMainwindow, to delivery the gesture.
*
* @since 5.83
* @author Steffen Hartleib <steffenhartleib@t-online.de>
*/
class KWIDGETSADDONS_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:
/**
* The constructor.
*/
explicit KTwoFingerTap(QObject *parent = nullptr);
/**
* Destructor
*/
~KTwoFingerTap() override;
/**
* The position of the gesture, relative to the widget that received the gesture.
*
* Note: This is not necessarily the same position as in the widget that grabGesture() uses.
*
* @return The position of the gesture.
*/
Q_REQUIRED_RESULT QPointF pos() const;
/**
* Sets the position, relative to the widget.
*
* @param pos The position.
*/
void setPos(QPointF pos);
/**
* Sets the screen position.
*
* @param screenPos The screen position.
*/
Q_REQUIRED_RESULT QPointF screenPos() const;
/**
* @return The start scene position of the gesture.
*/
void setScreenPos(QPointF screenPos);
/**
* @return The start scene position of the gesture.
*/
Q_REQUIRED_RESULT QPointF scenePos() const;
/**
* Sets the scene position.
*
* @param scenePos The scene position, identical to the screen position for widgets.
*/
void setScenePos(QPointF scenePos);
private:
std::unique_ptr<class KTwoFingerTapPrivate> const d;
};
/**
* @class KTwoFingerTapRecognizer ktwofingertaprecognizer.h KTwoFingerTapRecognizer
*
* @short The recognizer for a two finger tap gesture.
*
* Provides the recognizer for a two finger tap gesture.
*
* @since 5.83
* @author Steffen Hartleib <steffenhartleib@t-online.de>
*/
class KWIDGETSADDONS_EXPORT KTwoFingerTapRecognizer : public QGestureRecognizer
{
public:
/**
* The constructor.
*/
KTwoFingerTapRecognizer();
/**
* Destructor
*/
~KTwoFingerTapRecognizer() override;
/**
* Qt called this member to create a new QGesture object.
*
* @param target The target for the gesture.
*
* @return The new QGesture object.
*/
QGesture* create(QObject *target) override;
/**
* Handles the given event for the watched object and update the gesture object.
*
* @param gesture The gesture object.
* @param watched The watched object.
* @param event The event.
*
* @return The result reflects how much of the gesture has been recognized.
*/
Result recognize(QGesture *gesture, QObject *watched, QEvent *event) override;
/**
* @return The maximum wiggle room for a touch point.
*/
Q_REQUIRED_RESULT int tapRadius() const;
/**
* Set the maximum wiggle room for a touch point. If @param i is negative, it will be set to null.
*
* @param i The maximum wiggle room.
*/
void setTapRadius(int i);
private:
std::unique_ptr<class KTwoFingerTapRecognizerPrivate> const d;
Q_DISABLE_COPY(KTwoFingerTapRecognizer)
};
#endif