From 82ffd0776cc057bb2c4209d1da84d61808403659 Mon Sep 17 00:00:00 2001 From: lenemter Date: Tue, 10 Jun 2025 14:12:42 +0300 Subject: [PATCH] Sync wingpanel's "Show Percentage" option --- ...elementary.SettingsDaemon.AccountsService.xml | 4 ++++ src/AccountsService.vala | 1 + src/Backends/InterfaceSettings.vala | 16 ++++++++++++++++ 3 files changed, 21 insertions(+) diff --git a/data/io.elementary.SettingsDaemon.AccountsService.xml b/data/io.elementary.SettingsDaemon.AccountsService.xml index 0b926827..20bdb765 100644 --- a/data/io.elementary.SettingsDaemon.AccountsService.xml +++ b/data/io.elementary.SettingsDaemon.AccountsService.xml @@ -140,6 +140,10 @@ + + + + diff --git a/src/AccountsService.vala b/src/AccountsService.vala index 7f845516..6265d32e 100644 --- a/src/AccountsService.vala +++ b/src/AccountsService.vala @@ -72,6 +72,7 @@ public interface SettingsDaemon.AccountsService : Object { /* Wingpanel */ public abstract bool wingpanel_use_transparency { get; set; } + public abstract bool wingpanel_show_percentage { get; set; } /* Prefer Dark Schedule (part of interface settings)*/ /* Last coordinates are reused for Night Light settings */ diff --git a/src/Backends/InterfaceSettings.vala b/src/Backends/InterfaceSettings.vala index 0a550f45..b753001c 100644 --- a/src/Backends/InterfaceSettings.vala +++ b/src/Backends/InterfaceSettings.vala @@ -39,7 +39,9 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object { private const string PREFER_DARK_SCHEDULE_TO = "prefer-dark-schedule-to"; private const string ORIENTATION_LOCK = "orientation-lock"; + private const string USE_TRANSPARENCY = "use-transparency"; + private const string SHOW_PERCENTAGE = "show-percentage"; public unowned AccountsService accounts_service { get; construct; } public unowned DisplayManager.AccountsService display_manager_accounts_service { get; construct; } @@ -49,6 +51,7 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object { private GLib.Settings settings_daemon_settings; private GLib.Settings touchscreen_settings; private GLib.Settings? wingpanel_settings; + private GLib.Settings? wingpanel_power_settings; public InterfaceSettings (AccountsService accounts_service, DisplayManager.AccountsService display_manager_accounts_service) { Object ( @@ -68,6 +71,11 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object { wingpanel_settings = new GLib.Settings ("io.elementary.desktop.wingpanel"); } + var wingpanel_power_schema = SettingsSchemaSource.get_default ().lookup ("io.elementary.desktop.wingpanel.power", true); + if (wingpanel_power_schema != null && wingpanel_power_schema.has_key (SHOW_PERCENTAGE)) { + wingpanel_power_settings = new GLib.Settings ("io.elementary.desktop.wingpanel.power"); + } + sync_gsettings_to_accountsservice (); interface_settings.changed.connect ((key) => { @@ -110,6 +118,10 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object { if (wingpanel_settings != null) { wingpanel_settings.changed[USE_TRANSPARENCY].connect (sync_gsettings_to_accountsservice); } + + if (wingpanel_power_settings != null) { + wingpanel_power_settings.changed[SHOW_PERCENTAGE].connect (sync_gsettings_to_accountsservice); + } } private void sync_gsettings_to_accountsservice () { @@ -151,6 +163,10 @@ public class SettingsDaemon.Backends.InterfaceSettings : GLib.Object { if (wingpanel_settings != null) { accounts_service.wingpanel_use_transparency = wingpanel_settings.get_boolean (USE_TRANSPARENCY); } + + if (wingpanel_power_settings != null) { + accounts_service.wingpanel_show_percentage = wingpanel_power_settings.get_boolean (SHOW_PERCENTAGE); + } } private void sync_background_to_greeter () {