Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/apps/system/js/storage.js
diff options
context:
space:
mode:
Diffstat (limited to 'apps/system/js/storage.js')
-rw-r--r--apps/system/js/storage.js60
1 files changed, 60 insertions, 0 deletions
diff --git a/apps/system/js/storage.js b/apps/system/js/storage.js
new file mode 100644
index 0000000..ff7b10e
--- /dev/null
+++ b/apps/system/js/storage.js
@@ -0,0 +1,60 @@
+var Storage = {
+
+ automounterDisable: 0,
+ automounterEnable: 1,
+ automounterDisableWhenUnplugged: 2,
+
+ umsEnabled: 'ums.enabled',
+ umsMode: 'ums.mode',
+
+ init: function storageInit() {
+ this.setMode(this.automounterDisable, 'init');
+ window.addEventListener('lock', this);
+ window.addEventListener('unlock', this);
+
+ SettingsListener.observe(this.umsEnabled, false, function umsChanged(val) {
+ if (LockScreen.locked) {
+ // covers startup
+ Storage.setMode(Storage.automounterDisable, 'screen locked');
+ } else {
+ Storage.setMode(Storage.modeFromBool(val), 'change in ums.enabled');
+ }
+ });
+ },
+
+ modeFromBool: function storageModeFromBool(val) {
+ return val ? this.automounterEnable : this.automounterDisable;
+ },
+
+ setMode: function storageSetMode(val, reason) {
+ if (!window.navigator.mozSettings)
+ return;
+
+ //console.info('Setting', this.umsMode, 'to', val, 'due to', reason);
+ var param = {};
+ param[this.umsMode] = val;
+ SettingsListener.getSettingsLock().set(param);
+ },
+
+ handleEvent: function storageHandleEvent(e) {
+ switch (e.type) {
+ case 'lock':
+ this.setMode(this.automounterDisableWhenUnplugged, 'screen locked');
+ break;
+ case 'unlock':
+ if (!window.navigator.mozSettings)
+ return;
+
+ var req = SettingsListener.getSettingsLock().get(this.umsEnabled);
+ req.onsuccess = function umsEnabledFetched() {
+ var mode = Storage.modeFromBool(req.result[Storage.umsEnabled]);
+ Storage.setMode(mode, 'screen unlocked');
+ };
+ break;
+ default:
+ return;
+ }
+ }
+};
+
+Storage.init();