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 });