* 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:
parent
9865da34cc
commit
1b46506cf8
|
@ -394,9 +394,13 @@ function Client(input, output) {
|
||||||
|
|
||||||
self.detachCurrentMenuModule = function() {
|
self.detachCurrentMenuModule = function() {
|
||||||
if(self.currentMenuModule) {
|
if(self.currentMenuModule) {
|
||||||
|
|
||||||
|
var savedState = self.currentMenuModule.getSaveState();
|
||||||
|
|
||||||
self.currentMenuModule.leave();
|
self.currentMenuModule.leave();
|
||||||
|
|
||||||
self.lastMenuModuleInfo = self.currentMenuModuleInfo;
|
self.lastMenuModuleInfo = self.currentMenuModuleInfo;
|
||||||
|
self.lastMenuModuleInfo.savedState = savedState;
|
||||||
|
|
||||||
self.currentMenuModule = null;
|
self.currentMenuModule = null;
|
||||||
}
|
}
|
||||||
|
@ -463,6 +467,10 @@ Client.prototype.gotoMenuModule = function(options, cb) {
|
||||||
extraArgs : options.extraArgs,
|
extraArgs : options.extraArgs,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(options.savedState) {
|
||||||
|
modInst.restoreSavedState(options.savedState);
|
||||||
|
}
|
||||||
|
|
||||||
modInst.enter(self);
|
modInst.enter(self);
|
||||||
|
|
||||||
if(!callbackOnErrorOnly) {
|
if(!callbackOnErrorOnly) {
|
||||||
|
@ -479,6 +487,7 @@ Client.prototype.fallbackMenuModule = function(cb) {
|
||||||
var modOpts = {
|
var modOpts = {
|
||||||
name : self.lastMenuModuleInfo.menuName,
|
name : self.lastMenuModuleInfo.menuName,
|
||||||
extraArgs : self.lastMenuModuleInfo.extraArgs,
|
extraArgs : self.lastMenuModuleInfo.extraArgs,
|
||||||
|
savedState : self.lastMenuModuleInfo.savedState,
|
||||||
};
|
};
|
||||||
|
|
||||||
self.gotoMenuModule(modOpts, cb);
|
self.gotoMenuModule(modOpts, cb);
|
||||||
|
|
|
@ -185,6 +185,7 @@ require('util').inherits(MenuModule, PluginModule);
|
||||||
|
|
||||||
require('./mod_mixins.js').ViewControllerManagement.call(MenuModule.prototype);
|
require('./mod_mixins.js').ViewControllerManagement.call(MenuModule.prototype);
|
||||||
|
|
||||||
|
|
||||||
MenuModule.prototype.enter = function(client) {
|
MenuModule.prototype.enter = function(client) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
assert(_.isObject(client));
|
assert(_.isObject(client));
|
||||||
|
@ -198,6 +199,14 @@ MenuModule.prototype.enter = function(client) {
|
||||||
this.initSequence();
|
this.initSequence();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
MenuModule.prototype.getSaveState = function() {
|
||||||
|
// nothing in base
|
||||||
|
};
|
||||||
|
|
||||||
|
MenuModule.prototype.restoreSavedState = function(savedState) {
|
||||||
|
// nothing in base
|
||||||
|
};
|
||||||
|
|
||||||
MenuModule.prototype.leave = function() {
|
MenuModule.prototype.leave = function() {
|
||||||
this.detachViewControllers();
|
this.detachViewControllers();
|
||||||
};
|
};
|
||||||
|
|
|
@ -55,6 +55,7 @@ function AreaViewFSEModule(options) {
|
||||||
this.menuMethods.movementKeyPressed = function(formData, extraArgs) {
|
this.menuMethods.movementKeyPressed = function(formData, extraArgs) {
|
||||||
var bodyView = self.viewControllers.body.getView(1);
|
var bodyView = self.viewControllers.body.getView(1);
|
||||||
|
|
||||||
|
// :TODO: Create methods for up/down vs using keyPressXXXXX
|
||||||
switch(formData.key.name) {
|
switch(formData.key.name) {
|
||||||
case 'down arrow' : bodyView.scrollDocumentUp(); break;
|
case 'down arrow' : bodyView.scrollDocumentUp(); break;
|
||||||
case 'up arrow' : bodyView.scrollDocumentDown(); break;
|
case 'up arrow' : bodyView.scrollDocumentDown(); break;
|
||||||
|
@ -94,3 +95,21 @@ AreaViewFSEModule.prototype.finishedLoading = function() {
|
||||||
this.loadMessageByUuid(this.messageList[this.messageIndex].messageUuid);
|
this.loadMessageByUuid(this.messageList[this.messageIndex].messageUuid);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
AreaViewFSEModule.prototype.getSaveState = function() {
|
||||||
|
AreaViewFSEModule.super_.prototype.getSaveState.call(this);
|
||||||
|
|
||||||
|
return {
|
||||||
|
messageList : this.messageList,
|
||||||
|
messageIndex : this.messageIndex,
|
||||||
|
messageTotal : this.messageList.length,
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
AreaViewFSEModule.prototype.restoreSavedState = function(savedState) {
|
||||||
|
AreaViewFSEModule.super_.prototype.restoreSavedState.call(this, savedState);
|
||||||
|
|
||||||
|
this.messageList = savedState.messageList;
|
||||||
|
this.messageIndex = savedState.messageIndex;
|
||||||
|
this.messageTotal = savedState.messageTotal;
|
||||||
|
};
|
Loading…
Reference in New Issue