extensionPrefs: Improve handling of OutOfDate extensions

Our current UI is horrible in dealing with outdated extensions - we
don't give users any indication at all that something is not working as
expected (unless hiding the prefs button as we did until the last commit
counts).
To fix this, make the enable switch insensitive to indicate OutOfDate
extensions.

https://bugzilla.gnome.org/show_bug.cgi?id=736185
This commit is contained in:
Florian Müllner 2014-09-06 15:27:52 +02:00
parent d209bc69b6
commit 593acb954d

View File

@ -281,6 +281,10 @@ const ExtensionRow = new Lang.Class({
function() { function() {
this._switch.state = this._isEnabled(); this._switch.state = this._isEnabled();
})); }));
this._settings.connect('changed::disable-extension-version-validation',
Lang.bind(this, function() {
this._switch.sensitive = this._canEnable();
}));
this._buildUI(); this._buildUI();
}, },
@ -319,6 +323,7 @@ const ExtensionRow = new Lang.Class({
this.prefsButton = button; this.prefsButton = button;
this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER, this._switch = new Gtk.Switch({ valign: Gtk.Align.CENTER,
sensitive: this._canEnable(),
state: this._isEnabled() }); state: this._isEnabled() });
this._switch.connect('notify::active', Lang.bind(this, this._switch.connect('notify::active', Lang.bind(this,
function() { function() {
@ -331,6 +336,13 @@ const ExtensionRow = new Lang.Class({
hbox.add(this._switch); hbox.add(this._switch);
}, },
_canEnable: function() {
let extension = ExtensionUtils.extensions[this.uuid];
let checkVersion = !this._settings.get_boolean('disable-extension-version-validation');
return !(checkVersion && ExtensionUtils.isOutOfDate(extension));
},
_isEnabled: function() { _isEnabled: function() {
let extensions = this._settings.get_strv('enabled-extensions'); let extensions = this._settings.get_strv('enabled-extensions');
return extensions.indexOf(this.uuid) != -1; return extensions.indexOf(this.uuid) != -1;