Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP3:GA
gnome-shell.1083
vpn-indicator-and-menu-general-fix.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File vpn-indicator-and-menu-general-fix.patch of Package gnome-shell.1083
Index: js/ui/status/network.js =================================================================== --- js/ui/status/network.js.orig 2014-08-22 16:41:29.423305963 +0800 +++ js/ui/status/network.js 2014-08-25 18:20:45.904193093 +0800 @@ -20,6 +20,7 @@ const MessageTray = imports.ui.messageTr const ModalDialog = imports.ui.modalDialog; const ModemManager = imports.misc.modemManager; const Util = imports.misc.util; +const Shell = imports.gi.Shell; const NMConnectionCategory = { INVALID: 'invalid', @@ -218,6 +219,10 @@ const NMConnectionSection = new Lang.Cla this.item.label.text = ''; }, + getConnectLabel: function() { + return _("Connect"); + }, + _getMenuIcon: function() { return this.getIndicatorIcon(); }, @@ -1230,7 +1235,8 @@ const NMVPNConnectionItem = new Lang.Cla if (this._activeConnection == null) return false; - return this._activeConnection.vpn_state != NetworkManager.VPNConnectionState.DISCONNECTED; + return (this._activeConnection.vpn_state != NetworkManager.VPNConnectionState.DISCONNECTED + && this._activeConnection.vpn_state != NetworkManager.VPNConnectionState.FAILED); }, _buildUI: function() { @@ -1318,28 +1324,84 @@ 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.connect('icon-changed', Lang.bind(this, this._onBusyVPNConnection)); + this._sync(); }, _sync: function() { let nItems = this._connectionItems.size(); this.item.actor.visible = (nItems > 0); + + this._vpnSettings.label.text = "VPN " + _("Settings") + "..."; + this.parent(); }, + _onBusyVPNConnection: function() { + if (this._vpnOngoingConnection == null) + return; + + let activeConnection = this._vpnOngoingConnection._activeConnection; + if (activeConnection == null) + return; + + switch(activeConnection.vpn_state) { + case NetworkManager.VPNConnectionState.PREPARE: + case NetworkManager.VPNConnectionState.CONNECT: + case NetworkManager.VPNConnectionState.IP_CONFIG_GET: + case NetworkManager.VPNConnectionState.NEED_AUTH: + case NetworkManager.VPNConnectionState.ACTIVATED: + log ("Ongoing Connection: disable other vpn connections.") + for (let item of this._connectionItems.values()){ + if (item != this._vpnOngoingConnection) + item.radioItem.actor.reactive = false; + }; + break; + default: + this._vpnOngoingConnection = null; + } + }, + + _onSettingsActivate: function() { + let nItems = this._connectionItems.size(); + let connection = this._connections[0]; + Util.spawnApp(['gnome-control-center', 'network', 'show-device', + connection.get_path()]); + }, + _getDescription: function() { return _("VPN"); }, + _getStatus: function() { + let values = this._connectionItems.values(); + for (let item of values) { + if (item.isActive()) + return item.getName(); + } + + return _("Off"); + }, + _getMenuIcon: function() { return this.getIndicatorIcon() || 'network-vpn-symbolic'; }, activateConnection: function(connection) { + this._vpnOngoingConnection = this._connectionItems.get(connection.get_uuid()); + this._client.activate_connection(connection, null, null, null); }, deactivateConnection: function(activeConnection) { + this._vpnOngoingConnection = null; + this._client.deactivate_connection(activeConnection); }, @@ -1746,6 +1808,12 @@ const NMApplet = new Lang.Class({ }, _updateIcon: function() { + this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon(); + this._vpnIndicator.visible = (this._vpnIndicator.icon_name != ''); + + if (this._vpnIndicator.visible) + return; + if (!this._client.networking_enabled || !this._mainConnection) { this._primaryIndicator.icon_name = 'network-offline-symbolic'; this._primaryIndicator.visible = true; @@ -1755,8 +1823,5 @@ const NMApplet = new Lang.Class({ if (dev) this._primaryIndicator.icon_name = dev.getIndicatorIcon(); } - - this._vpnIndicator.icon_name = this._vpnSection.getIndicatorIcon(); - this._vpnIndicator.visible = (this._vpnIndicator.icon_name != ''); } });
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor