* New concept of saved states. Modules will be called before enter to restore a saved state (if applicable) and before leave to save one.

This commit is contained in:
Bryan Ashby
2015-09-17 23:11:21 -06:00
parent 9865da34cc
commit 1b46506cf8
3 changed files with 38 additions and 1 deletions

View File

@@ -394,9 +394,13 @@ function Client(input, output) {
self.detachCurrentMenuModule = function() {
if(self.currentMenuModule) {
var savedState = self.currentMenuModule.getSaveState();
self.currentMenuModule.leave();
self.lastMenuModuleInfo = self.currentMenuModuleInfo;
self.lastMenuModuleInfo = self.currentMenuModuleInfo;
self.lastMenuModuleInfo.savedState = savedState;
self.currentMenuModule = null;
}
@@ -463,6 +467,10 @@ Client.prototype.gotoMenuModule = function(options, cb) {
extraArgs : options.extraArgs,
}
if(options.savedState) {
modInst.restoreSavedState(options.savedState);
}
modInst.enter(self);
if(!callbackOnErrorOnly) {
@@ -479,6 +487,7 @@ Client.prototype.fallbackMenuModule = function(cb) {
var modOpts = {
name : self.lastMenuModuleInfo.menuName,
extraArgs : self.lastMenuModuleInfo.extraArgs,
savedState : self.lastMenuModuleInfo.savedState,
};
self.gotoMenuModule(modOpts, cb);

View File

@@ -185,6 +185,7 @@ require('util').inherits(MenuModule, PluginModule);
require('./mod_mixins.js').ViewControllerManagement.call(MenuModule.prototype);
MenuModule.prototype.enter = function(client) {
this.client = client;
assert(_.isObject(client));
@@ -198,6 +199,14 @@ MenuModule.prototype.enter = function(client) {
this.initSequence();
};
MenuModule.prototype.getSaveState = function() {
// nothing in base
};
MenuModule.prototype.restoreSavedState = function(savedState) {
// nothing in base
};
MenuModule.prototype.leave = function() {
this.detachViewControllers();
};