status/location: Remove submenu

Location services aren't expected to change frequently: They are
either disabled globally, or permissions are granted on a per-app
basis.

This is less of a concern while the setting is exposed in a small
submenu, but as we moving to quick settings, it does not deserve
the prominence of a quick toggle. Just the top bar icon and Settings'
privacy panel should be enough.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2391>
This commit is contained in:
Florian Müllner 2022-07-27 04:38:21 +02:00 committed by Marge Bot
parent 3bc9f00a15
commit dc4ed1d7d2

View File

@ -4,9 +4,7 @@
const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi; const { Clutter, Gio, GLib, GObject, Shell, St } = imports.gi;
const Dialog = imports.ui.dialog; const Dialog = imports.ui.dialog;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu; const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const ModalDialog = imports.ui.modalDialog; const ModalDialog = imports.ui.modalDialog;
const PermissionStore = imports.misc.permissionStore; const PermissionStore = imports.misc.permissionStore;
@ -220,44 +218,6 @@ class Indicator extends PanelMenu.SystemIndicator {
this._indicator, this._indicator,
'visible', 'visible',
GObject.BindingFlags.SYNC_CREATE); GObject.BindingFlags.SYNC_CREATE);
this._item = new PopupMenu.PopupSubMenuMenuItem('', true);
this._item.icon.icon_name = 'find-location-symbolic';
this._agent.bind_property('in-use',
this._item,
'visible',
GObject.BindingFlags.SYNC_CREATE);
this._item.label.text = _('Location Enabled');
this._onOffAction = this._item.menu.addAction(_('Disable'),
() => (this._agent.enabled = !this._agent.enabled));
this._item.menu.addSettingsAction(_('Privacy Settings'), 'gnome-location-panel.desktop');
this.menu.addMenuItem(this._item);
this._agent.connectObject(
'notify::enabled', () => this._sync(),
'notify::in-use', () => this._sync(), this);
Main.sessionMode.connect('updated', this._onSessionUpdated.bind(this));
this._onSessionUpdated();
}
_onSessionUpdated() {
let sensitive = !Main.sessionMode.isLocked && !Main.sessionMode.isGreeter;
this.menu.setSensitive(sensitive);
}
_sync() {
if (this._agent.enabled) {
this._item.label.text = this._indicator.visible
? _('Location In Use')
: _('Location Enabled');
this._onOffAction.label.text = _('Disable');
} else {
this._item.label.text = _('Location Disabled');
this._onOffAction.label.text = _('Enable');
}
} }
}); });