consolidated screen manager menu loop selection

This commit is contained in:
rljonesau 2019-03-15 22:34:25 +11:00
parent ead0411d7a
commit c7609a984f
11 changed files with 37 additions and 47 deletions

View file

@ -87,11 +87,11 @@ CClockScreen::keyHandler(uint8_t event)
}
// press UP
if(event & key_Up) {
_ScreenManager.selectBranchMenu(CScreenManager::SetClock); // switch to clock set screen
_ScreenManager.select(CScreenManager::SetClock); // switch to clock set screen
}
// press DOWN
if(event & key_Down) {
_ScreenManager.selectTimerMenuLoop(); // switch to timer set screen loop
_ScreenManager.select(CScreenManager::TimerMenuLoop); // switch to timer set screen loop
}
}
return true;

View file

@ -162,7 +162,7 @@ CExperimentalSettingsScreen::keyHandler(uint8_t event)
if(event & key_Centre) {
switch(_rowSel) {
case 0:
_ScreenManager.selectRootMenuLoop(); // force return to main menu
_ScreenManager.select(CScreenManager::RootMenuLoop); // force return to main menu
break;
case 1:
case 2:

View file

@ -122,7 +122,7 @@ CFuelMixtureScreen::keyHandler(uint8_t event)
if(event & key_Centre) {
switch(_rowSel) {
case 0:
_ScreenManager.selectRootMenuLoop();
_ScreenManager.select(CScreenManager::RootMenuLoop);
break;
case 1:
case 2:

View file

@ -216,7 +216,7 @@ CHeaterSettingsScreen::keyHandler(uint8_t event)
if(event & key_Centre) {
switch(_rowSel) {
case 0:
_ScreenManager.selectRootMenuLoop();
_ScreenManager.select(CScreenManager::RootMenuLoop);
break;
case 1:
case 2:

View file

@ -66,7 +66,7 @@ CInheritSettingsScreen::show()
switch(_nAdoptSettings) {
case 0:
_ScreenManager.selectRootMenuLoop(); // force return to main menu
_ScreenManager.select(CScreenManager::RootMenuLoop); // force return to main menu
_ScreenManager.reqUpdate();
return false;
case 1:

View file

@ -101,7 +101,7 @@ CScreenManager::CScreenManager()
{
_pDisplay = NULL;
_rootMenu = -1;
_cancelSideMenus();
_cancelNonRootMenus();
_bReqUpdate = false;
_DimTime = millis() + 60000;
_pRebootScreen = NULL;
@ -209,7 +209,7 @@ CScreenManager::checkUpdate()
_leaveScreen();
// fall back to main menu
selectRootMenuLoop();
select(RootMenuLoop);
// sticky screens are Detailed Control, Basic Control, or Clock.
// otherwise return to Basic Control screen
if(_rootMenu > 2) {
@ -364,45 +364,36 @@ CScreenManager::keyHandler(uint8_t event)
}
void
CScreenManager::_cancelSideMenus()
CScreenManager::_cancelNonRootMenus()
{
_timerMenu = -1;
_tuningMenu = -1;
_branchMenu = -1;
}
void
CScreenManager::selectTimerMenuLoop()
void
CScreenManager::select(eUILoops loop)
{
_leaveScreen();
_cancelSideMenus();
_timerMenu = 0;
_cancelNonRootMenus();
switch(loop) {
case RootMenuLoop:
break;
case TimerMenuLoop:
_timerMenu = 0;
break;
case TuningMenuLoop:
_tuningMenu = 0;
break;
}
_enterScreen();
}
void
CScreenManager::selectTuningMenuLoop()
CScreenManager::select(eUIBranches branch)
{
_leaveScreen();
_cancelSideMenus();
_tuningMenu = 0;
_enterScreen();
}
void
CScreenManager::selectRootMenuLoop()
{
_leaveScreen();
_cancelSideMenus();
_enterScreen();
}
void
CScreenManager::selectBranchMenu(eUIBranches branch)
{
_leaveScreen();
_cancelSideMenus();
_cancelNonRootMenus();
_branchMenu = branch;
_enterScreen();
}

View file

@ -45,9 +45,10 @@ class CScreenManager {
bool _bReqUpdate;
void _enterScreen();
void _leaveScreen();
void _cancelSideMenus();
void _cancelNonRootMenus();
public:
enum eUIBranches { SetClock, InheritSettings, Experimental };
enum eUILoops { RootMenuLoop, TimerMenuLoop, TuningMenuLoop };
public:
CScreenManager();
~CScreenManager();
@ -60,10 +61,8 @@ public:
void keyHandler(uint8_t event);
void reqUpdate();
void showRebootMsg(const char* content[2], long delayTime);
void selectBranchMenu(eUIBranches branch);
void selectTimerMenuLoop();
void selectTuningMenuLoop();
void selectRootMenuLoop();
void select(eUIBranches branch); // use to select branch menus
void select(eUILoops loop); // use to select loop menus, including the root or branches
};
#endif // __SCREEN_MANAGER_H__

View file

@ -144,7 +144,7 @@ CSetClockScreen::keyHandler(uint8_t event)
// press CENTRE
if(event & key_Centre) {
if(_rowSel == 0) {
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
}
else {
if(_rowSel == 7) { // set the RTC!
@ -157,7 +157,7 @@ CSetClockScreen::keyHandler(uint8_t event)
// press LEFT
if(event & key_Left) {
if(_rowSel == 0) {
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
}
else {
_adjTimeDate(-1);
@ -166,7 +166,7 @@ CSetClockScreen::keyHandler(uint8_t event)
// press RIGHT
if(event & key_Right) {
if(_rowSel == 0) {
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
}
else {
_adjTimeDate(+1);
@ -180,7 +180,7 @@ CSetClockScreen::keyHandler(uint8_t event)
// press DOWN
if(event & key_Down) {
if(_rowSel == 0) {
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
} else {
_rowSel--;
ROLLLOWERLIMIT(_rowSel, 1, 7);

View file

@ -161,7 +161,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
// press CENTRE
if(event & key_Centre) {
if(_rowSel == 0) {
_ScreenManager.selectRootMenuLoop(); // exit: return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit: return to clock screen
}
else if(_rowSel == 2) { // exit from per day settings
_rowSel = 1;

View file

@ -147,7 +147,7 @@ CSettingsScreen::keyHandler(uint8_t event)
{
if(CPasswordScreen::keyHandler(event)) {
if(_isPasswordOK()) {
_ScreenManager.selectTuningMenuLoop();
_ScreenManager.select(CScreenManager::TuningMenuLoop);
}
}
@ -168,7 +168,7 @@ CSettingsScreen::keyHandler(uint8_t event)
if(event & key_Centre)
_reqOEMWarning();
else {
_ScreenManager.selectBranchMenu(CScreenManager::InheritSettings);
_ScreenManager.select(CScreenManager::InheritSettings);
}
}
else {
@ -177,7 +177,7 @@ CSettingsScreen::keyHandler(uint8_t event)
}
// press DOWN
if(event & key_Down) {
_ScreenManager.selectBranchMenu(CScreenManager::Experimental);
_ScreenManager.select(CScreenManager::Experimental);
}
}
}

View file

@ -160,7 +160,7 @@ CTimerChartScreen::keyHandler(uint8_t event)
bHeld = false;
// press CENTRE
if(event & key_Centre) {
_ScreenManager.selectRootMenuLoop(); // exit: return to clock screen
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit: return to clock screen
}
// press LEFT - navigate fields, or screens
if(event & key_Left) {