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
|
// press UP
|
||||||
if(event & key_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
|
// press DOWN
|
||||||
if(event & key_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;
|
return true;
|
||||||
|
|
|
@ -162,7 +162,7 @@ CExperimentalSettingsScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Centre) {
|
if(event & key_Centre) {
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 0:
|
case 0:
|
||||||
_ScreenManager.selectRootMenuLoop(); // force return to main menu
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // force return to main menu
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -122,7 +122,7 @@ CFuelMixtureScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Centre) {
|
if(event & key_Centre) {
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 0:
|
case 0:
|
||||||
_ScreenManager.selectRootMenuLoop();
|
_ScreenManager.select(CScreenManager::RootMenuLoop);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -216,7 +216,7 @@ CHeaterSettingsScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Centre) {
|
if(event & key_Centre) {
|
||||||
switch(_rowSel) {
|
switch(_rowSel) {
|
||||||
case 0:
|
case 0:
|
||||||
_ScreenManager.selectRootMenuLoop();
|
_ScreenManager.select(CScreenManager::RootMenuLoop);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
case 2:
|
case 2:
|
||||||
|
|
|
@ -66,7 +66,7 @@ CInheritSettingsScreen::show()
|
||||||
|
|
||||||
switch(_nAdoptSettings) {
|
switch(_nAdoptSettings) {
|
||||||
case 0:
|
case 0:
|
||||||
_ScreenManager.selectRootMenuLoop(); // force return to main menu
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // force return to main menu
|
||||||
_ScreenManager.reqUpdate();
|
_ScreenManager.reqUpdate();
|
||||||
return false;
|
return false;
|
||||||
case 1:
|
case 1:
|
||||||
|
|
|
@ -101,7 +101,7 @@ CScreenManager::CScreenManager()
|
||||||
{
|
{
|
||||||
_pDisplay = NULL;
|
_pDisplay = NULL;
|
||||||
_rootMenu = -1;
|
_rootMenu = -1;
|
||||||
_cancelSideMenus();
|
_cancelNonRootMenus();
|
||||||
_bReqUpdate = false;
|
_bReqUpdate = false;
|
||||||
_DimTime = millis() + 60000;
|
_DimTime = millis() + 60000;
|
||||||
_pRebootScreen = NULL;
|
_pRebootScreen = NULL;
|
||||||
|
@ -209,7 +209,7 @@ CScreenManager::checkUpdate()
|
||||||
|
|
||||||
_leaveScreen();
|
_leaveScreen();
|
||||||
// fall back to main menu
|
// fall back to main menu
|
||||||
selectRootMenuLoop();
|
select(RootMenuLoop);
|
||||||
// sticky screens are Detailed Control, Basic Control, or Clock.
|
// sticky screens are Detailed Control, Basic Control, or Clock.
|
||||||
// otherwise return to Basic Control screen
|
// otherwise return to Basic Control screen
|
||||||
if(_rootMenu > 2) {
|
if(_rootMenu > 2) {
|
||||||
|
@ -364,45 +364,36 @@ CScreenManager::keyHandler(uint8_t event)
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::_cancelSideMenus()
|
CScreenManager::_cancelNonRootMenus()
|
||||||
{
|
{
|
||||||
_timerMenu = -1;
|
_timerMenu = -1;
|
||||||
_tuningMenu = -1;
|
_tuningMenu = -1;
|
||||||
_branchMenu = -1;
|
_branchMenu = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::selectTimerMenuLoop()
|
CScreenManager::select(eUILoops loop)
|
||||||
{
|
{
|
||||||
_leaveScreen();
|
_leaveScreen();
|
||||||
_cancelSideMenus();
|
_cancelNonRootMenus();
|
||||||
_timerMenu = 0;
|
switch(loop) {
|
||||||
|
case RootMenuLoop:
|
||||||
|
break;
|
||||||
|
case TimerMenuLoop:
|
||||||
|
_timerMenu = 0;
|
||||||
|
break;
|
||||||
|
case TuningMenuLoop:
|
||||||
|
_tuningMenu = 0;
|
||||||
|
break;
|
||||||
|
}
|
||||||
_enterScreen();
|
_enterScreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
CScreenManager::selectTuningMenuLoop()
|
CScreenManager::select(eUIBranches branch)
|
||||||
{
|
{
|
||||||
_leaveScreen();
|
_leaveScreen();
|
||||||
_cancelSideMenus();
|
_cancelNonRootMenus();
|
||||||
_tuningMenu = 0;
|
|
||||||
_enterScreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
void
|
|
||||||
CScreenManager::selectRootMenuLoop()
|
|
||||||
{
|
|
||||||
_leaveScreen();
|
|
||||||
_cancelSideMenus();
|
|
||||||
_enterScreen();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void
|
|
||||||
CScreenManager::selectBranchMenu(eUIBranches branch)
|
|
||||||
{
|
|
||||||
_leaveScreen();
|
|
||||||
_cancelSideMenus();
|
|
||||||
_branchMenu = branch;
|
_branchMenu = branch;
|
||||||
_enterScreen();
|
_enterScreen();
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,9 +45,10 @@ class CScreenManager {
|
||||||
bool _bReqUpdate;
|
bool _bReqUpdate;
|
||||||
void _enterScreen();
|
void _enterScreen();
|
||||||
void _leaveScreen();
|
void _leaveScreen();
|
||||||
void _cancelSideMenus();
|
void _cancelNonRootMenus();
|
||||||
public:
|
public:
|
||||||
enum eUIBranches { SetClock, InheritSettings, Experimental };
|
enum eUIBranches { SetClock, InheritSettings, Experimental };
|
||||||
|
enum eUILoops { RootMenuLoop, TimerMenuLoop, TuningMenuLoop };
|
||||||
public:
|
public:
|
||||||
CScreenManager();
|
CScreenManager();
|
||||||
~CScreenManager();
|
~CScreenManager();
|
||||||
|
@ -60,10 +61,8 @@ public:
|
||||||
void keyHandler(uint8_t event);
|
void keyHandler(uint8_t event);
|
||||||
void reqUpdate();
|
void reqUpdate();
|
||||||
void showRebootMsg(const char* content[2], long delayTime);
|
void showRebootMsg(const char* content[2], long delayTime);
|
||||||
void selectBranchMenu(eUIBranches branch);
|
void select(eUIBranches branch); // use to select branch menus
|
||||||
void selectTimerMenuLoop();
|
void select(eUILoops loop); // use to select loop menus, including the root or branches
|
||||||
void selectTuningMenuLoop();
|
|
||||||
void selectRootMenuLoop();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __SCREEN_MANAGER_H__
|
#endif // __SCREEN_MANAGER_H__
|
||||||
|
|
|
@ -144,7 +144,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
// press CENTRE
|
// press CENTRE
|
||||||
if(event & key_Centre) {
|
if(event & key_Centre) {
|
||||||
if(_rowSel == 0) {
|
if(_rowSel == 0) {
|
||||||
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(_rowSel == 7) { // set the RTC!
|
if(_rowSel == 7) { // set the RTC!
|
||||||
|
@ -157,7 +157,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
// press LEFT
|
// press LEFT
|
||||||
if(event & key_Left) {
|
if(event & key_Left) {
|
||||||
if(_rowSel == 0) {
|
if(_rowSel == 0) {
|
||||||
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_adjTimeDate(-1);
|
_adjTimeDate(-1);
|
||||||
|
@ -166,7 +166,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
// press RIGHT
|
// press RIGHT
|
||||||
if(event & key_Right) {
|
if(event & key_Right) {
|
||||||
if(_rowSel == 0) {
|
if(_rowSel == 0) {
|
||||||
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
_adjTimeDate(+1);
|
_adjTimeDate(+1);
|
||||||
|
@ -180,7 +180,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
||||||
// press DOWN
|
// press DOWN
|
||||||
if(event & key_Down) {
|
if(event & key_Down) {
|
||||||
if(_rowSel == 0) {
|
if(_rowSel == 0) {
|
||||||
_ScreenManager.selectRootMenuLoop(); // exit, return to clock screen
|
_ScreenManager.select(CScreenManager::RootMenuLoop); // exit, return to clock screen
|
||||||
} else {
|
} else {
|
||||||
_rowSel--;
|
_rowSel--;
|
||||||
ROLLLOWERLIMIT(_rowSel, 1, 7);
|
ROLLLOWERLIMIT(_rowSel, 1, 7);
|
||||||
|
|
|
@ -161,7 +161,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
||||||
// press CENTRE
|
// press CENTRE
|
||||||
if(event & key_Centre) {
|
if(event & key_Centre) {
|
||||||
if(_rowSel == 0) {
|
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
|
else if(_rowSel == 2) { // exit from per day settings
|
||||||
_rowSel = 1;
|
_rowSel = 1;
|
||||||
|
|
|
@ -147,7 +147,7 @@ CSettingsScreen::keyHandler(uint8_t event)
|
||||||
{
|
{
|
||||||
if(CPasswordScreen::keyHandler(event)) {
|
if(CPasswordScreen::keyHandler(event)) {
|
||||||
if(_isPasswordOK()) {
|
if(_isPasswordOK()) {
|
||||||
_ScreenManager.selectTuningMenuLoop();
|
_ScreenManager.select(CScreenManager::TuningMenuLoop);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ CSettingsScreen::keyHandler(uint8_t event)
|
||||||
if(event & key_Centre)
|
if(event & key_Centre)
|
||||||
_reqOEMWarning();
|
_reqOEMWarning();
|
||||||
else {
|
else {
|
||||||
_ScreenManager.selectBranchMenu(CScreenManager::InheritSettings);
|
_ScreenManager.select(CScreenManager::InheritSettings);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -177,7 +177,7 @@ CSettingsScreen::keyHandler(uint8_t event)
|
||||||
}
|
}
|
||||||
// press DOWN
|
// press DOWN
|
||||||
if(event & key_Down) {
|
if(event & key_Down) {
|
||||||
_ScreenManager.selectBranchMenu(CScreenManager::Experimental);
|
_ScreenManager.select(CScreenManager::Experimental);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,7 +160,7 @@ CTimerChartScreen::keyHandler(uint8_t event)
|
||||||
bHeld = false;
|
bHeld = false;
|
||||||
// press CENTRE
|
// press CENTRE
|
||||||
if(event & key_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
|
// press LEFT - navigate fields, or screens
|
||||||
if(event & key_Left) {
|
if(event & key_Left) {
|
||||||
|
|
Loading…
Reference in a new issue