/** * @class Ext.air.FileProvider * @extends Ext.state.Provider * * An Ext state provider implementation for Adobe AIR that stores state in the application * storage directory. * * @constructor * @param {Object} config */ Ext.air.FileProvider = function(config){ Ext.air.FileProvider.superclass.constructor.call(this); this.defaultState = { mainWindow : { width:780, height:580, x:10, y:10 } }; Ext.apply(this, config); this.state = this.readState(); var provider = this; air.NativeApplication.nativeApplication.addEventListener('exiting', function(){ provider.saveState(); }); }; Ext.extend(Ext.air.FileProvider, Ext.state.Provider, {
/** * @cfg {String} file * The file name to use for the state file in the application storage directory */ file: 'extstate.data',
/** * @cfg {Object} defaultState * The default state if no state file can be found */ // private readState : function(){ var stateFile = air.File.applicationStorageDirectory.resolvePath(this.file); if(!stateFile.exists){ return this.defaultState || {}; } var stream = new air.FileStream(); stream.open(stateFile, air.FileMode.READ); var stateData = stream.readObject(); stream.close(); return stateData || this.defaultState || {}; }, // private saveState : function(name, value){ var stateFile = air.File.applicationStorageDirectory.resolvePath(this.file); var stream = new air.FileStream(); stream.open(stateFile, air.FileMode.WRITE); stream.writeObject(this.state); stream.close(); } });