Deskflow 1.26.0.418
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 - 2026 Deskflow Developers
4 * SPDX-FileCopyrightText: (C) 2012 - 2016 Synergy App 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 "common/KeySequence.h"
12
13#include <QList>
14#include <QString>
15#include <QStringList>
16
17class QSettings;
18class QTextStream;
19
21{
22 inline static const QString ActionType = QStringLiteral("type");
23 inline static const QString ScreenNames = QStringLiteral("typeScreenNames");
24 inline static const QString ScreenName = QStringLiteral("typeScreenName");
25 inline static const QString SwitchToScreen = QStringLiteral("switchScreenName");
26 inline static const QString SwitchDirection = QStringLiteral("switchInDirection");
27 inline static const QString LockToScreen = QStringLiteral("lockCursorToScreen");
28 inline static const QString ActiveOnRelease = QStringLiteral("activeOnRelease");
29 inline static const QString HasScreens = QStringLiteral("hasScreens");
30 inline static const QString RestartServer = QStringLiteral("restartServer");
31};
32
33class Action
34{
35
36public:
37 enum class Type
38 {
39 keyDown,
40 keyUp,
41 keystroke,
42 switchToScreen,
43 switchInDirection,
44 switchToNextScreen,
45 lockCursorToScreen,
46 restartAllConnections,
47 mouseDown,
48 mouseUp,
49 mousebutton,
50 };
51 enum class SwitchDirection
52 {
53 left,
54 right,
55 up,
56 down
57 };
58 enum class LockCursorMode
59 {
60 toggle,
61 on,
62 off
63 };
64
65public:
66 Action() = default;
67
68 QString text() const;
69
70 void loadSettings(QSettings &settings);
71 void saveSettings(QSettings &settings) const;
72
73 const KeySequence &keySequence() const;
74 void setKeySequence(const KeySequence &seq);
75
76 int type() const;
77 void setType(int t);
78
79 QStringList typeScreenNames() const;
80 void clearScreens();
81 void addScreen(const QString &screen);
82 void removeScreen(const QString &screen);
83
84 const QString &switchScreenName() const;
85 void setSwitchScreenName(const QString &n);
86
87 int switchDirection() const;
88 void setSwitchDirection(int d);
89
90 int lockCursorMode() const;
91 void setLockCursorMode(int m);
92
93 bool activeOnRelease() const;
94 void setActiveOnRelease(bool b);
95
96 bool haveScreens() const;
97 void setHaveScreens(bool b);
98
99 bool restartServer() const;
100 void setRestartServer(bool b);
101
102 bool operator==(const Action &a) const = default;
103
104private:
105 KeySequence m_keySequence;
106 int m_type = static_cast<int>(Type::keystroke);
107 QStringList m_typeScreenNames = QStringList();
108 QString m_switchScreenName = QString();
109 int m_switchDirection = static_cast<int>(SwitchDirection::left);
110 int m_lockCursorMode = static_cast<int>(LockCursorMode::toggle);
111 bool m_activeOnRelease = false;
112 bool m_hasScreens = false;
113 bool m_restartServer;
114
115 inline static const QString m_commandTemplate = QStringLiteral("(%1)");
116 inline static const QStringList m_actionTypeNames{
117 QStringLiteral("keyDown"),
118 QStringLiteral("keyUp"),
119 QStringLiteral("keystroke"),
120 QStringLiteral("switchToScreen"),
121 QStringLiteral("switchInDirection"),
122 QStringLiteral("switchToNextScreen"),
123 QStringLiteral("lockCursorToScreen"),
124 QStringLiteral("restartServer"),
125 QStringLiteral("mouseDown"),
126 QStringLiteral("mouseUp"),
127 QStringLiteral("mousebutton")
128 };
129
130 inline static const QStringList m_switchDirectionNames{
131 QStringLiteral("left"), QStringLiteral("right"), QStringLiteral("up"), QStringLiteral("down")
132 };
133
134 inline static const QStringList m_lockCursorModeNames{
135 QStringLiteral("toggle"), QStringLiteral("on"), QStringLiteral("off")
136 };
137};
138
139using ActionList = QList<Action>;
140
141QTextStream &operator<<(QTextStream &outStream, const Action &action);
QTextStream & operator<<(QTextStream &outStream, const Action &action)
Definition Action.cpp:205
QList< Action > ActionList
Definition Action.h:139
Definition Action.h:34
bool haveScreens() const
Definition Action.cpp:155
bool activeOnRelease() const
Definition Action.cpp:150
void setSwitchScreenName(const QString &n)
Definition Action.cpp:175
void clearScreens()
Definition Action.cpp:116
LockCursorMode
Definition Action.h:59
@ toggle
Definition Action.h:60
void setActiveOnRelease(bool b)
Definition Action.cpp:190
SwitchDirection
Definition Action.h:52
@ left
Definition Action.h:53
void setHaveScreens(bool b)
Definition Action.cpp:195
void addScreen(const QString &screen)
Definition Action.cpp:121
void loadSettings(QSettings &settings)
Definition Action.cpp:65
Type
Definition Action.h:38
@ keystroke
Definition Action.h:41
void setLockCursorMode(int m)
Definition Action.cpp:185
const QString & switchScreenName() const
Definition Action.cpp:135
QStringList typeScreenNames() const
Definition Action.cpp:111
int lockCursorMode() const
Definition Action.cpp:145
void setType(int t)
Definition Action.cpp:170
void setKeySequence(const KeySequence &seq)
Definition Action.cpp:165
void saveSettings(QSettings &settings) const
Definition Action.cpp:86
int switchDirection() const
Definition Action.cpp:140
int type() const
Definition Action.cpp:106
bool operator==(const Action &a) const =default
QString text() const
Definition Action.cpp:14
void setSwitchDirection(int d)
Definition Action.cpp:180
const KeySequence & keySequence() const
Definition Action.cpp:60
Action()=default
void removeScreen(const QString &screen)
Definition Action.cpp:128
void setRestartServer(bool b)
Definition Action.cpp:200
bool restartServer() const
Definition Action.cpp:160
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