Deskflow 1.27.0.8
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
20// Keys will be updated when moved to the general configuration
22{
23 inline static const QString ActionType = QStringLiteral("type");
24 inline static const QString ComputerNames = QStringLiteral("typeScreenNames");
25 inline static const QString ComputerName = QStringLiteral("typeScreenName");
26 inline static const QString SwitchToComputer = QStringLiteral("switchScreenName");
27 inline static const QString SwitchDirection = QStringLiteral("switchInDirection");
28 inline static const QString LockToComputer = QStringLiteral("lockCursorToScreen");
29 inline static const QString ActiveOnRelease = QStringLiteral("activeOnRelease");
30 inline static const QString HasComputers = QStringLiteral("hasScreens");
31 inline static const QString RestartServer = QStringLiteral("restartServer");
32};
33
34class Action
35{
36
37public:
38 enum class Type
39 {
40 keyDown,
41 keyUp,
42 keystroke,
43 switchToComputer,
44 switchInDirection,
45 switchToNextComputer,
46 lockCursorToComputer,
47 restartAllConnections,
48 mouseDown,
49 mouseUp,
50 mousebutton,
51 };
52 enum class SwitchDirection
53 {
54 left,
55 right,
56 up,
57 down
58 };
59 enum class LockCursorMode
60 {
61 toggle,
62 on,
63 off
64 };
65
66public:
67 Action() = default;
68
69 QString text() const;
70
71 void loadSettings(QSettings &settings);
72 void saveSettings(QSettings &settings) const;
73
74 const KeySequence &keySequence() const;
75 void setKeySequence(const KeySequence &seq);
76
77 int type() const;
78 void setType(int t);
79
80 QStringList typeComputerNames() const;
81 void clearComputers();
82 void addComputer(const QString &computer);
83 void removeComputer(const QString &computer);
84
85 const QString &switchComputerName() const;
86 void setSwitchComputerName(const QString &n);
87
88 int switchDirection() const;
89 void setSwitchDirection(int d);
90
91 int lockCursorMode() const;
92 void setLockCursorMode(int m);
93
94 bool activeOnRelease() const;
95 void setActiveOnRelease(bool b);
96
97 bool haveComputers() const;
98 void setHaveComputers(bool b);
99
100 bool restartServer() const;
101 void setRestartServer(bool b);
102
103 bool operator==(const Action &a) const = default;
104
105private:
106 KeySequence m_keySequence;
107 int m_type = static_cast<int>(Type::keystroke);
108 QStringList m_typeComputerNames = QStringList();
109 QString m_switchComputerName = QString();
110 int m_switchDirection = static_cast<int>(SwitchDirection::left);
111 int m_lockCursorMode = static_cast<int>(LockCursorMode::toggle);
112 bool m_activeOnRelease = false;
113 bool m_hasComputers = false;
114 bool m_restartServer;
115
116 inline static const QString m_commandTemplate = QStringLiteral("(%1)");
117 inline static const QStringList m_actionTypeNames{
118 QStringLiteral("keyDown"),
119 QStringLiteral("keyUp"),
120 QStringLiteral("keystroke"),
121 QStringLiteral("switchToScreen"),
122 QStringLiteral("switchInDirection"),
123 QStringLiteral("switchToNextScreen"),
124 QStringLiteral("lockCursorToScreen"),
125 QStringLiteral("restartServer"),
126 QStringLiteral("mouseDown"),
127 QStringLiteral("mouseUp"),
128 QStringLiteral("mousebutton")
129 };
130
131 inline static const QStringList m_switchDirectionNames{
132 QStringLiteral("left"), QStringLiteral("right"), QStringLiteral("up"), QStringLiteral("down")
133 };
134
135 inline static const QStringList m_lockCursorModeNames{
136 QStringLiteral("toggle"), QStringLiteral("on"), QStringLiteral("off")
137 };
138};
139
140using ActionList = QList<Action>;
141
142QTextStream &operator<<(QTextStream &outStream, const Action &action);
QTextStream & operator<<(QTextStream &outStream, const Action &action)
Definition Action.cpp:205
QList< Action > ActionList
Definition Action.h:140
Definition Action.h:35
void removeComputer(const QString &computer)
Definition Action.cpp:128
bool activeOnRelease() const
Definition Action.cpp:150
void addComputer(const QString &computer)
Definition Action.cpp:121
LockCursorMode
Definition Action.h:60
@ toggle
Definition Action.h:61
void setActiveOnRelease(bool b)
Definition Action.cpp:190
SwitchDirection
Definition Action.h:53
@ left
Definition Action.h:54
const QString & switchComputerName() const
Definition Action.cpp:135
void loadSettings(QSettings &settings)
Definition Action.cpp:65
Type
Definition Action.h:39
@ keystroke
Definition Action.h:42
QStringList typeComputerNames() const
Definition Action.cpp:111
void setLockCursorMode(int m)
Definition Action.cpp:185
int lockCursorMode() const
Definition Action.cpp:145
void setType(int t)
Definition Action.cpp:170
void setHaveComputers(bool b)
Definition Action.cpp:195
void setKeySequence(const KeySequence &seq)
Definition Action.cpp:165
void saveSettings(QSettings &settings) const
Definition Action.cpp:86
void clearComputers()
Definition Action.cpp:116
int switchDirection() const
Definition Action.cpp:140
void setSwitchComputerName(const QString &n)
Definition Action.cpp:175
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
bool haveComputers() const
Definition Action.cpp:155
const KeySequence & keySequence() const
Definition Action.cpp:60
Action()=default
void setRestartServer(bool b)
Definition Action.cpp:200
bool restartServer() const
Definition Action.cpp:160
Definition KeySequence.h:16
Definition Action.h:22
static const QString ComputerName
Definition Action.h:25
static const QString ActiveOnRelease
Definition Action.h:29
static const QString ActionType
Definition Action.h:23
static const QString ComputerNames
Definition Action.h:24
static const QString RestartServer
Definition Action.h:31
static const QString SwitchToComputer
Definition Action.h:26
static const QString SwitchDirection
Definition Action.h:27
static const QString HasComputers
Definition Action.h:30
static const QString LockToComputer
Definition Action.h:28