status/network: Simplify notification code
There is only one case where we show a notification: When activating a connection failed. There is therefore no reason for a generic wrapper around the notification API. Likewise, tracking the source is a bit pointless, given that the notification is transient. In fact, as we destroy an existing notification *before* checking for the source, any previous source will be gone by that point. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2406>
This commit is contained in:
parent
3113e6ee21
commit
c33b5de174
@ -1814,17 +1814,6 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
this.menu.setSensitive(sensitive);
|
this.menu.setSensitive(sensitive);
|
||||||
}
|
}
|
||||||
|
|
||||||
_ensureSource() {
|
|
||||||
if (!this._source) {
|
|
||||||
this._source = new MessageTray.Source(_("Network Manager"),
|
|
||||||
'network-transmit-receive');
|
|
||||||
this._source.policy = new MessageTray.NotificationApplicationPolicy('gnome-network-panel');
|
|
||||||
|
|
||||||
this._source.connect('destroy', () => (this._source = null));
|
|
||||||
Main.messageTray.add(this._source);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_readDevices() {
|
_readDevices() {
|
||||||
let devices = this._client.get_devices() || [];
|
let devices = this._client.get_devices() || [];
|
||||||
for (let i = 0; i < devices.length; ++i) {
|
for (let i = 0; i < devices.length; ++i) {
|
||||||
@ -1837,29 +1826,24 @@ class Indicator extends PanelMenu.SystemIndicator {
|
|||||||
this._syncDeviceNames();
|
this._syncDeviceNames();
|
||||||
}
|
}
|
||||||
|
|
||||||
_notify(iconName, title, text, urgency) {
|
|
||||||
if (this._notification)
|
|
||||||
this._notification.destroy();
|
|
||||||
|
|
||||||
this._ensureSource();
|
|
||||||
|
|
||||||
let gicon = new Gio.ThemedIcon({ name: iconName });
|
|
||||||
this._notification = new MessageTray.Notification(this._source, title, text, { gicon });
|
|
||||||
this._notification.setUrgency(urgency);
|
|
||||||
this._notification.setTransient(true);
|
|
||||||
this._notification.connect('destroy', () => {
|
|
||||||
this._notification = null;
|
|
||||||
});
|
|
||||||
this._source.showNotification(this._notification);
|
|
||||||
}
|
|
||||||
|
|
||||||
_onActivationFailed() {
|
_onActivationFailed() {
|
||||||
// XXX: nm-applet has no special text depending on reason
|
this._notification?.destroy();
|
||||||
// but I'm not sure of this generic message
|
|
||||||
this._notify('network-error-symbolic',
|
const source = new MessageTray.Source(
|
||||||
_("Connection failed"),
|
_('Network Manager'), 'network-error-symbolic');
|
||||||
_("Activation of network connection failed"),
|
source.policy =
|
||||||
MessageTray.Urgency.HIGH);
|
new MessageTray.NotificationApplicationPolicy('gnome-network-panel');
|
||||||
|
|
||||||
|
this._notification = new MessageTray.Notification(source,
|
||||||
|
_('Connection failed'),
|
||||||
|
_('Activation of network connection failed'));
|
||||||
|
this._notification.setUrgency(MessageTray.Urgency.HIGH);
|
||||||
|
this._notification.setTransient(true);
|
||||||
|
this._notification.connect('destroy',
|
||||||
|
() => (this._notification = null));
|
||||||
|
|
||||||
|
Main.messageTray.add(source);
|
||||||
|
source.showNotification(this._notification);
|
||||||
}
|
}
|
||||||
|
|
||||||
_syncDeviceNames() {
|
_syncDeviceNames() {
|
||||||
|
Loading…
Reference in New Issue
Block a user