-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathgsettings_bridge.js
More file actions
114 lines (103 loc) · 3.48 KB
/
gsettings_bridge.js
File metadata and controls
114 lines (103 loc) · 3.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
/*
* GPII Node.js GSettings Bridge
*
* Copyright 2012 Steven Githens
*
* Licensed under the New BSD license. You may not use this file except in
* compliance with this License.
*
* You may obtain a copy of the License at
* https://github.com/GPII/linux/blob/master/LICENSE.txt
*
* The research leading to these results has received funding from the European Union's
* Seventh Framework Programme (FP7/2007-2013)
* under grant agreement no. 289016.
*/
"use strict";
var fluid = require("gpii-universal");
var gpii = fluid.registerNamespace("gpii");
var nodeGSettings = require("./nodegsettings/build/Release/nodegsettings.node");
fluid.registerNamespace("gpii.launch");
fluid.registerNamespace("gpii.gsettings");
fluid.defaults("gpii.gsettings.setSingleKey", {
gradeNames: "fluid.function",
argumentMap: {
schemaId: 0,
key: 1,
value: 2
}
});
fluid.defaults("gpii.gsettings.getSingleKey", {
gradeNames: "fluid.function",
argumentMap: {
schemaId: 0,
key: 1
}
});
gpii.gsettings.getSingleKey = function (schemaId, key) {
var keys = nodeGSettings.get_gsetting_keys(schemaId);
if (keys.indexOf(key) !== -1) {
return nodeGSettings.get_gsetting(schemaId, key);
} else {
return undefined;
}
};
gpii.gsettings.setSingleKey = function (schemaId, key, value) {
var keys = nodeGSettings.get_gsetting_keys(schemaId);
if (keys.indexOf(key) !== -1) {
nodeGSettings.set_gsetting(schemaId, key, value);
}
};
gpii.gsettings.get = function (settingsarray) {
var app = fluid.copy(settingsarray);
for (var appId in app) {
for (var j = 0; j < app[appId].length; j++) {
var schemaId = app[appId][j].options.schema;
var settings = app[appId][j].settings;
var keys = nodeGSettings.get_gsetting_keys(schemaId);
if (settings === null) {
settings = {};
for (var k = 0; k < keys.length; k++) {
var key = keys[k];
settings[key] = nodeGSettings.get_gsetting(schemaId, key);
}
}
else {
for (var settingKey in settings) {
if (keys.indexOf(settingKey) === -1) {
continue;
}
settings[settingKey] = nodeGSettings.get_gsetting(schemaId, settingKey);
}
}
var noOptions = { settings: settings };
app[appId][j] = noOptions;
}
}
return app;
};
gpii.gsettings.set = function (settingsarray) {
var app = fluid.copy(settingsarray);
for (var appId in app) {
for (var j = 0; j < app[appId].length; j++) {
var schemaId = app[appId][j].options.schema;
var settings = app[appId][j].settings;
var keys = nodeGSettings.get_gsetting_keys(schemaId);
for (var settingKey in settings) {
if (keys.indexOf(settingKey) === -1) {
continue;
}
var value = settings[settingKey];
var oldValue = nodeGSettings.get_gsetting(schemaId, settingKey);
nodeGSettings.set_gsetting(schemaId, settingKey, value);
settings[settingKey] = {
"oldValue": oldValue,
"newValue": value
};
}
var noOptions = { settings: settings};
app[appId][j] = noOptions;
}
}
return app;
};