/** * @class Ext.state.LocalStorageProvider * A Provider implementation which saves and retrieves state via the HTML5 localStorage object. * If the browser does not support local storage, there will be no attempt to read the state. * Before creating this class, a check should be made to {@link Ext.supports#LocalStorage}. */ Ext.define('Ext.state.LocalStorageProvider', { /* Begin Definitions */ extend: 'Ext.state.Provider', alias: 'state.localstorage', /* End Definitions */ constructor: function(){ var me = this; me.callParent(arguments); me.store = me.getStorageObject(); if (me.store) { me.state = me.readLocalStorage(); } else { me.state = {}; } }, readLocalStorage: function(){ var store = this.store, i = 0, len = store.length, prefix = this.prefix, prefixLen = prefix.length, data = {}, key; for (; i < len; ++i) { key = store.key(i); if (key.substring(0, prefixLen) == prefix) { data[key.substr(prefixLen)] = this.decodeValue(store.getItem(key)); } } return data; }, set : function(name, value){ var me = this; me.clear(name); if (typeof value == "undefined" || value === null) { return; } me.store.setItem(me.prefix + name, me.encodeValue(value)); me.callParent(arguments); }, // private clear : function(name){ this.store.removeItem(this.prefix + name); this.callParent(arguments); }, getStorageObject: function(){ if (Ext.supports.LocalStorage) { return window.localStorage; } //<debug> Ext.Error.raise('LocalStorage is not supported by the current browser'); //</debug> return false; } });