Adapt to mutter moving to GSettings
https://bugzilla.gnome.org/show_bug.cgi?id=663429
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*-
|
||||
|
||||
const GConf = imports.gi.GConf;
|
||||
const DBus = imports.dbus;
|
||||
const GDesktopEnums = imports.gi.GDesktopEnums;
|
||||
const Gio = imports.gi.Gio;
|
||||
const Gtk = imports.gi.Gtk;
|
||||
const Lang = imports.lang;
|
||||
@@ -29,8 +30,8 @@ const DPI_FACTOR_LARGE = 1.25;
|
||||
const DPI_FACTOR_LARGER = 1.5;
|
||||
const DPI_FACTOR_LARGEST = 2.0;
|
||||
|
||||
const KEY_META_DIR = '/apps/metacity/general';
|
||||
const KEY_VISUAL_BELL = KEY_META_DIR + '/visual_bell';
|
||||
const WM_SCHEMA = 'org.gnome.desktop.wm.preferences';
|
||||
const KEY_VISUAL_BELL_TYPE = 'visual-bell-type';
|
||||
|
||||
const DESKTOP_INTERFACE_SCHEMA = 'org.gnome.desktop.interface';
|
||||
const KEY_GTK_THEME = 'gtk-theme';
|
||||
@@ -49,10 +50,6 @@ ATIndicator.prototype = {
|
||||
_init: function() {
|
||||
PanelMenu.SystemStatusButton.prototype._init.call(this, 'preferences-desktop-accessibility', null);
|
||||
|
||||
let client = GConf.Client.get_default();
|
||||
client.add_dir(KEY_META_DIR, GConf.ClientPreloadType.PRELOAD_ONELEVEL, null);
|
||||
client.notify_add(KEY_META_DIR, Lang.bind(this, this._keyChanged), null, null);
|
||||
|
||||
let highContrast = this._buildHCItem();
|
||||
this.menu.addMenuItem(highContrast);
|
||||
|
||||
@@ -71,7 +68,7 @@ ATIndicator.prototype = {
|
||||
'screen-keyboard-enabled');
|
||||
this.menu.addMenuItem(screenKeyboard);
|
||||
|
||||
let visualBell = this._buildItemGConf(_("Visual Alerts"), client, KEY_VISUAL_BELL);
|
||||
let visualBell = this._buildVisualBellItem();
|
||||
this.menu.addMenuItem(visualBell);
|
||||
|
||||
let stickyKeys = this._buildItem(_("Sticky Keys"), A11Y_SCHEMA, KEY_STICKY_KEYS_ENABLED);
|
||||
@@ -101,22 +98,6 @@ ATIndicator.prototype = {
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildItemGConf: function(string, client, key) {
|
||||
function on_get() {
|
||||
return client.get_bool(key);
|
||||
}
|
||||
let widget = this._buildItemExtended(string,
|
||||
client.get_bool(key),
|
||||
client.key_is_writable(key),
|
||||
function(enabled) {
|
||||
client.set_bool(key, enabled);
|
||||
});
|
||||
this.connect('gconf-changed', function() {
|
||||
widget.setToggleState(client.get_bool(key));
|
||||
});
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildItem: function(string, schema, key) {
|
||||
let settings = new Gio.Settings({ schema: schema });
|
||||
let widget = this._buildItemExtended(string,
|
||||
@@ -131,6 +112,27 @@ ATIndicator.prototype = {
|
||||
return widget;
|
||||
},
|
||||
|
||||
_buildVisualBellItem: function() {
|
||||
let settings = new Gio.Settings({ schema: WM_SCHEMA });
|
||||
let currentValue = settings.get_enum(KEY_VISUAL_BELL_TYPE);
|
||||
let visualBellItem = this._buildItemExtended(
|
||||
_("Visual Alerts"),
|
||||
currentValue != GDesktopEnums.VisualBellType.NONE,
|
||||
settings.is_writable(KEY_VISUAL_BELL_TYPE),
|
||||
function(enabled) {
|
||||
if (enabled)
|
||||
settings.set_enum(KEY_VISUAL_BELL_TYPE,
|
||||
GDesktopEnums.VisualBellType.FULLSCREEN_FLASH);
|
||||
else
|
||||
settings.reset(KEY_VISUAL_BELL_TYPE);
|
||||
});
|
||||
settings.connect('changed::' + KEY_VISUAL_BELL_TYPE, function() {
|
||||
let value = settings.get_enum(KEY_VISUAL_BELL_TYPE);
|
||||
visualBellItem.setToggleState(value != GDesktopEnums.VisualBellType.NONE);
|
||||
});
|
||||
return visualBellItem;
|
||||
},
|
||||
|
||||
_buildHCItem: function() {
|
||||
let settings = new Gio.Settings({ schema: DESKTOP_INTERFACE_SCHEMA });
|
||||
let gtkTheme = settings.get_string(KEY_GTK_THEME);
|
||||
@@ -190,10 +192,6 @@ ATIndicator.prototype = {
|
||||
widget.setToggleState(active);
|
||||
});
|
||||
return widget;
|
||||
},
|
||||
|
||||
_keyChanged: function() {
|
||||
this.emit('gconf-changed');
|
||||
}
|
||||
};
|
||||
Signals.addSignalMethods(ATIndicator.prototype);
|
||||
|
Reference in New Issue
Block a user