diff --git a/kcmkwin/kwindesktop/package/contents/ui/main.qml b/kcmkwin/kwindesktop/package/contents/ui/main.qml --- a/kcmkwin/kwindesktop/package/contents/ui/main.qml +++ b/kcmkwin/kwindesktop/package/contents/ui/main.qml @@ -165,26 +165,16 @@ } Kirigami.FormLayout { - Connections { - target: kcm - - onNavWrapsChanged: navWraps.checked = kcm.navWraps - - onOsdEnabledChanged: osdEnabled.checked = kcm.osdEnabled - onOsdDurationChanged: osdDuration.value = kcm.osdDuration - onOsdTextOnlyChanged: osdTextOnly.checked = !kcm.osdTextOnly - } QQC2.CheckBox { id: navWraps Kirigami.FormData.label: i18n("Options:") text: i18n("Navigation wraps around") - - checked: kcm.navWraps - - onCheckedChanged: kcm.navWraps = checked + enabled: kcm.virtualDesktopsSettings.isImmutable("RollOverDesktops") + checked: kcm.virtualDesktopsSettings.rollOverDesktops + onCheckedChanged: kcm.virtualDesktopsSettings.rollOverDesktops = checked } RowLayout { @@ -241,25 +231,27 @@ text: i18n("Show on-screen display when switching:") - checked: kcm.osdEnabled + enabled: !kcm.virtualDesktopsSettings.isImmutable("desktopChangeOsdEnabled") - onToggled: kcm.osdEnabled = checked + checked: kcm.virtualDesktopsSettings.desktopChangeOsdEnabled + + onToggled: kcm.virtualDesktopsSettings.desktopChangeOsdEnabled = checked } QQC2.SpinBox { id: osdDuration - enabled: osdEnabled.checked + enabled: osdEnabled.checked && !kcm.virtualDesktopsSettings.isImmutable("PopupHideDelay") from: 0 to: 10000 stepSize: 100 textFromValue: function(value, locale) { return i18n("%1 ms", value)} - value: kcm.osdDuration + value: kcm.virtualDesktopsSettings.popupHideDelay - onValueChanged: kcm.osdDuration = value + onValueChanged: kcm.virtualDesktopsSettings.popupHideDelay = value } } @@ -272,14 +264,10 @@ QQC2.CheckBox { id: osdTextOnly - - enabled: osdEnabled.checked - + enabled: osdEnabled.checked && !kcm.virtualDesktopsSettings.isImmutable("TextOnly") text: i18n("Show desktop layout indicators") - - checked: !kcm.osdTextOnly - - onToggled: kcm.osdTextOnly = !checked + checked: !kcm.virtualDesktopsSettings.textOnly + onToggled: kcm.virtualDesktopsSettings.textOnly = !checked } } } diff --git a/kcmkwin/kwindesktop/virtualdesktops.h b/kcmkwin/kwindesktop/virtualdesktops.h --- a/kcmkwin/kwindesktop/virtualdesktops.h +++ b/kcmkwin/kwindesktop/virtualdesktops.h @@ -19,7 +19,7 @@ #ifndef VIRTUALDESKTOPS_H #define VIRTUALDESKTOPS_H -#include +#include #include class VirtualDesktopsSettings; @@ -30,42 +30,23 @@ class AnimationsModel; class DesktopsModel; -class VirtualDesktops : public KQuickAddons::ConfigModule +class VirtualDesktops : public KQuickAddons::ManagedConfigModule { Q_OBJECT Q_PROPERTY(QAbstractItemModel* desktopsModel READ desktopsModel CONSTANT) - Q_PROPERTY(bool navWraps READ navWraps WRITE setNavWraps NOTIFY navWrapsChanged) - Q_PROPERTY(bool osdEnabled READ osdEnabled WRITE setOsdEnabled NOTIFY osdEnabledChanged) - Q_PROPERTY(int osdDuration READ osdDuration WRITE setOsdDuration NOTIFY osdDurationChanged) - Q_PROPERTY(bool osdTextOnly READ osdTextOnly WRITE setOsdTextOnly NOTIFY osdTextOnlyChanged) Q_PROPERTY(QAbstractItemModel *animationsModel READ animationsModel CONSTANT) + Q_PROPERTY(VirtualDesktopsSettings *virtualDesktopsSettings READ virtualDesktopsSettings CONSTANT) public: explicit VirtualDesktops(QObject *parent = nullptr, const QVariantList &list = QVariantList()); ~VirtualDesktops() override; QAbstractItemModel *desktopsModel() const; - bool navWraps() const; - void setNavWraps(bool wraps); - - bool osdEnabled() const; - void setOsdEnabled(bool enabled); - - int osdDuration() const; - void setOsdDuration(int duration); - - int osdTextOnly() const; - void setOsdTextOnly(bool textOnly); - QAbstractItemModel *animationsModel() const; -Q_SIGNALS: - void navWrapsChanged() const; - void osdEnabledChanged() const; - void osdDurationChanged() const; - void osdTextOnlyChanged() const; + VirtualDesktopsSettings *virtualDesktopsSettings() const; public Q_SLOTS: void load() override; @@ -81,10 +62,6 @@ private: VirtualDesktopsSettings *m_settings; DesktopsModel *m_desktopsModel; - bool m_navWraps; - bool m_osdEnabled; - int m_osdDuration; - bool m_osdTextOnly; AnimationsModel *m_animationsModel; }; diff --git a/kcmkwin/kwindesktop/virtualdesktops.cpp b/kcmkwin/kwindesktop/virtualdesktops.cpp --- a/kcmkwin/kwindesktop/virtualdesktops.cpp +++ b/kcmkwin/kwindesktop/virtualdesktops.cpp @@ -32,20 +32,18 @@ { VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args) - : KQuickAddons::ConfigModule(parent, args) + : KQuickAddons::ManagedConfigModule(parent, args) , m_settings(new VirtualDesktopsSettings(this)) , m_desktopsModel(new KWin::DesktopsModel(this)) - , m_navWraps(true) - , m_osdEnabled(false) - , m_osdDuration(1000) - , m_osdTextOnly(false) , m_animationsModel(new AnimationsModel(this)) { KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"), i18n("Virtual Desktops"), QStringLiteral("2.0"), QString(), KAboutLicense::GPL); setAboutData(about); + qmlRegisterType(); + setButtons(Apply | Default); QObject::connect(m_desktopsModel, &KWin::DesktopsModel::userModifiedChanged, @@ -65,115 +63,41 @@ return m_desktopsModel; } -bool VirtualDesktops::navWraps() const -{ - return m_navWraps; -} - -void VirtualDesktops::setNavWraps(bool wraps) -{ - if (m_navWraps != wraps) { - m_navWraps = wraps; - - emit navWrapsChanged(); - - updateNeedsSave(); - } -} - -bool VirtualDesktops::osdEnabled() const -{ - return m_osdEnabled; -} - -void VirtualDesktops::setOsdEnabled(bool enabled) -{ - if (m_osdEnabled != enabled) { - m_osdEnabled = enabled; - - emit osdEnabledChanged(); - - updateNeedsSave(); - } -} - -int VirtualDesktops::osdDuration() const -{ - return m_osdDuration; -} - -void VirtualDesktops::setOsdDuration(int duration) -{ - if (m_osdDuration != duration) { - m_osdDuration = duration; - - emit osdDurationChanged(); - - updateNeedsSave(); - } -} - -int VirtualDesktops::osdTextOnly() const -{ - return m_osdTextOnly; -} - -void VirtualDesktops::setOsdTextOnly(bool textOnly) +QAbstractItemModel *VirtualDesktops::animationsModel() const { - if (m_osdTextOnly != textOnly) { - m_osdTextOnly = textOnly; - - emit osdTextOnlyChanged(); - - updateNeedsSave(); - } + return m_animationsModel; } -QAbstractItemModel *VirtualDesktops::animationsModel() const +VirtualDesktopsSettings *VirtualDesktops::virtualDesktopsSettings() const { - return m_animationsModel; + return m_settings; } void VirtualDesktops::load() { - setNavWraps(m_settings->rollOverDesktop()); - - setOsdEnabled(m_settings->desktopChangeOsdEnabled()); - - setOsdDuration(m_settings->popupHideDelay()); - setOsdTextOnly(m_settings->textOnly()); + ManagedConfigModule::load(); m_animationsModel->load(); } void VirtualDesktops::save() { + ManagedConfigModule::save(); + m_desktopsModel->syncWithServer(); m_animationsModel->save(); - m_settings->setRollOverDesktop(m_navWraps); - m_settings->setDesktopChangeOsdEnabled(m_osdEnabled); - m_settings->setPopupHideDelay(m_osdDuration); - m_settings->setTextOnly(m_osdTextOnly); - - m_settings->save(); - QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig")); QDBusConnection::sessionBus().send(message); - - setNeedsSave(false); } void VirtualDesktops::defaults() { + ManagedConfigModule::defaults(); + m_desktopsModel->setRows(1); m_animationsModel->defaults(); - - setNavWraps(true); - setOsdEnabled(false); - setOsdDuration(1000); - setOsdTextOnly(false); } void VirtualDesktops::configureAnimation() @@ -237,7 +161,7 @@ void VirtualDesktops::updateNeedsSave() { - bool needsSave = false; + bool needsSave = m_settings->isSaveNeeded(); if (m_desktopsModel->userModified()) { needsSave = true; @@ -247,22 +171,6 @@ needsSave = true; } - if (m_navWraps != m_settings->rollOverDesktop()) { - needsSave = true; - } - - if (m_osdEnabled != m_settings->desktopChangeOsdEnabled()) { - needsSave = true; - } - - if (m_osdDuration != m_settings->popupHideDelay()) { - needsSave = true; - } - - if (m_osdTextOnly != m_settings->textOnly()) { - needsSave = true; - } - setNeedsSave(needsSave); } diff --git a/kcmkwin/kwindesktop/virtualdesktopssettings.kcfg b/kcmkwin/kwindesktop/virtualdesktopssettings.kcfg --- a/kcmkwin/kwindesktop/virtualdesktopssettings.kcfg +++ b/kcmkwin/kwindesktop/virtualdesktopssettings.kcfg @@ -5,7 +5,7 @@ http://www.kde.org/standards/kcfg/1.0/kcfg.xsd" > - + true