status/bluetooth: Indicate progress on toggle
Turning bluetooth on or off can be very slow – 10-15 seconds on my system – and we currently don't provide any feedback that something is indeed happening until the state changes at last. Address this by using the `acquiring` icon when the adapter is in a transitioning state. https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5773 Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2444>
This commit is contained in:
parent
d54dc08a32
commit
6a23e8ee0f
@ -178,14 +178,31 @@ class BluetoothToggle extends QuickToggle {
|
|||||||
this._client.bind_property('active',
|
this._client.bind_property('active',
|
||||||
this, 'checked',
|
this, 'checked',
|
||||||
GObject.BindingFlags.SYNC_CREATE);
|
GObject.BindingFlags.SYNC_CREATE);
|
||||||
this._client.bind_property_full('active',
|
this._client.bind_property_full('adapter-state',
|
||||||
this, 'icon-name',
|
this, 'icon-name',
|
||||||
GObject.BindingFlags.SYNC_CREATE,
|
GObject.BindingFlags.SYNC_CREATE,
|
||||||
(bind, source) => [true, source ? 'bluetooth-active-symbolic' : 'bluetooth-disabled-symbolic'],
|
(bind, source) => [true, this._getIconNameFromState(source)],
|
||||||
null);
|
null);
|
||||||
|
|
||||||
this.connect('clicked', () => this._client.toggleActive());
|
this.connect('clicked', () => this._client.toggleActive());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
_getIconNameFromState(state) {
|
||||||
|
switch (state) {
|
||||||
|
case AdapterState.ON:
|
||||||
|
return 'bluetooth-active-symbolic';
|
||||||
|
case AdapterState.OFF:
|
||||||
|
case AdapterState.ABSENT:
|
||||||
|
return 'bluetooth-disabled-symbolic';
|
||||||
|
case AdapterState.TURNING_ON:
|
||||||
|
case AdapterState.TURNING_OFF:
|
||||||
|
return 'bluetooth-acquiring-symbolic';
|
||||||
|
default:
|
||||||
|
console.warn(`Unexpected state ${
|
||||||
|
GObject.enum_to_string(AdapterState, state)}`);
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var Indicator = GObject.registerClass(
|
var Indicator = GObject.registerClass(
|
||||||
|
Loading…
Reference in New Issue
Block a user