[gnome-shell] NetworkMenu: add VPN settings menu item



commit 1f786df4626f316cf76b6dcf4af52418dcd2541a
Author: Giovanni Campagna <gcampagna src gnome org>
Date:   Mon Feb 17 15:04:40 2014 +0100

    NetworkMenu: add VPN settings menu item
    
    Add a menu item that launches the VPN page of the network panel,
    or the network panel generically if multiple VPNs are configured.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=709167

 js/ui/status/network.js |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)
---
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index c8d69d9..32e177e 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");
     },


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]