Adapt to mutter moving to GSettings

https://bugzilla.gnome.org/show_bug.cgi?id=663429
This commit is contained in:
Florian Müllner
2011-06-27 03:54:26 +02:00
parent de5b00fd52
commit a9ab8784c4
11 changed files with 97 additions and 187 deletions

View File

@@ -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);