diff --git a/js/ui/status/network.js b/js/ui/status/network.js index c8d69d9c9..32e177ea2 100644 --- a/js/ui/status/network.js +++ b/js/ui/status/network.js @@ -9,6 +9,7 @@ const NetworkManager = imports.gi.NetworkManager; const NMClient = imports.gi.NMClient; const NMGtk = imports.gi.NMGtk; const Signals = imports.signals; +const Shell = imports.gi.Shell; const St = imports.gi.St; const Animation = imports.ui.animation; @@ -1417,15 +1418,39 @@ const NMVPNSection = new Lang.Class({ _init: function(client) { this.parent(client); + + this._vpnSettings = new PopupMenu.PopupMenuItem(''); + this.item.menu.addMenuItem(this._vpnSettings); + this._vpnSettings.connect('activate', Lang.bind(this, this._onSettingsActivate)); + this._sync(); }, _sync: function() { let nItems = this._connectionItems.size; this.item.actor.visible = (nItems > 0); + + if (nItems > 1) + this._vpnSettings.label.text = _("Network Settings"); + else + this._vpnSettings.label.text = _("VPN Settings"); + this.parent(); }, + _onSettingsActivate: function() { + let nItems = this._connectionItems.size; + if (nItems > 1) { + let appSys = Shell.AppSystem.get_default(); + let app = appSys.lookup_app('gnome-network-panel.desktop'); + app.launch(0, -1); + } else { + let connection = this._connections[0]; + Util.spawnApp(['gnome-control-center', 'network', 'show-device', + connection.get_path()]); + } + }, + _getDescription: function() { return _("VPN"); },