keeweb/app/scripts/models/app-settings-model.js

61 lines
1.7 KiB
JavaScript
Raw Normal View History

2015-10-17 23:49:24 +02:00
'use strict';
var Backbone = require('backbone'),
Launcher = require('../comp/launcher');
var FileName = 'app-settings.json';
2015-10-17 23:49:24 +02:00
var AppSettingsModel = Backbone.Model.extend({
defaults: {
2015-10-19 23:24:32 +02:00
theme: 'd',
2015-11-11 19:58:29 +01:00
expandGroups: true,
listViewWidth: null,
menuViewWidth: null,
2015-11-14 19:18:34 +01:00
tagsViewHeight: null,
autoUpdate: 'install',
2015-11-17 21:57:32 +01:00
clipboardSeconds: 0,
2015-11-21 07:49:39 +01:00
autoSave: true,
2015-11-17 22:49:12 +01:00
idleMinutes: 15
2015-10-17 23:49:24 +02:00
},
initialize: function() {
2015-10-24 21:06:44 +02:00
this.listenTo(this, 'change', this.save);
2015-10-17 23:49:24 +02:00
},
load: function() {
try {
var data;
if (Launcher) {
2015-11-14 12:09:36 +01:00
var settingsFile = Launcher.getUserDataPath(FileName);
if (Launcher.fileExists(settingsFile)) {
data = JSON.parse(Launcher.readFile(settingsFile, 'utf8'));
}
} else if (typeof localStorage !== 'undefined' && localStorage.appSettings) {
data = JSON.parse(localStorage.appSettings);
}
if (data) {
this.set(data, {silent: true});
}
2015-11-04 21:23:55 +01:00
} catch (e) {
console.error('Error loading settings', e);
2015-10-17 23:49:24 +02:00
}
},
save: function() {
try {
if (Launcher) {
Launcher.writeFile(Launcher.getUserDataPath(FileName), JSON.stringify(this.attributes));
} else if (typeof localStorage !== 'undefined') {
localStorage.appSettings = JSON.stringify(this.attributes);
}
2015-11-04 21:23:55 +01:00
} catch (e) {
console.error('Error saving settings', e);
2015-10-17 23:49:24 +02:00
}
}
});
AppSettingsModel.instance = new AppSettingsModel();
AppSettingsModel.instance.load();
module.exports = AppSettingsModel;