* Quote builder very functional, some bugs
* Work on fallback system (implicit); Added some notes... need saveState/restoreState type functionality as extraArgs may not be final args!
This commit is contained in:
parent
6970e6e2ab
commit
9865da34cc
|
@ -395,6 +395,9 @@ function Client(input, output) {
|
|||
self.detachCurrentMenuModule = function() {
|
||||
if(self.currentMenuModule) {
|
||||
self.currentMenuModule.leave();
|
||||
|
||||
self.lastMenuModuleInfo = self.currentMenuModuleInfo;
|
||||
|
||||
self.currentMenuModule = null;
|
||||
}
|
||||
};
|
||||
|
@ -446,24 +449,22 @@ Client.prototype.gotoMenuModule = function(options, cb) {
|
|||
extraArgs : options.extraArgs,
|
||||
};
|
||||
|
||||
menuUtil.loadMenu(loadOptions, function onMenuModuleLoaded(err, modInst) {
|
||||
menuUtil.loadMenu(loadOptions, function menuModuleLoaded(err, modInst) {
|
||||
if(err) {
|
||||
cb(err);
|
||||
} else {
|
||||
self.log.debug( { menuName : options.name }, 'Goto menu module');
|
||||
|
||||
if(self.currentMenuModule) {
|
||||
self.lastMenuModuleInfo = {
|
||||
name : self.currentMenuModule.modInfo.name,
|
||||
extraArgs : self.currentMenuModuleExtraArgs,
|
||||
};
|
||||
self.currentMenuModule = modInst; // :TODO: should probably be before enter() above
|
||||
|
||||
self.currentMenuModuleInfo = {
|
||||
// :TODO: This is quite the hack... doesn't seem right...
|
||||
menuName : self.currentMenuModule.menuName,
|
||||
extraArgs : options.extraArgs,
|
||||
}
|
||||
|
||||
modInst.enter(self);
|
||||
|
||||
self.currentMenuModule = modInst; // :TODO: should probably be before enter() above
|
||||
self.currentMenuModuleExtraArgs = options.extraArgs;
|
||||
|
||||
if(!callbackOnErrorOnly) {
|
||||
cb(null);
|
||||
}
|
||||
|
@ -476,11 +477,13 @@ Client.prototype.fallbackMenuModule = function(cb) {
|
|||
|
||||
if(self.lastMenuModuleInfo) {
|
||||
var modOpts = {
|
||||
name : self.lastMenuModuleInfo.name,
|
||||
name : self.lastMenuModuleInfo.menuName,
|
||||
extraArgs : self.lastMenuModuleInfo.extraArgs,
|
||||
};
|
||||
|
||||
self.gotoMenuModule(modOpts, cb);
|
||||
} else {
|
||||
cb(new Error('Nothing to fallback to!'));
|
||||
}
|
||||
};
|
||||
|
||||
|
|
30
core/fse.js
30
core/fse.js
|
@ -655,6 +655,19 @@ function FullScreenEditorModule(options) {
|
|||
self.viewControllers[self.getFooterName()].switchFocus(1); // HM1
|
||||
};
|
||||
|
||||
this.switchFromQuoteBuilderToBody = function() {
|
||||
self.viewControllers.quoteBuilder.setFocus(false);
|
||||
var body = self.viewControllers.body.getView(1);
|
||||
body.redraw();
|
||||
self.viewControllers.body.switchFocus(1);
|
||||
|
||||
// :TODO: create method (DRY)
|
||||
|
||||
self.updateTextEditMode(body.getTextEditMode());
|
||||
self.updateEditModePosition(body.getEditPosition());
|
||||
|
||||
self.observeEditorEvents();
|
||||
}
|
||||
|
||||
this.menuMethods = {
|
||||
// :TODO: rename to editModeHeaderSubmit
|
||||
|
@ -700,6 +713,7 @@ function FullScreenEditorModule(options) {
|
|||
if(self.newQuoteBlock) {
|
||||
self.newQuoteBlock = false;
|
||||
|
||||
// :TODO: Make date/time format avail as FSE config
|
||||
var dtFormat = self.client.currentTheme.helpers.getDateTimeFormat();
|
||||
quoteMsgView.addText(
|
||||
'On {0} {1} said...'.format(
|
||||
|
@ -711,7 +725,7 @@ function FullScreenEditorModule(options) {
|
|||
var quoteText = self.viewControllers.quoteBuilder.getView(3).getItem(formData.value.quote);
|
||||
quoteMsgView.addText(quoteText);
|
||||
|
||||
// :TODO: Menus need a setFocusIndex() call -- move down to next item here
|
||||
self.viewControllers.quoteBuilder.getView(3).focusNext();
|
||||
},
|
||||
quoteBuilderEscPressed : function(formData, extraArgs) {
|
||||
// :TODO: fix magic #'s
|
||||
|
@ -727,12 +741,16 @@ function FullScreenEditorModule(options) {
|
|||
|
||||
//self.redrawFooter( { clear : true, footerName : footerName }, function footerDisplayed(err) {
|
||||
self.footerMode = 'editor';
|
||||
|
||||
|
||||
self.switchFooter(function switched(err) {
|
||||
self.viewControllers.quoteBuilder.setFocus(false);
|
||||
self.viewControllers.body.redrawAll();
|
||||
self.viewControllers[footerName].redrawAll();
|
||||
self.viewControllers.body.switchFocus(1);
|
||||
self.switchFromQuoteBuilderToBody();
|
||||
});
|
||||
},
|
||||
replyDiscard : function(formData, extraArgs) {
|
||||
// :TODO: need to prompt yes/no
|
||||
// :TODO: @method for fallback would be better
|
||||
self.client.fallbackMenuModule(function fallback(err) {
|
||||
console.log(err)
|
||||
});
|
||||
},
|
||||
editModeMenuHelp : function(formData, extraArgs) {
|
||||
|
|
|
@ -110,7 +110,7 @@ function loadMenu(options, cb) {
|
|||
{
|
||||
menuName : options.name,
|
||||
menuConfig : modData.config,
|
||||
extraArgs : options.extraArgs,
|
||||
extraArgs : options.extraArgs
|
||||
});
|
||||
callback(null, moduleInstance);
|
||||
} catch(e) {
|
||||
|
|
|
@ -62,6 +62,14 @@ MenuView.prototype.getItem = function(index) {
|
|||
return this.items[index].text;
|
||||
};
|
||||
|
||||
MenuView.prototype.focusNext = function() {
|
||||
// nothing @ base currently
|
||||
};
|
||||
|
||||
MenuView.prototype.focusPrevious = function() {
|
||||
// nothign @ base currently
|
||||
};
|
||||
|
||||
MenuView.prototype.setFocusItems = function(items) {
|
||||
var self = this;
|
||||
|
||||
|
|
|
@ -151,7 +151,9 @@ VerticalMenuView.prototype.onKeyPress = function(ch, key) {
|
|||
if(key) {
|
||||
var prevFocusedItemIndex = this.focusedItemIndex;
|
||||
|
||||
if(this.isKeyMapped('up', key.name)) {
|
||||
if(this.isKeyMapped('up', key.name)) {
|
||||
this.focusPrevious();
|
||||
/*
|
||||
if(0 === this.focusedItemIndex) {
|
||||
this.focusedItemIndex = this.items.length - 1;
|
||||
|
||||
|
@ -169,8 +171,9 @@ VerticalMenuView.prototype.onKeyPress = function(ch, key) {
|
|||
this.viewWindow.bottom--;
|
||||
}
|
||||
}
|
||||
*/
|
||||
} else if(this.isKeyMapped('down', key.name)) {
|
||||
if(this.items.length - 1 === this.focusedItemIndex) {
|
||||
/*if(this.items.length - 1 === this.focusedItemIndex) {
|
||||
this.focusedItemIndex = 0;
|
||||
|
||||
this.viewWindow = {
|
||||
|
@ -185,11 +188,13 @@ VerticalMenuView.prototype.onKeyPress = function(ch, key) {
|
|||
this.viewWindow.bottom++;
|
||||
}
|
||||
}
|
||||
*/
|
||||
this.focusNext();
|
||||
}
|
||||
|
||||
if(prevFocusedItemIndex !== this.focusedItemIndex) {
|
||||
// :TODO: Optimize this for cases where no scrolling occured & only two items need updated
|
||||
this.redraw();
|
||||
// this.redraw();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -206,6 +211,54 @@ VerticalMenuView.prototype.setItems = function(items) {
|
|||
this.positionCacheExpired = true;
|
||||
};
|
||||
|
||||
|
||||
VerticalMenuView.prototype.focusNext = function() {
|
||||
VerticalMenuView.super_.prototype.focusNext.call(this);
|
||||
|
||||
if(this.items.length - 1 === this.focusedItemIndex) {
|
||||
this.focusedItemIndex = 0;
|
||||
|
||||
this.viewWindow = {
|
||||
top : 0,
|
||||
bottom : Math.min(this.focusedItemIndex + this.maxVisibleItems, this.items.length) - 1
|
||||
};
|
||||
} else {
|
||||
this.focusedItemIndex++;
|
||||
|
||||
if(this.focusedItemIndex > this.viewWindow.bottom) {
|
||||
this.viewWindow.top++;
|
||||
this.viewWindow.bottom++;
|
||||
}
|
||||
}
|
||||
|
||||
this.redraw();
|
||||
};
|
||||
|
||||
VerticalMenuView.prototype.focusPrevious = function() {
|
||||
VerticalMenuView.super_.prototype.focusPrevious.call(this);
|
||||
|
||||
if(0 === this.focusedItemIndex) {
|
||||
this.focusedItemIndex = this.items.length - 1;
|
||||
|
||||
this.viewWindow = {
|
||||
//top : this.items.length - this.maxVisibleItems,
|
||||
top : Math.max(this.items.length - this.maxVisibleItems, 0),
|
||||
bottom : this.items.length - 1
|
||||
};
|
||||
|
||||
} else {
|
||||
this.focusedItemIndex--;
|
||||
|
||||
if(this.focusedItemIndex < this.viewWindow.top) {
|
||||
this.viewWindow.top--;
|
||||
this.viewWindow.bottom--;
|
||||
}
|
||||
}
|
||||
|
||||
this.redraw();
|
||||
};
|
||||
|
||||
|
||||
VerticalMenuView.prototype.setFocusItems = function(items) {
|
||||
VerticalMenuView.super_.prototype.setFocusItems.call(this, items);
|
||||
|
||||
|
|
|
@ -570,7 +570,6 @@
|
|||
}
|
||||
},
|
||||
messageAreaReplyPost: {
|
||||
//module: msg_area_reply_fse
|
||||
module: msg_area_post_fse
|
||||
config: {
|
||||
art: {
|
||||
|
@ -579,7 +578,8 @@
|
|||
quote: MSGQUOT
|
||||
footerEditor: MSGEFTR
|
||||
footerEditorMenu: MSGEMFT
|
||||
// :TODO: help
|
||||
// :TODO: fix help
|
||||
help: demo_fse_netmail_help.ans
|
||||
}
|
||||
editorMode: edit
|
||||
editorType: area
|
||||
|
@ -647,10 +647,18 @@
|
|||
|
||||
submit: {
|
||||
*: [
|
||||
{
|
||||
value: { 1: 1 }
|
||||
action: @method:replyDiscard
|
||||
}
|
||||
{
|
||||
value: { 1: 2 },
|
||||
action: @method:editModeMenuQuote
|
||||
}
|
||||
{
|
||||
value: { 1: 3 }
|
||||
action: @method:editModeMenuHelp
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
|
@ -670,7 +678,6 @@
|
|||
height: 7
|
||||
}
|
||||
VM3: {
|
||||
//items: [ "just", "testing", "some", "things" ]
|
||||
width: 79
|
||||
height: 4
|
||||
argName: quote
|
||||
|
|
Loading…
Reference in New Issue