diff --git a/src/lib/common/Action.cpp b/src/lib/common/Action.cpp index 1e60e910f..bf89627af 100644 --- a/src/lib/common/Action.cpp +++ b/src/lib/common/Action.cpp @@ -64,14 +64,14 @@ const KeySequence &Action::keySequence() const void Action::loadSettings(QSettings &settings) { - keySequence().loadSettings(settings); + m_keySequence.loadSettings(settings); setType(settings.value(SettingsKeys::ActionType, static_cast(Type::keyDown)).toInt()); - typeScreenNames().clear(); + m_typeScreenNames.clear(); int numTypeScreens = settings.beginReadArray(SettingsKeys::ScreenNames); for (int i = 0; i < numTypeScreens; i++) { settings.setArrayIndex(i); - typeScreenNames().append(settings.value(SettingsKeys::ScreenName).toString()); + m_typeScreenNames.append(settings.value(SettingsKeys::ScreenName).toString()); } settings.endArray(); @@ -89,18 +89,18 @@ void Action::saveSettings(QSettings &settings) const settings.setValue(SettingsKeys::ActionType, type()); settings.beginWriteArray(SettingsKeys::ScreenNames); - for (int i = 0; i < typeScreenNames().size(); i++) { + for (int i = 0; i < m_typeScreenNames.size(); i++) { settings.setArrayIndex(i); - settings.setValue(SettingsKeys::ScreenName, typeScreenNames()[i]); + settings.setValue(SettingsKeys::ScreenName, m_typeScreenNames[i]); } settings.endArray(); - settings.setValue(SettingsKeys::SwitchToScreen, switchScreenName()); - settings.setValue(SettingsKeys::SwitchDirection, switchDirection()); - settings.setValue(SettingsKeys::LockToScreen, lockCursorMode()); - settings.setValue(SettingsKeys::ActiveOnRelease, activeOnRelease()); - settings.setValue(SettingsKeys::HasScreens, haveScreens()); - settings.setValue(SettingsKeys::RestartServer, restartServer()); + settings.setValue(SettingsKeys::SwitchToScreen, m_switchScreenName); + settings.setValue(SettingsKeys::SwitchDirection, m_switchDirection); + settings.setValue(SettingsKeys::LockToScreen, m_lockCursorMode); + settings.setValue(SettingsKeys::ActiveOnRelease, m_activeOnRelease); + settings.setValue(SettingsKeys::HasScreens, m_hasScreens); + settings.setValue(SettingsKeys::RestartServer, m_restartServer); } int Action::type() const @@ -108,11 +108,30 @@ int Action::type() const return m_type; } -const QStringList &Action::typeScreenNames() const +QStringList Action::typeScreenNames() const { return m_typeScreenNames; } +void Action::clearScreens() +{ + m_typeScreenNames.clear(); +} + +void Action::addScreen(const QString &screen) +{ + if (m_typeScreenNames.contains(screen)) + return; + m_typeScreenNames.append(screen); +} + +void Action::removeScreen(const QString &screen) +{ + if (!m_typeScreenNames.contains(screen)) + return; + m_typeScreenNames.removeAll(screen); +} + const QString &Action::switchScreenName() const { return m_switchScreenName; @@ -143,11 +162,6 @@ bool Action::restartServer() const return m_restartServer; } -KeySequence &Action::keySequence() -{ - return m_keySequence; -} - void Action::setKeySequence(const KeySequence &seq) { m_keySequence = seq; @@ -158,11 +172,6 @@ void Action::setType(int t) m_type = t; } -QStringList &Action::typeScreenNames() -{ - return m_typeScreenNames; -} - void Action::setSwitchScreenName(const QString &n) { m_switchScreenName = n; diff --git a/src/lib/common/Action.h b/src/lib/common/Action.h index f200276c2..bd025d052 100644 --- a/src/lib/common/Action.h +++ b/src/lib/common/Action.h @@ -14,7 +14,6 @@ #include #include -class ActionDialog; class QSettings; class QTextStream; @@ -33,8 +32,6 @@ struct SettingsKeys class Action { - friend class ActionDialog; - friend QTextStream &operator<<(QTextStream &outStream, const Action &action); public: enum class Type @@ -69,32 +66,41 @@ public: Action() = default; QString text() const; - const KeySequence &keySequence() const; + void loadSettings(QSettings &settings); void saveSettings(QSettings &settings) const; + + const KeySequence &keySequence() const; + void setKeySequence(const KeySequence &seq); + int type() const; - const QStringList &typeScreenNames() const; + void setType(int t); + + QStringList typeScreenNames() const; + void clearScreens(); + void addScreen(const QString &screen); + void removeScreen(const QString &screen); + const QString &switchScreenName() const; + void setSwitchScreenName(const QString &n); + int switchDirection() const; + void setSwitchDirection(int d); + int lockCursorMode() const; + void setLockCursorMode(int m); + bool activeOnRelease() const; + void setActiveOnRelease(bool b); + bool haveScreens() const; + void setHaveScreens(bool b); + bool restartServer() const; + void setRestartServer(bool b); bool operator==(const Action &a) const = default; -protected: - KeySequence &keySequence(); - void setKeySequence(const KeySequence &seq); - void setType(int t); - QStringList &typeScreenNames(); - void setSwitchScreenName(const QString &n); - void setSwitchDirection(int d); - void setLockCursorMode(int m); - void setActiveOnRelease(bool b); - void setHaveScreens(bool b); - void setRestartServer(bool b); - private: KeySequence m_keySequence; int m_type = static_cast(Type::keystroke); diff --git a/src/lib/gui/dialogs/ActionDialog.cpp b/src/lib/gui/dialogs/ActionDialog.cpp index ab14cd873..d8a9d3f09 100644 --- a/src/lib/gui/dialogs/ActionDialog.cpp +++ b/src/lib/gui/dialogs/ActionDialog.cpp @@ -74,21 +74,21 @@ void ActionDialog::accept() m_action.setKeySequence(ui->keySequenceWidget->keySequence()); m_action.setType(ui->comboActionType->currentIndex()); - m_action.typeScreenNames().clear(); + m_action.clearScreens(); int screenCount = ui->listScreens->count(); for (int i = 0; i < ui->listScreens->count(); i++) { const auto &item = ui->listScreens->item(i); - m_action.typeScreenNames().append(item->text()); + m_action.addScreen(item->text()); if (item->checkState() == Qt::Unchecked) { screenCount--; - m_action.typeScreenNames().removeLast(); + m_action.removeScreen(item->text()); } } if (screenCount == ui->listScreens->count()) - m_action.typeScreenNames().clear(); + m_action.clearScreens(); m_action.setHaveScreens(screenCount);