Add "effect enabled" checkbox

This commit is contained in:
wheaney 2025-09-08 15:18:12 -07:00
parent c2d36383b5
commit f7daccb2f8
3 changed files with 49 additions and 35 deletions

View File

@ -97,6 +97,7 @@ BreezyDesktopEffectConfig::BreezyDesktopEffectConfig(QObject *parent, const KPlu
addShortcutAction(actionCollection, BreezyShortcuts::TOGGLE_ZOOM_ON_FOCUS); addShortcutAction(actionCollection, BreezyShortcuts::TOGGLE_ZOOM_ON_FOCUS);
ui.shortcutsEditor->addCollection(actionCollection); ui.shortcutsEditor->addCollection(actionCollection);
connect(ui.shortcutsEditor, &KShortcutsEditor::keyChange, this, &BreezyDesktopEffectConfig::markAsChanged); 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_ZoomOnFocusEnabled, &QCheckBox::toggled, this, &BreezyDesktopEffectConfig::save);
connect(ui.kcfg_FocusedDisplayDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save); connect(ui.kcfg_FocusedDisplayDistance, &QSlider::valueChanged, this, &BreezyDesktopEffectConfig::save);
connect(ui.kcfg_AllDisplaysDistance, &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; QJsonObject obj;
obj.insert(QStringLiteral("disabled"), false); if (ui.kcfg_EffectEnabled->isChecked()) {
obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only")); obj.insert(QStringLiteral("disabled"), false);
obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop")); obj.insert(QStringLiteral("output_mode"), QStringLiteral("external_only"));
XRDriverIPC::instance().writeConfig(obj); obj.insert(QStringLiteral("external_mode"), QStringLiteral("breezy_desktop"));
} } else {
obj.insert(QStringLiteral("disabled"), true);
void BreezyDesktopEffectConfig::disableDriver() obj.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
{ }
qCCritical(KWIN_XR) << "\t\t\tBreezy config - disableDriver";
QJsonObject obj;
obj.insert(QStringLiteral("disabled"), true);
obj.insert(QStringLiteral("external_mode"), QStringLiteral("none"));
XRDriverIPC::instance().writeConfig(obj); XRDriverIPC::instance().writeConfig(obj);
} }
@ -262,9 +258,9 @@ void BreezyDesktopEffectConfig::pollDriverState()
{ {
auto &bridge = XRDriverIPC::instance(); auto &bridge = XRDriverIPC::instance();
auto stateJsonOpt = bridge.retrieveDriverState(); auto stateJsonOpt = bridge.retrieveDriverState();
if (!stateJsonOpt) return; auto configJsonOpt = bridge.retrieveConfig();
if (!stateJsonOpt || !configJsonOpt) return;
auto stateJson = stateJsonOpt.value(); auto stateJson = stateJsonOpt.value();
m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString(); m_connectedDeviceBrand = stateJson.value(QStringLiteral("connected_device_brand")).toString();
m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString(); m_connectedDeviceModel = stateJson.value(QStringLiteral("connected_device_model")).toString();
@ -276,6 +272,15 @@ void BreezyDesktopEffectConfig::pollDriverState()
QStringLiteral("No device connected")); 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); refreshLicenseUi(stateJson);
} }

View File

@ -25,8 +25,7 @@ public Q_SLOTS:
void defaults() override; void defaults() override;
private: private:
void enableDriver(); void updateDriverEnabled();
void disableDriver();
void updateUiFromConfig(); void updateUiFromConfig();
void updateUiFromDefaultConfig(); void updateUiFromDefaultConfig();
void updateConfigFromUi(); void updateConfigFromUi();

View File

@ -52,7 +52,17 @@
<string>&amp;General</string> <string>&amp;General</string>
</attribute> </attribute>
<layout class="QFormLayout" name="formLayout"> <layout class="QFormLayout" name="formLayout">
<item row="0" column="0"> <item row="0" column="0" colspan="2">
<widget class="QCheckBox" name="kcfg_EffectEnabled">
<property name="text">
<string>XR Effect enabled</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="1" column="0" colspan="2">
<widget class="QCheckBox" name="kcfg_ZoomOnFocusEnabled"> <widget class="QCheckBox" name="kcfg_ZoomOnFocusEnabled">
<property name="text"> <property name="text">
<string>Zoom on Focus</string> <string>Zoom on Focus</string>
@ -61,15 +71,15 @@
<bool>false</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0"> <item row="2" column="0">
<widget class="QLabel" name="labelFocusedDisplayDistance"> <widget class="QLabel" name="labelFocusedDisplayDistance">
<property name="text"> <property name="text">
<string>Focused Display Distance:</string> <string>Focused Display Distance:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1"> <item row="2" column="1">
<widget class="LabeledSlider" name="kcfg_FocusedDisplayDistance"> <widget class="LabeledSlider" name="kcfg_FocusedDisplayDistance">
<property name="decimalShift"> <property name="decimalShift">
<double>2</double> <double>2</double>
@ -88,14 +98,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item row="3" column="0">
<widget class="QLabel" name="labelAllDisplaysDistance"> <widget class="QLabel" name="labelAllDisplaysDistance">
<property name="text"> <property name="text">
<string>All Displays Distance:</string> <string>All Displays Distance:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="2" column="1"> <item row="3" column="1">
<widget class="LabeledSlider" name="kcfg_AllDisplaysDistance"> <widget class="LabeledSlider" name="kcfg_AllDisplaysDistance">
<property name="decimalShift"> <property name="decimalShift">
<double>2</double> <double>2</double>
@ -114,14 +124,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="4" column="0">
<widget class="QLabel" name="labelDisplaySpacing"> <widget class="QLabel" name="labelDisplaySpacing">
<property name="text"> <property name="text">
<string>Display Spacing:</string> <string>Display Spacing:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="1"> <item row="4" column="1">
<widget class="QSlider" name="kcfg_DisplaySpacing"> <widget class="QSlider" name="kcfg_DisplaySpacing">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@ -131,7 +141,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="0"> <item row="5" column="0">
<widget class="QLabel" name="labelVirtualDisplays"> <widget class="QLabel" name="labelVirtualDisplays">
<property name="text"> <property name="text">
<string>Add Virtual Display:</string> <string>Add Virtual Display:</string>
@ -144,7 +154,7 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="4" column="1"> <item row="5" column="1">
<widget class="QWidget" name="widgetVirtualDisplayButtons"> <widget class="QWidget" name="widgetVirtualDisplayButtons">
<property name="visible"> <property name="visible">
<bool>false</bool> <bool>false</bool>
@ -177,7 +187,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="5" column="0" colspan="2"> <item row="6" column="0" colspan="2">
<widget class="KShortcutsEditor" name="shortcutsEditor" native="true"> <widget class="KShortcutsEditor" name="shortcutsEditor" native="true">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred"> <sizepolicy hsizetype="Preferred" vsizetype="Preferred">