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
This commit is contained in:
parent
bde5cfc8bb
commit
6a7d184b7b
@ -1,6 +1,7 @@
|
|||||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||||
|
|
||||||
const Clutter = imports.gi.Clutter;
|
const Clutter = imports.gi.Clutter;
|
||||||
|
const Gio = imports.gi.Gio;
|
||||||
const GLib = imports.gi.GLib;
|
const GLib = imports.gi.GLib;
|
||||||
const Lang = imports.lang;
|
const Lang = imports.lang;
|
||||||
const St = imports.gi.St;
|
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:
|
// trySpawn:
|
||||||
// @argv: an argv array
|
// @argv: an argv array
|
||||||
//
|
//
|
||||||
|
@ -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({
|
const NMConnectionItem = new Lang.Class({
|
||||||
Name: 'NMConnectionItem',
|
Name: 'NMConnectionItem',
|
||||||
|
|
||||||
@ -283,7 +294,6 @@ const NMConnectionDevice = new Lang.Class({
|
|||||||
this._settings = settings;
|
this._settings = settings;
|
||||||
|
|
||||||
this._autoConnectItem = this.item.menu.addAction(_("Connect"), Lang.bind(this, this._autoConnect));
|
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._stateChangedId = this._device.connect('state-changed', Lang.bind(this, this._deviceStateChanged));
|
||||||
this._activeConnectionChangedId = this._device.connect('notify::active-connection', Lang.bind(this, this._activeConnectionChanged));
|
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) {
|
_init: function(client, device, settings) {
|
||||||
this.parent(client, device, settings);
|
this.parent(client, device, settings);
|
||||||
|
|
||||||
|
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
|
||||||
|
|
||||||
this._mobileDevice = null;
|
this._mobileDevice = null;
|
||||||
|
|
||||||
let capabilities = device.current_capabilities;
|
let capabilities = device.current_capabilities;
|
||||||
@ -494,6 +507,12 @@ const NMDeviceBluetooth = new Lang.Class({
|
|||||||
Extends: NMConnectionDevice,
|
Extends: NMConnectionDevice,
|
||||||
category: NMConnectionCategory.WWAN,
|
category: NMConnectionCategory.WWAN,
|
||||||
|
|
||||||
|
_init: function(client, device, settings) {
|
||||||
|
this.parent(client, device, settings);
|
||||||
|
|
||||||
|
this.item.menu.addMenuItem(createSettingsAction(_("Mobile Broadband Settings"), device));
|
||||||
|
},
|
||||||
|
|
||||||
_autoConnect: function() {
|
_autoConnect: function() {
|
||||||
// FIXME: DUN devices are configured like modems, so
|
// FIXME: DUN devices are configured like modems, so
|
||||||
// We need to spawn the mobile wizard
|
// 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._toggleItem.connect('activate', Lang.bind(this, this._toggleWifi));
|
||||||
this.item.menu.addMenuItem(this._toggleItem);
|
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._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));
|
this._wirelessHwEnabledChangedId = this._client.connect('notify::wireless-hardware-enabled', Lang.bind(this, this._sync));
|
||||||
|
Loading…
Reference in New Issue
Block a user