d7fff75ebec8bc4719a6eebcc0801ad5c47ae5d2
[ccsdk/features.git] /
1 /**
2  * Copyright 2010-2013 Ben Birch
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this software except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *   http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 (function( app ) {
17         
18         var ux = app.ns("ux");
19         var services = app.ns("services");
20
21         services.Preferences = ux.Singleton.extend({
22                 init: function() {
23                         this._storage = window.localStorage;
24                         this._setItem("__version", 1 );
25                 },
26                 get: function( key ) {
27                         return this._getItem( key );
28                 },
29                 set: function( key, val ) {
30                         return this._setItem( key, val );
31                 },
32                 _getItem: function( key ) {
33                         try {
34                                 return JSON.parse( this._storage.getItem( key ) );
35                         } catch(e) {
36                                 console.warn( e );
37                                 return undefined;
38                         }
39                 },
40                 _setItem: function( key, val ) {
41                         try {
42                                 return this._storage.setItem( key, JSON.stringify( val ) );
43                         } catch(e) {
44                                 console.warn( e );
45                                 return undefined;
46                         }
47                 }
48         });
49
50 })( this.app );