1 Ext.define('SenchaTouch.component.Settings', {
2 requires : ['Ext.data.Model', 'Ext.ModelManager', 'Ext.data.Store'],
3
4 doDefine : function(key) {
5 if (!Ext.ModelManager.isRegistered('Model' + key)) {
6 console.log('define model: Model' + key);
7 Ext.define('Model' + key, {
8 extend : 'Ext.data.Model',
9 config : {
10 fields : ['id', 'value'],
11 proxy : {
12 type : 'localstorage',
13 id : 'localSettings-' + key
14 }
15 }
16 });
17 }
18 },
19
20 get : function(key) {
21 this.doDefine(key);
22
23 var store = Ext.create('Ext.data.Store', {
24 model : 'Model' + key
25 });
26
27 try {
28 store.load();
29 } catch(e) {
30 return undefined;
31 }
32 var data = store.getData();
33 if (data.items.length > 0) {
34 return data.items[0].data.value;
35 } else {
36 return undefined;
37 }
38 },
39 set : function(key, value) {
40 this.doDefine(key);
41
42 var model = Ext.create('Model' + key, {
43 id : 1,
44 value : value
45 });
46
47 model.save();
48 },
49 remove : function(key) {
50 this.doDefine(key);
51 var store = Ext.create('Ext.data.Store', {
52 model : 'Model' + key
53 });
54
55 try {
56 store.load();
57 } catch(e) {
58 console.log('err');
59 return undefined;
60 }
61 var data = store.getData();
62 if (data.items.length > 0) {
63 data.each(function(record) {
64 record.erase();
65 record.destroy();
66 return true;
67 });
68 } else {
69 return undefined;
70 }
71 }
72 });