consolidated screen manager menu loop selection
This commit is contained in:
parent
ead0411d7a
commit
c7609a984f
|
@ -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;
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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__
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
Loading…
Reference in a new issue