[gnome-shell] NetworkMenu: make the settings launcher point to the right devices
- From: Giovanni Campagna <gcampagna src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] NetworkMenu: make the settings launcher point to the right devices
- Date: Wed, 9 Oct 2013 16:40:58 +0000 (UTC)
commit 6a7d184b7b07effb9edb028f26603eda594fa57a
Author: Giovanni Campagna <gcampagna src gnome org>
Date: Wed Oct 2 19:39:58 2013 +0200
NetworkMenu: make the settings launcher point to the right devices
Tell gnome-control-center to focus on the associated device when
launching it from one of the submenus.
https://bugzilla.gnome.org/show_bug.cgi?id=709246
js/misc/util.js | 17 +++++++++++++++++
js/ui/status/network.js | 23 +++++++++++++++++++++--
2 files changed, 38 insertions(+), 2 deletions(-)
---
diff --git a/js/misc/util.js b/js/misc/util.js
index 9e8dfa4..6ffda1e 100644
--- a/js/misc/util.js
+++ b/js/misc/util.js
@@ -1,6 +1,7 @@
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
const Clutter = imports.gi.Clutter;
+const Gio = imports.gi.Gio;
const GLib = imports.gi.GLib;
const Lang = imports.lang;
const St = imports.gi.St;
@@ -79,6 +80,22 @@ function spawnCommandLine(command_line) {
}
}
+// spawnApp:
+// @argv: an argv array
+//
+// Runs @argv as if it was an application, handling startup notification
+function spawnApp(argv) {
+ try {
+ let app = Gio.AppInfo.create_from_commandline(argv.join(' '), null,
+ Gio.AppInfoCreateFlags.SUPPORTS_STARTUP_NOTIFICATION);
+
+ let context = global.create_app_launch_context();
+ app.launch([], context);
+ } catch(err) {
+ _handleSpawnError(argv[0], err);
+ }
+}
+
// trySpawn:
// @argv: an argv array
//
diff --git a/js/ui/status/network.js b/js/ui/status/network.js
index 10b3d34..d8b896c 100644
--- a/js/ui/status/network.js
+++ b/js/ui/status/network.js
@@ -83,6 +83,17 @@ function ensureActiveConnectionProps(active, settings) {
}
}
+function createSettingsAction(label, device) {
+ let item = new PopupMenu.PopupMenuItem(label);
+
+ item.connect('activate', function() {
+ Util.spawnApp(['gnome-control-center', 'network', 'show-device',
+ device.get_path()]);
+ });
+
+ return item;
+}
+
const NMConnectionItem = new Lang.Class({
Name: 'NMConnectionItem',
@@ -283,7 +294,6 @@ const NMConnectionDevice = new Lang.Class({
this._settings = settings;
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
- this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
this._stateChangedId = this._device.connect('state-changed', Lang.bind(this,
this._deviceStateChanged));
this._activeConnectionChangedId = this._device.connect('notify::active-connection', Lang.bind(this,
this._activeConnectionChanged));
@@ -413,6 +423,9 @@ const NMDeviceModem = new Lang.Class({
_init: function(client, device, settings) {
this.parent(client, device, settings);
+
+ this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
+
this._mobileDevice = null;
let capabilities = device.current_capabilities;
@@ -494,6 +507,12 @@ const NMDeviceBluetooth = new Lang.Class({
Extends: NMConnectionDevice,
category: NMConnectionCategory.WWAN,
+ _init: function(client, device, settings) {
+ this.parent(client, device, settings);
+
+ this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
+ },
+
_autoConnect: function() {
// FIXME: DUN devices are configured like modems, so
// We need to spawn the mobile wizard
@@ -975,7 +994,7 @@ const NMDeviceWireless = new Lang.Class({
this._toggleItem.connect('activate', Lang.bind(this, this._toggleWifi));
this.item.menu.addMenuItem(this._toggleItem);
- this.item.menu.addSettingsAction(_("Network Settings"), 'gnome-network-panel.desktop');
+ this.item.menu.addMenuItem(createSettingsAction(_("Wi-Fi Settings"), device));
this._wirelessEnabledChangedId = this._client.connect('notify::wireless-enabled', Lang.bind(this,
this._sync));
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled',
Lang.bind(this, this._sync));
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]