[gnome-shell] network: Add a selected indicator to the current access point
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] network: Add a selected indicator to the current access point
- Date: Mon, 19 Aug 2013 15:25:06 +0000 (UTC)
commit 64efbe703a101a632b64338dc23cee064c09a3a3
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Mon Aug 19 10:31:31 2013 -0400
network: Add a selected indicator to the current access point
https://bugzilla.gnome.org/show_bug.cgi?id=706136
data/theme/gnome-shell.css | 4 ++++
js/ui/status/network.js | 39 ++++++++++++++++++++++++++++++++++-----
2 files changed, 38 insertions(+), 5 deletions(-)
---
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index 78b27d6..f5c50c4 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -312,6 +312,10 @@ StScrollBar StButton#vhandle:active {
background-color: #333;
}
+.nm-dialog-item-box {
+ spacing: 20px;
+}
+
.nm-dialog-icons {
spacing: .5em;
}
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index fb84e32..a06a5ce 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -524,18 +524,21 @@ const NMWirelessDialogItem = new Lang.Class({
this._label = new St.Label({ text: title });
this.actor.label_actor = this._label;
- this._content.add(this._label, { expand: true, x_align: St.Align.START });
+ this._content.add(this._label, { x_align: St.Align.START });
+
+ this._selectedIcon = new St.Icon({ style_class: 'nm-dialog-icon',
+ icon_name: 'object-select-symbolic' });
+ this._content.add(this._selectedIcon);
this._icons = new St.BoxLayout({ style_class: 'nm-dialog-icons' });
- this._content.add(this._icons, { x_fill: false, x_align: St.Align.END });
+ this._content.add(this._icons, { expand: true, x_fill: false, x_align: St.Align.END });
this._secureIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
if (this._ap._secType != NMAccessPointSecurity.NONE)
this._secureIcon.icon_name = 'network-wireless-encrypted-symbolic';
this._icons.add_actor(this._secureIcon);
- this._signalIcon = new St.Icon({ icon_name: this._getIcon(),
- style_class: 'nm-dialog-icon' });
+ this._signalIcon = new St.Icon({ style_class: 'nm-dialog-icon' });
this._icons.add_actor(this._signalIcon);
},
@@ -544,6 +547,10 @@ const NMWirelessDialogItem = new Lang.Class({
this._signalIcon.icon_name = this._getIcon();
},
+ setActive: function(isActive) {
+ this._selectedIcon.opacity = isActive ? 255 : 0;
+ },
+
_getIcon: function() {
if (this._ap.mode == NM80211Mode.ADHOC)
return 'network-workgroup-symbolic';
@@ -573,6 +580,7 @@ const NMWirelessDialog = new Lang.Class({
this._apAddedId = device.connect('access-point-added', Lang.bind(this, this._accessPointAdded));
this._apRemovedId = device.connect('access-point-removed', Lang.bind(this,
this._accessPointRemoved));
+ this._activeApChangedId = device.connect('notify::active-access-point', Lang.bind(this,
this._activeApChanged));
// accessPointAdded will also create dialog items
let accessPoints = device.get_access_points() || [ ];
@@ -581,6 +589,7 @@ const NMWirelessDialog = new Lang.Class({
}));
this._selectedNetwork = null;
+ this._activeApChanged();
this._updateSensitivity();
},
@@ -589,15 +598,34 @@ const NMWirelessDialog = new Lang.Class({
GObject.Object.prototype.disconnect.call(this._device, this._apAddedId);
this._apAddedId = 0;
}
-
if (this._apRemovedId) {
GObject.Object.prototype.disconnect.call(this._device, this._apRemovedId);
this._apRemovedId = 0;
}
+ if (this._activeApChangedId) {
+ GObject.Object.prototype.disconnect.call(this._device, this._activeApChangedId);
+ this._activeApChangedId = 0;
+ }
this.parent();
},
+ _activeApChanged: function() {
+ if (this._activeNetwork)
+ this._activeNetwork.item.setActive(false);
+
+ this._activeNetwork = null;
+ if (this._device.active_access_point) {
+ let idx = this._findNetwork(this._device.active_access_point);
+ if (idx >= 0)
+ this._activeNetwork = this._networks[idx];
+ }
+
+ if (this._activeNetwork)
+ this._activeNetwork.item.setActive(true);
+ this._updateSensitivity();
+ },
+
_updateSensitivity: function() {
let connectSensitive = this._selectedNetwork != null;
this._connectButton.reactive = connectSensitive;
@@ -891,6 +919,7 @@ const NMWirelessDialog = new Lang.Class({
_createNetworkItem: function(network) {
network.item = new NMWirelessDialogItem(network);
+ network.item.setActive(network == this._selectedNetwork);
network.item.connect('selected', Lang.bind(this, function() {
Util.ensureActorVisibleInScrollView(this._scrollView, network.item.actor);
this._selectNetwork(network);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]