diff --git a/kcmkwin/kwindecoration/package/contents/ui/main.qml b/kcmkwin/kwindecoration/package/contents/ui/main.qml --- a/kcmkwin/kwindecoration/package/contents/ui/main.qml +++ b/kcmkwin/kwindecoration/package/contents/ui/main.qml @@ -19,7 +19,7 @@ import QtQuick 2.7 import QtQuick.Layouts 1.3 import QtQuick.Controls 2.4 as Controls -import org.kde.kcm 1.1 as KCM +import org.kde.kcm 1.3 as KCM import org.kde.kconfig 1.0 // for KAuthorized import org.kde.kirigami 2.4 as Kirigami @@ -78,7 +78,13 @@ Themes { Layout.fillWidth: true Layout.fillHeight: true - enabled: !kcm.settings.isImmutable("pluginName") && !kcm.settings.isImmutable("theme") + + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "pluginName" + indicatorAsOverlay: true + } } RowLayout { @@ -88,21 +94,34 @@ Layout.fillWidth: true Layout.maximumWidth: implicitWidth text: i18nc("checkbox label", "Use theme's default window border size") - enabled: !kcm.settings.isImmutable("borderSizeAuto") checked: kcm.settings.borderSizeAuto onToggled: { kcm.settings.borderSizeAuto = checked; borderSizeComboBox.autoBorderUpdate() } + + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "borderSizeAuto" + } + } Controls.ComboBox { id: borderSizeComboBox - enabled: !borderSizeAutoCheckbox.checked && !kcm.settings.isImmutable("borderSize") model: kcm.borderSizesModel currentIndex: kcm.borderSize onActivated: { kcm.borderSize = currentIndex } + + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "borderSize" + extraEnabledPredicate: !borderSizeAutoCheckbox.checked + } + function autoBorderUpdate() { if (borderSizeAutoCheckbox.checked) { kcm.borderSize = kcm.recommendedBorderSize @@ -130,18 +149,27 @@ Buttons { Layout.fillWidth: true Layout.fillHeight: true - enabled: !kcm.settings.isImmutable("buttonsOnLeft") && !kcm.settings.isImmutable("buttonsOnRight") + + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "buttonsOnLeft" + } } Controls.CheckBox { id: closeOnDoubleClickOnMenuCheckBox text: i18nc("checkbox label", "Close windows by double clicking the menu button") - enabled: !kcm.settings.isImmutable("closeOnDoubleClickOnMenu") checked: kcm.settings.closeOnDoubleClickOnMenu onToggled: { kcm.settings.closeOnDoubleClickOnMenu = checked infoLabel.visible = checked } + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "closeOnDoubleClickOnMenu" + } } Kirigami.InlineMessage { @@ -156,9 +184,14 @@ Controls.CheckBox { id: showToolTipsCheckBox text: i18nc("checkbox label", "Show titlebar button tooltips") - enabled: !kcm.settings.isImmutable("showToolTips") checked: kcm.settings.showToolTips onToggled: kcm.settings.showToolTips = checked + + KCM.SettingStateBinding { + target: parent + configObject: kcm.settings + itemName: "showToolTips" + } } } } 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 @@ -21,14 +21,14 @@ import QtQuick.Controls 2.5 as QQC2 import QtQuick.Layouts 1.1 -import org.kde.kcm 1.2 +import org.kde.kcm 1.3 as KCM import org.kde.kirigami 2.10 as Kirigami import org.kde.plasma.core 2.1 as PlasmaCore -ScrollViewKCM { +KCM.ScrollViewKCM { id: root - ConfigModule.quickHelp: i18n("This module lets you configure the navigation, number and layout of virtual desktops.") + KCM.ConfigModule.quickHelp: i18n("This module lets you configure the navigation, number and layout of virtual desktops.") Connections { target: kcm.desktopsModel @@ -173,9 +173,14 @@ Kirigami.FormData.label: i18n("Options:") text: i18n("Navigation wraps around") - enabled: !kcm.virtualDesktopsSettings.isImmutable("rollOverDesktops") checked: kcm.virtualDesktopsSettings.rollOverDesktops onToggled: kcm.virtualDesktopsSettings.rollOverDesktops = checked + + KCM.SettingStateBinding { + target: parent + configObject: kcm.virtualDesktopsSettings + itemName: "rollOverDesktops" + } } RowLayout { @@ -232,18 +237,20 @@ text: i18n("Show on-screen display when switching:") - enabled: !kcm.virtualDesktopsSettings.isImmutable("desktopChangeOsdEnabled") - checked: kcm.virtualDesktopsSettings.desktopChangeOsdEnabled onToggled: kcm.virtualDesktopsSettings.desktopChangeOsdEnabled = checked + + KCM.SettingStateBinding { + target: parent + configObject: kcm.virtualDesktopsSettings + itemName: "desktopChangeOsdEnabled" + } } QQC2.SpinBox { id: osdDuration - enabled: osdEnabled.checked && !kcm.virtualDesktopsSettings.isImmutable("popupHideDelay") - from: 0 to: 10000 stepSize: 100 @@ -253,6 +260,13 @@ value: kcm.virtualDesktopsSettings.popupHideDelay onValueModified: kcm.virtualDesktopsSettings.popupHideDelay = value + + KCM.SettingStateBinding { + target: parent + configObject: kcm.virtualDesktopsSettings + itemName: "popupHideDelay" + extraEnabledPredicate: osdEnabled.checked + } } } @@ -265,10 +279,16 @@ QQC2.CheckBox { id: osdTextOnly - enabled: osdEnabled.checked && !kcm.virtualDesktopsSettings.isImmutable("textOnly") text: i18n("Show desktop layout indicators") checked: !kcm.virtualDesktopsSettings.textOnly onToggled: kcm.virtualDesktopsSettings.textOnly = !checked + + KCM.SettingStateBinding { + target: parent + configObject: kcm.virtualDesktopsSettings + itemName: "textOnly" + extraEnabledPredicate: osdEnabled.checked + } } } }