Deskflow 1.24.0.365
Keyboard and mouse sharing utility
Loading...
Searching...
No Matches
Action.h
Go to the documentation of this file.
1/*
2 * Deskflow -- mouse and keyboard sharing utility
3 * SPDX-FileCopyrightText: (C) 2025 Deskflow Developers
4 * SPDX-FileCopyrightText: (C) 2012 - 2016 Symless Ltd.
5 * SPDX-FileCopyrightText: (C) 2008 Volker Lanz <vl@fidra.de>
6 * SPDX-License-Identifier: GPL-2.0-only WITH LicenseRef-OpenSSL-Exception
7 */
8
9#pragma once
10
11#include "KeySequence.h"
12
13#include <QList>
14#include <QString>
15#include <QStringList>
16
17class ActionDialog;
18class QSettings;
19class QTextStream;
20
21namespace SettingsKeys {
22inline static const QString ActionType = QStringLiteral("type");
23inline static const QString ScreenNames = QStringLiteral("typeScreenNames");
24inline static const QString ScreenName = QStringLiteral("typeScreenName");
25inline static const QString SwitchToScreen = QStringLiteral("switchScreenName");
26inline static const QString SwitchDirection = QStringLiteral("switchInDirection");
27inline static const QString LockToScreen = QStringLiteral("lockCursorToScreen");
28inline static const QString ActiveOnRelease = QStringLiteral("activeOnRelease");
29inline static const QString HasScreens = QStringLiteral("hasScreens");
30inline static const QString RestartServer = QStringLiteral("restartServer");
31} // namespace SettingsKeys
32
33class Action
34{
35 friend class ActionDialog;
36 friend QTextStream &operator<<(QTextStream &outStream, const Action &action);
37
38public:
53 enum class SwitchDirection
54 {
59 };
60 enum class LockCursorMode
61 {
65 };
66
67public:
68 Action() = default;
69
70 QString text() const;
71 const KeySequence &keySequence() const
72 {
73 return m_keySequence;
74 }
75 void loadSettings(QSettings &settings);
76 void saveSettings(QSettings &settings) const;
77 int type() const
78 {
79 return m_type;
80 }
81 const QStringList &typeScreenNames() const
82 {
83 return m_typeScreenNames;
84 }
85 const QString &switchScreenName() const
86 {
87 return m_switchScreenName;
88 }
89 int switchDirection() const
90 {
91 return m_switchDirection;
92 }
93 int lockCursorMode() const
94 {
95 return m_lockCursorMode;
96 }
97 bool activeOnRelease() const
98 {
99 return m_activeOnRelease;
100 }
101 bool haveScreens() const
102 {
103 return m_hasScreens;
104 }
105 bool restartServer() const
106 {
107 return m_restartServer;
108 }
109
110 bool operator==(const Action &a) const = default;
111
112protected:
114 {
115 return m_keySequence;
116 }
118 {
119 m_keySequence = seq;
120 }
121 void setType(int t)
122 {
123 m_type = t;
124 }
125 QStringList &typeScreenNames()
126 {
127 return m_typeScreenNames;
128 }
129 void setSwitchScreenName(const QString &n)
130 {
131 m_switchScreenName = n;
132 }
134 {
135 m_switchDirection = d;
136 }
138 {
139 m_lockCursorMode = m;
140 }
142 {
143 m_activeOnRelease = b;
144 }
145 void setHaveScreens(bool b)
146 {
147 m_hasScreens = b;
148 }
149 void setRestartServer(bool b)
150 {
151 m_restartServer = b;
152 }
153
154private:
155 KeySequence m_keySequence;
156 int m_type = static_cast<int>(Type::keystroke);
157 QStringList m_typeScreenNames = QStringList();
158 QString m_switchScreenName = QString();
159 int m_switchDirection = static_cast<int>(SwitchDirection::left);
160 int m_lockCursorMode = static_cast<int>(LockCursorMode::toggle);
161 bool m_activeOnRelease = false;
162 bool m_hasScreens = false;
163 bool m_restartServer;
164
165 inline static const QString m_commandTemplate = QStringLiteral("(%1)");
166 inline static const QStringList m_actionTypeNames{
167 QStringLiteral("keyDown"),
168 QStringLiteral("keyUp"),
169 QStringLiteral("keystroke"),
170 QStringLiteral("switchToScreen"),
171 QStringLiteral("switchInDirection"),
172 QStringLiteral("switchToNextScreen"),
173 QStringLiteral("lockCursorToScreen"),
174 QStringLiteral("restartServer"),
175 QStringLiteral("mouseDown"),
176 QStringLiteral("mouseUp"),
177 QStringLiteral("mousebutton")
178 };
179
180 inline static const QStringList m_switchDirectionNames{
181 QStringLiteral("left"), QStringLiteral("right"), QStringLiteral("up"), QStringLiteral("down")
182 };
183
184 inline static const QStringList m_lockCursorModeNames{
185 QStringLiteral("toggle"), QStringLiteral("on"), QStringLiteral("off")
186 };
187};
188
189using ActionList = QList<Action>;
190
191QTextStream &operator<<(QTextStream &outStream, const Action &action);
QList< Action > ActionList
Definition Action.h:189
QTextStream & operator<<(QTextStream &outStream, const Action &action)
Definition Action.cpp:101
Definition ActionDialog.h:24
Definition Action.h:34
bool haveScreens() const
Definition Action.h:101
bool activeOnRelease() const
Definition Action.h:97
void setSwitchScreenName(const QString &n)
Definition Action.h:129
LockCursorMode
Definition Action.h:61
@ off
Definition Action.h:64
@ toggle
Definition Action.h:62
@ on
Definition Action.h:63
const QStringList & typeScreenNames() const
Definition Action.h:81
void setActiveOnRelease(bool b)
Definition Action.h:141
SwitchDirection
Definition Action.h:54
@ up
Definition Action.h:57
@ down
Definition Action.h:58
@ right
Definition Action.h:56
@ left
Definition Action.h:55
void setHaveScreens(bool b)
Definition Action.h:145
void loadSettings(QSettings &settings)
Definition Action.cpp:60
Type
Definition Action.h:40
@ switchToNextScreen
Definition Action.h:46
@ restartAllConnections
Definition Action.h:48
@ mousebutton
Definition Action.h:51
@ keyDown
Definition Action.h:41
@ mouseUp
Definition Action.h:50
@ switchToScreen
Definition Action.h:44
@ mouseDown
Definition Action.h:49
@ lockCursorToScreen
Definition Action.h:47
@ switchInDirection
Definition Action.h:45
@ keystroke
Definition Action.h:43
@ keyUp
Definition Action.h:42
void setLockCursorMode(int m)
Definition Action.h:137
QStringList & typeScreenNames()
Definition Action.h:125
const QString & switchScreenName() const
Definition Action.h:85
friend class ActionDialog
Definition Action.h:35
int lockCursorMode() const
Definition Action.h:93
void setType(int t)
Definition Action.h:121
void setKeySequence(const KeySequence &seq)
Definition Action.h:117
KeySequence & keySequence()
Definition Action.h:113
void saveSettings(QSettings &settings) const
Definition Action.cpp:81
int switchDirection() const
Definition Action.h:89
friend QTextStream & operator<<(QTextStream &outStream, const Action &action)
Definition Action.cpp:101
int type() const
Definition Action.h:77
bool operator==(const Action &a) const =default
QString text() const
Definition Action.cpp:14
void setSwitchDirection(int d)
Definition Action.h:133
const KeySequence & keySequence() const
Definition Action.h:71
Action()=default
void setRestartServer(bool b)
Definition Action.h:149
bool restartServer() const
Definition Action.h:105
Definition KeySequence.h:16
Definition Action.h:21
static const QString SwitchToScreen
Definition Action.h:25
static const QString HasScreens
Definition Action.h:29
static const QString ActiveOnRelease
Definition Action.h:28
static const QString LockToScreen
Definition Action.h:27
static const QString ActionType
Definition Action.h:22
static const QString RestartServer
Definition Action.h:30
static const QString ScreenName
Definition Action.h:24
static const QString SwitchDirection
Definition Action.h:26
static const QString ScreenNames
Definition Action.h:23