diff --git a/kwin/src/kcm/breezydesktopeffectkcm.cpp b/kwin/src/kcm/breezydesktopeffectkcm.cpp index 5861500..038779d 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.cpp +++ b/kwin/src/kcm/breezydesktopeffectkcm.cpp @@ -97,6 +97,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu addShortcutAction(actionCollection, BreezyShortcuts::TOGGLE_ZOOM_ON_FOCUS); ui.shortcutsEditor->addCollection(actionCollection); connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged); + connect(ui.kcfg_EffectEnabled, &QCheckBox::toggled, this, &BreezyDesktopEffectConfig::updateDriverEnabled); connect(ui.kcfg_ZoomOnFocusEnabled, &QCheckBox::toggled, this, &BreezyDesktopEffectConfig::save); connect(ui.kcfg_FocusedDisplayDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save); connect(ui.kcfg_AllDisplaysDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save); @@ -239,22 +240,17 @@ void BreezyDesktopEffectConfig::updateUnmanagedState() { } -void BreezyDesktopEffectConfig::enableDriver() +void BreezyDesktopEffectConfig::updateDriverEnabled() { - qCCritical(KWIN_XR) << "\t\t\tBreezy config - enableDriver"; QJsonObject obj; - obj.insert(QStringLiteral("disabled"), false); - obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only")); - obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop")); - XRDriverIPC::instance().writeConfig(obj); -} - -void BreezyDesktopEffectConfig::disableDriver() -{ - qCCritical(KWIN_XR) << "\t\t\tBreezy config - disableDriver"; - QJsonObject obj; - obj.insert(QStringLiteral("disabled"), true); - obj.insert(QStringLiteral("external_mode"), QStringLiteral("none")); + if (ui.kcfg_EffectEnabled->isChecked()) { + obj.insert(QStringLiteral("disabled"), false); + obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only")); + obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop")); + } else { + obj.insert(QStringLiteral("disabled"), true); + obj.insert(QStringLiteral("external_mode"), QStringLiteral("none")); + } XRDriverIPC::instance().writeConfig(obj); } @@ -262,9 +258,9 @@ void BreezyDesktopEffectConfig::pollDriverState() { auto &bridge = XRDriverIPC::instance(); auto stateJsonOpt = bridge.retrieveDriverState(); - if (!stateJsonOpt) return; + auto configJsonOpt = bridge.retrieveConfig(); + if (!stateJsonOpt || !configJsonOpt) return; auto stateJson = stateJsonOpt.value(); - m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString(); m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString(); @@ -276,6 +272,15 @@ void BreezyDesktopEffectConfig::pollDriverState() QStringLiteral("No device connected")); } + auto configJson = configJsonOpt.value(); + bool driverDisabled = configJson.value(QStringLiteral("disabled")).toBool(); + QString driverOutputMode = configJson.value(QStringLiteral("output_mode")).toString(); + QJsonArray driverExternalMode = configJson.value(QStringLiteral("external_mode")).toArray(); + bool effectEnabled = !driverDisabled && + driverOutputMode == QStringLiteral("external_only") && + driverExternalMode.contains(QJsonValue(QStringLiteral("breezy_desktop"))); + if (ui.kcfg_EffectEnabled->isChecked() != effectEnabled) ui.kcfg_EffectEnabled->setChecked(effectEnabled); + refreshLicenseUi(stateJson); } diff --git a/kwin/src/kcm/breezydesktopeffectkcm.h b/kwin/src/kcm/breezydesktopeffectkcm.h index 3ffc66a..c42eb51 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.h +++ b/kwin/src/kcm/breezydesktopeffectkcm.h @@ -25,8 +25,7 @@ public Q_SLOTS: void defaults() override; private: - void enableDriver(); - void disableDriver(); + void updateDriverEnabled(); void updateUiFromConfig(); void updateUiFromDefaultConfig(); void updateConfigFromUi(); diff --git a/kwin/src/kcm/breezydesktopeffectkcm.ui b/kwin/src/kcm/breezydesktopeffectkcm.ui index 061b322..1b57da3 100644 --- a/kwin/src/kcm/breezydesktopeffectkcm.ui +++ b/kwin/src/kcm/breezydesktopeffectkcm.ui @@ -52,7 +52,17 @@ &General - + + + + XR Effect enabled + + + true + + + + Zoom on Focus @@ -61,15 +71,15 @@ false - - - - - Focused Display Distance: - - - - + + + + + Focused Display Distance: + + + + 2 @@ -88,14 +98,14 @@ - + All Displays Distance: - + 2 @@ -114,14 +124,14 @@ - + Display Spacing: - + Qt::Horizontal @@ -131,7 +141,7 @@ - + Add Virtual Display: @@ -144,7 +154,7 @@ - + false @@ -177,7 +187,7 @@ - +