[gnome-shell] status/bluetooth: Expose adapter-state



commit d54dc08a32d140197036d52e1d854d59e3f7f7d1
Author: Florian Müllner <fmuellner gnome org>
Date:   Tue Aug 23 16:30:32 2022 +0200

    status/bluetooth: Expose adapter-state
    
    GnomeBluetooth now exposes a more precise state than the binary
    "adapter fully powerered on/off" property. Expose that on the
    BtClient object to make it available to the toggle and indicator.
    
    https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5773
    
    Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>

 js/ui/status/bluetooth.js | 11 +++++++++++
 1 file changed, 11 insertions(+)
---
diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js
index f0a6923809..9580e7b4c7 100644
--- a/js/ui/status/bluetooth.js
+++ b/js/ui/status/bluetooth.js
@@ -7,6 +7,8 @@ const {QuickToggle, SystemIndicator} = imports.ui.quickSettings;
 
 const {loadInterfaceXML} = imports.misc.fileUtils;
 
+const {AdapterState} = GnomeBluetooth;
+
 const BUS_NAME = 'org.gnome.SettingsDaemon.Rfkill';
 const OBJECT_PATH = '/org/gnome/SettingsDaemon/Rfkill';
 
@@ -23,6 +25,9 @@ const BtClient = GObject.registerClass({
         'active': GObject.ParamSpec.boolean('active', '', '',
             GObject.ParamFlags.READABLE,
             false),
+        'adapter-state': GObject.ParamSpec.enum('adapter-state', '', '',
+            GObject.ParamFlags.READABLE,
+            AdapterState, AdapterState.ABSENT),
     },
     Signals: {
         'devices-changed': {},
@@ -38,6 +43,8 @@ const BtClient = GObject.registerClass({
             this.notify('active');
             this.notify('available');
         });
+        this._client.connect('notify::default-adapter-state',
+            () => this.notify('adapter-state'));
         this._client.connect('notify::default-adapter', () => {
             const newAdapter = this._client.default_adapter ?? null;
 
@@ -95,6 +102,10 @@ const BtClient = GObject.registerClass({
         return this._client.default_adapter_powered;
     }
 
+    get adapter_state() {
+        return this._client.default_adapter_state;
+    }
+
     toggleActive() {
         this._proxy.BluetoothAirplaneMode = this.active;
         if (!this._client.default_adapter_powered)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]