KWin
Loading...
Searching...
No Matches
effecttogglablestate.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2023 Aleix Pol Gonzalez <aleixpol@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#pragma once
8
9#include "effect/globals.h"
10
11#include <QAction>
12#include <QObject>
13
14namespace KWin
15{
16
17class Effect;
18
24class KWIN_EXPORT EffectTogglableState : public QObject
25{
26 Q_OBJECT
27public:
28 enum class Status {
29 Inactive,
30 Activating,
31 Deactivating,
32 Active,
33 Stopped
34 };
35 Q_ENUM(Status)
36
37
39
40 bool inProgress() const;
41 void setInProgress(bool gesture);
42
44 {
45 return m_partialActivationFactor;
46 }
47 void setPartialActivationFactor(qreal factor);
48
49 QAction *activateAction() const
50 {
51 return m_activateAction.get();
52 }
53 QAction *deactivateAction() const
54 {
55 return m_deactivateAction.get();
56 }
57 QAction *toggleAction() const
58 {
59 return m_toggleAction.get();
60 }
61
62 void activate();
63 void deactivate();
64 void toggle();
65 void stop();
66 void setStatus(Status status);
67 Status status() const
68 {
69 return m_status;
70 }
71
72Q_SIGNALS:
75 void activated();
77 void statusChanged(Status status);
78
79protected:
80 std::function<void(qreal progress)> progressCallback();
81 std::function<void(qreal progress)> regressCallback();
82 void setProgress(qreal progress);
83
85 void setRegress(qreal regress);
86
87private:
88 void partialActivate(qreal factor);
89 void partialDeactivate(qreal factor);
90
91 std::unique_ptr<QAction> m_deactivateAction;
92 std::unique_ptr<QAction> m_activateAction;
93 std::unique_ptr<QAction> m_toggleAction;
94 Status m_status = Status::Inactive;
95 bool m_inProgress = false;
96 qreal m_partialActivationFactor = 0;
97
100};
101
102class KWIN_EXPORT EffectTogglableGesture : public QObject
103{
104public:
113
114 void addTouchpadPinchGesture(PinchDirection dir, uint fingerCount);
115 void addTouchpadSwipeGesture(SwipeDirection dir, uint fingerCount);
116 void addTouchscreenSwipeGesture(SwipeDirection direction, uint fingerCount);
117
118private:
119 EffectTogglableState *const m_state;
120};
121
122class KWIN_EXPORT EffectTogglableTouchBorder : public QObject
123{
124public:
132
133 void setBorders(const QList<int> &borders);
134
135private:
136 QList<ElectricBorder> m_touchBorderActivate;
137 EffectTogglableState *const m_state;
138};
139
140}
Base class for all KWin effects.
Definition effect.h:535
void statusChanged(Status status)
PinchDirection
Definition globals.h:123
SwipeDirection
Directions for swipe gestures.
Definition globals.h:115