network: Simplify connections to the firmware signal

The status item will go away soon, so make sure the one-time
fire is given its own function. At the same time, only connect
to the signal when the situation actually matters.

https://bugzilla.gnome.org/show_bug.cgi?id=701954
This commit is contained in:
Jasper St. Pierre 2013-06-11 21:06:58 -04:00
parent 465c77ddcf
commit 8bd4895538

View File

@ -376,6 +376,14 @@ const NMDevice = new Lang.Class({
// in the majority of cases (wired, wwan)
},
_firmwareChanged: function() {
if (this._firmwareChangedId) {
GObject.Object.prototype.disconnect.call(this._device, this._firmwareChangedId);
this._firmwareChangedId = 0;
}
this._substateChanged();
},
getStatusLabel: function() {
if (!this._device)
return null;
@ -403,9 +411,10 @@ const NMDevice = new Lang.Class({
// This state is actually a compound of various states (generically unavailable,
// firmware missing), that are exposed by different properties (whose state may
// or may not updated when we receive state-changed).
if (!this._firmwareChangedId)
this._firmwareChangedId = this._device.connect('notify::firmware-missing', Lang.bind(this, this._substateChanged));
if (this._device.firmware_missing) {
if (!this._firmwareChangedId)
this._firmwareChangedId = this._device.connect('notify::firmware-missing', Lang.bind(this, this._firmwareChanged));
/* Translators: this is for devices that require some kind of firmware or kernel
module, which is missing */
return _("firmware missing");
@ -522,11 +531,6 @@ const NMDevice = new Lang.Class({
},
_updateStatusItem: function() {
if (this._firmwareChangedId) {
GObject.Object.prototype.disconnect.call(this._device, this._firmwareChangedId);
this._firmwareChangedId = 0;
}
this.statusItem.setStatus(this.getStatusLabel());
this.statusItem.setToggleState(this.connected);
},