2013-06-17 21:54:43 +04:00
|
|
|
(function () {
|
2013-08-10 14:11:16 +04:00
|
|
|
var ns = $.namespace("pskl");
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
ns.UserSettings = {
|
2014-03-17 01:46:43 +04:00
|
|
|
GRID_WIDTH : 'GRID_WIDTH',
|
2013-08-10 14:11:16 +04:00
|
|
|
CANVAS_BACKGROUND : 'CANVAS_BACKGROUND',
|
2014-03-30 16:56:31 +04:00
|
|
|
SELECTED_PALETTE : 'SELECTED_PALETTE',
|
2014-05-08 03:41:14 +04:00
|
|
|
TILED_PREVIEW : 'TILED_PREVIEW',
|
2014-06-20 01:33:57 +04:00
|
|
|
OVERLAY : 'OVERLAY',
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
KEY_TO_DEFAULT_VALUE_MAP_ : {
|
2014-03-17 01:46:43 +04:00
|
|
|
'GRID_WIDTH' : 0,
|
2014-03-30 16:56:31 +04:00
|
|
|
'CANVAS_BACKGROUND' : 'lowcont-dark-canvas-background',
|
2014-05-12 02:18:34 +04:00
|
|
|
'SELECTED_PALETTE' : Constants.CURRENT_COLORS_PALETTE_ID,
|
2014-06-20 01:33:57 +04:00
|
|
|
'TILED_PREVIEW' : false,
|
|
|
|
'OVERLAY' : Constants.OVERLAY_ONION_SKIN
|
2013-08-10 14:11:16 +04:00
|
|
|
},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
cache_ : {},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
2013-09-29 01:52:51 +04:00
|
|
|
* Static method to access a user defined settings value ot its default
|
2013-08-10 14:11:16 +04:00
|
|
|
* value if not defined yet.
|
|
|
|
*/
|
|
|
|
get : function (key) {
|
|
|
|
this.checkKeyValidity_(key);
|
|
|
|
if (!(key in this.cache_)) {
|
|
|
|
this.cache_[key] =
|
|
|
|
this.readFromLocalStorage_(key) || this.readFromDefaults_(key);
|
|
|
|
}
|
|
|
|
return this.cache_[key];
|
|
|
|
},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
set : function (key, value) {
|
|
|
|
this.checkKeyValidity_(key);
|
|
|
|
this.cache_[key] = value;
|
|
|
|
this.writeToLocalStorage_(key, value);
|
2013-06-17 22:24:27 +04:00
|
|
|
|
2013-09-29 01:52:51 +04:00
|
|
|
$.publish(Events.USER_SETTINGS_CHANGED, [key, value]);
|
2013-08-10 14:11:16 +04:00
|
|
|
},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
readFromLocalStorage_ : function(key) {
|
|
|
|
var value = window.localStorage[key];
|
|
|
|
if (typeof value != "undefined") {
|
|
|
|
value = JSON.parse(value);
|
|
|
|
}
|
|
|
|
return value;
|
|
|
|
},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
writeToLocalStorage_ : function(key, value) {
|
|
|
|
// TODO(grosbouddha): Catch storage exception here.
|
|
|
|
window.localStorage[key] = JSON.stringify(value);
|
|
|
|
},
|
2013-06-19 03:51:53 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
readFromDefaults_ : function (key) {
|
|
|
|
return this.KEY_TO_DEFAULT_VALUE_MAP_[key];
|
|
|
|
},
|
2013-06-17 21:54:43 +04:00
|
|
|
|
2013-08-10 14:11:16 +04:00
|
|
|
/**
|
|
|
|
* @private
|
|
|
|
*/
|
|
|
|
checkKeyValidity_ : function(key) {
|
|
|
|
if(!(key in this.KEY_TO_DEFAULT_VALUE_MAP_)) {
|
|
|
|
// TODO(grosbouddha): Define error catching strategy and throw exception from here.
|
|
|
|
console.log("UserSettings key <"+ key +"> not find in supported keys.");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
2013-06-17 21:54:43 +04:00
|
|
|
})();
|