diff --git a/js/ui/status/bluetooth.js b/js/ui/status/bluetooth.js index f0a692380..9580e7b4c 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)