From c7609a984fe42c41cad2a13590464c5e571e6841 Mon Sep 17 00:00:00 2001 From: rljonesau Date: Fri, 15 Mar 2019 22:34:25 +1100 Subject: [PATCH] consolidated screen manager menu loop selection --- .../BTCDieselHeater/src/OLED/ClockScreen.cpp | 4 +- .../src/OLED/ExperimentalSettingsScreen.cpp | 2 +- .../src/OLED/FuelMixtureScreen.cpp | 2 +- .../src/OLED/HeaterSettingsScreen.cpp | 2 +- .../src/OLED/InheritSettingsScreen.cpp | 2 +- .../src/OLED/ScreenManager.cpp | 45 ++++++++----------- .../BTCDieselHeater/src/OLED/ScreenManager.h | 9 ++-- .../src/OLED/SetClockScreen.cpp | 8 ++-- .../src/OLED/SetTimerScreen.cpp | 2 +- .../src/OLED/SettingsScreen.cpp | 6 +-- .../src/OLED/TimerChartScreen.cpp | 2 +- 11 files changed, 37 insertions(+), 47 deletions(-) diff --git a/Arduino/BTCDieselHeater/src/OLED/ClockScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/ClockScreen.cpp index 9d2f5ea..fa77ebf 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ClockScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/ClockScreen.cpp @@ -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; diff --git a/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp index 17e03d3..4618d62 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp @@ -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: diff --git a/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp index 48654fd..f02a0c4 100644 --- a/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp @@ -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: diff --git a/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp index de19d7b..fda840b 100644 --- a/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp @@ -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: diff --git a/Arduino/BTCDieselHeater/src/OLED/InheritSettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/InheritSettingsScreen.cpp index f0d173c..a03640a 100644 --- a/Arduino/BTCDieselHeater/src/OLED/InheritSettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/InheritSettingsScreen.cpp @@ -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: diff --git a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp index d4bee13..c465ca3 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.cpp @@ -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(); } diff --git a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.h b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.h index 3613202..a5f533a 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ScreenManager.h +++ b/Arduino/BTCDieselHeater/src/OLED/ScreenManager.h @@ -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__ diff --git a/Arduino/BTCDieselHeater/src/OLED/SetClockScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/SetClockScreen.cpp index c18de20..df3f6cd 100644 --- a/Arduino/BTCDieselHeater/src/OLED/SetClockScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/SetClockScreen.cpp @@ -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); diff --git a/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp index 3c7feab..94996e2 100644 --- a/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp @@ -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; diff --git a/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp index 3a921a8..72f3392 100644 --- a/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp @@ -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); } } } diff --git a/Arduino/BTCDieselHeater/src/OLED/TimerChartScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/TimerChartScreen.cpp index 2aff82b..843ba6f 100644 --- a/Arduino/BTCDieselHeater/src/OLED/TimerChartScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/TimerChartScreen.cpp @@ -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) {