Added initUI calls, along with onSelect when screens come into view - ensures fresh start every time
This commit is contained in:
parent
5875a30064
commit
12ed7301dc
20 changed files with 164 additions and 39 deletions
|
@ -37,19 +37,27 @@
|
|||
|
||||
CFuelMixtureScreen::CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||
{
|
||||
_rowSel = 0;
|
||||
_colSel = 0;
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CFuelMixtureScreen::onSelect()
|
||||
{
|
||||
CPasswordScreen::onSelect();
|
||||
_initUI();
|
||||
adjPump[0] = getHeaterInfo().getPump_Min();
|
||||
adjPump[1] = getHeaterInfo().getPump_Max();
|
||||
adjFan[0] = getHeaterInfo().getFan_Min();
|
||||
adjFan[1] = getHeaterInfo().getFan_Max();
|
||||
}
|
||||
|
||||
void
|
||||
CFuelMixtureScreen::_initUI()
|
||||
{
|
||||
_rowSel = 0;
|
||||
_colSel = 0;
|
||||
}
|
||||
|
||||
bool
|
||||
CFuelMixtureScreen::show()
|
||||
{
|
||||
|
|
|
@ -34,6 +34,7 @@ class CFuelMixtureScreen : public CPasswordScreen {
|
|||
int _rowSel;
|
||||
int _colSel;
|
||||
void _adjustSetting(int dir);
|
||||
void _initUI();
|
||||
|
||||
public:
|
||||
CFuelMixtureScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
|
|
|
@ -42,21 +42,29 @@ static const int plugPowers[] = { 35, 40, 45, 80, 85, 90};
|
|||
|
||||
CHeaterSettingsScreen::CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||
{
|
||||
_rowSel = 0;
|
||||
_initUI();
|
||||
_fanSensor = 1;
|
||||
_glowDrive = 5;
|
||||
_sysVoltage = 12;
|
||||
_animateCount = 0;
|
||||
}
|
||||
|
||||
void
|
||||
CHeaterSettingsScreen::onSelect()
|
||||
{
|
||||
CPasswordScreen::onSelect();
|
||||
_initUI();
|
||||
_fanSensor = getHeaterInfo().getFan_Sensor();
|
||||
_glowDrive = getHeaterInfo().getGlow_Drive();
|
||||
_sysVoltage = int(getHeaterInfo().getSystemVoltage());
|
||||
}
|
||||
|
||||
void
|
||||
CHeaterSettingsScreen::_initUI()
|
||||
{
|
||||
_rowSel = 0;
|
||||
_animateCount = 0;
|
||||
}
|
||||
|
||||
bool
|
||||
CHeaterSettingsScreen::show()
|
||||
{
|
||||
|
|
|
@ -36,6 +36,7 @@ class CHeaterSettingsScreen : public CPasswordScreen
|
|||
int _fanSensor;
|
||||
int _glowDrive;
|
||||
int _animateCount;
|
||||
void _initUI();
|
||||
public:
|
||||
CHeaterSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
bool show();
|
||||
|
|
|
@ -36,6 +36,18 @@
|
|||
|
||||
|
||||
CPasswordScreen::CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CPasswordScreen::onSelect()
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CPasswordScreen::_initUI()
|
||||
{
|
||||
_bGetPassword = false;
|
||||
_bPasswordOK = false;
|
||||
|
@ -45,7 +57,6 @@ CPasswordScreen::CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr) : C
|
|||
_SaveTime = 0;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CPasswordScreen::show()
|
||||
{
|
||||
|
|
|
@ -38,8 +38,10 @@ protected:
|
|||
void _getPassword();
|
||||
bool _isPasswordOK() { return _bPasswordOK; };
|
||||
void _showStoringMessage();
|
||||
void _initUI();
|
||||
public:
|
||||
CPasswordScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
void onSelect();
|
||||
bool show();
|
||||
bool keyHandler(uint8_t event);
|
||||
bool animate();
|
||||
|
|
|
@ -35,6 +35,26 @@
|
|||
|
||||
|
||||
CPrimingScreen::CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CPrimingScreen::onSelect()
|
||||
{
|
||||
_stopPump();
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CPrimingScreen::onExit()
|
||||
{
|
||||
_stopPump();
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
CPrimingScreen::_initUI()
|
||||
{
|
||||
_PrimeStop = 0;
|
||||
_PrimeCheck = 0;
|
||||
|
@ -42,7 +62,6 @@ CPrimingScreen::CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr) : CSc
|
|||
_colSel = 0;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CPrimingScreen::show()
|
||||
{
|
||||
|
@ -92,12 +111,12 @@ CPrimingScreen::show()
|
|||
// recognise if heater has stopped pump, after an initial holdoff upon first starting
|
||||
long tDelta = millis() - _PrimeCheck;
|
||||
if(_PrimeCheck && tDelta > 0 && pumpHz < 0.1) {
|
||||
stopPump();
|
||||
_stopPump();
|
||||
}
|
||||
// test if time is up, stop priming if so
|
||||
tDelta = millis() - _PrimeStop;
|
||||
if(_PrimeStop && tDelta > 0) {
|
||||
stopPump();
|
||||
_stopPump();
|
||||
}
|
||||
|
||||
if(_PrimeStop) {
|
||||
|
@ -191,7 +210,7 @@ CPrimingScreen::keyHandler(uint8_t event)
|
|||
_PrimeCheck = millis() + 3000; // holdoff upon start before testing for heater shutting off pump
|
||||
}
|
||||
else {
|
||||
stopPump();
|
||||
_stopPump();
|
||||
}
|
||||
|
||||
_ScreenManager.reqUpdate();
|
||||
|
@ -200,7 +219,7 @@ CPrimingScreen::keyHandler(uint8_t event)
|
|||
}
|
||||
|
||||
void
|
||||
CPrimingScreen::stopPump()
|
||||
CPrimingScreen::_stopPump()
|
||||
{
|
||||
reqPumpPrime(false);
|
||||
_PrimeCheck = 0;
|
||||
|
|
|
@ -33,9 +33,12 @@ class CPrimingScreen : public CScreenHeader {
|
|||
unsigned long _PrimeCheck;
|
||||
int _rowSel;
|
||||
int _colSel;
|
||||
void stopPump();
|
||||
void _stopPump();
|
||||
void _initUI();
|
||||
public:
|
||||
CPrimingScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
void onSelect();
|
||||
void onExit();
|
||||
bool show();
|
||||
bool keyHandler(uint8_t event);
|
||||
bool animate() { return CScreen::animate(); };
|
||||
|
|
|
@ -44,6 +44,10 @@ CScreen::onSelect()
|
|||
{
|
||||
}
|
||||
|
||||
void
|
||||
CScreen::onExit()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
CScreen::_printMenuText(int x, int y, const char* str, bool selected, eJUSTIFY justify, int border, int radius)
|
||||
|
|
|
@ -49,6 +49,7 @@ public:
|
|||
CScreen(C128x64_OLED& disp, CScreenManager& mgr);
|
||||
virtual ~CScreen();
|
||||
virtual void onSelect();
|
||||
virtual void onExit();
|
||||
virtual bool animate();
|
||||
virtual bool show();
|
||||
virtual bool keyHandler(uint8_t event) { return false; };
|
||||
|
|
|
@ -172,7 +172,7 @@ CScreenManager::begin(bool bNoClock)
|
|||
_currentScreen = 1; // basic control screen
|
||||
#endif
|
||||
|
||||
_switchScreen();
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -186,6 +186,7 @@ CScreenManager::checkUpdate()
|
|||
_pDisplay->dim(true);
|
||||
_DimTime = 0;
|
||||
|
||||
_leaveScreen();
|
||||
// fall back to main menu
|
||||
selectTimerScreen(false);
|
||||
selectSetTimeScreen(false);
|
||||
|
@ -195,6 +196,7 @@ CScreenManager::checkUpdate()
|
|||
if(_currentScreen > 2) {
|
||||
_currentScreen = 1;
|
||||
}
|
||||
_enterScreen();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -253,7 +255,7 @@ CScreenManager::refresh()
|
|||
}
|
||||
|
||||
void
|
||||
CScreenManager::_switchScreen()
|
||||
CScreenManager::_enterScreen()
|
||||
{
|
||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onSelect();
|
||||
|
@ -262,9 +264,19 @@ CScreenManager::_switchScreen()
|
|||
reqUpdate();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::_leaveScreen()
|
||||
{
|
||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onExit();
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onExit();
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->onExit();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::nextScreen()
|
||||
{
|
||||
_leaveScreen();
|
||||
|
||||
if(_bSetTime) {
|
||||
|
||||
}
|
||||
|
@ -280,12 +292,15 @@ CScreenManager::nextScreen()
|
|||
_currentScreen++;
|
||||
ROLLUPPERLIMIT(_currentScreen, _Screens.size()-1, 0);
|
||||
}
|
||||
_switchScreen();
|
||||
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::prevScreen()
|
||||
{
|
||||
_leaveScreen();
|
||||
|
||||
if(_bSetTime) {
|
||||
}
|
||||
else if(_timerScreen >=0) {
|
||||
|
@ -300,7 +315,7 @@ CScreenManager::prevScreen()
|
|||
_currentScreen--;
|
||||
ROLLLOWERLIMIT(_currentScreen, 0, _Screens.size()-1);
|
||||
}
|
||||
_switchScreen();
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -325,28 +340,31 @@ CScreenManager::keyHandler(uint8_t event)
|
|||
void
|
||||
CScreenManager::selectTimerScreen(bool show)
|
||||
{
|
||||
_leaveScreen();
|
||||
_timerScreen = show ? 0 : -1;
|
||||
_settingScreen = -1;
|
||||
_bSetTime = false;
|
||||
_switchScreen();
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::selectSettingsScreen(bool show)
|
||||
{
|
||||
_leaveScreen();
|
||||
_settingScreen = show ? 0 : -1;
|
||||
_timerScreen = -1;
|
||||
_bSetTime = false;
|
||||
_switchScreen();
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::selectSetTimeScreen(bool show)
|
||||
{
|
||||
_leaveScreen();
|
||||
_bSetTime = show;
|
||||
_settingScreen = -1;
|
||||
_timerScreen = -1;
|
||||
_switchScreen();
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -42,7 +42,8 @@ class CScreenManager {
|
|||
bool _bSetTime;
|
||||
unsigned long _DimTime;
|
||||
bool _bReqUpdate;
|
||||
void _switchScreen();
|
||||
void _enterScreen();
|
||||
void _leaveScreen();
|
||||
CRebootScreen* _pRebootScreen;
|
||||
public:
|
||||
CScreenManager();
|
||||
|
|
|
@ -36,6 +36,18 @@
|
|||
|
||||
|
||||
CSetClockScreen::CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CSetClockScreen::onSelect()
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CSetClockScreen::_initUI()
|
||||
{
|
||||
_rowSel = 0;
|
||||
_nextT = millis();
|
||||
|
@ -148,7 +160,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
|||
_ScreenManager.selectSetTimeScreen(false);
|
||||
}
|
||||
else {
|
||||
adjTimeDate(-1);
|
||||
_adjTimeDate(-1);
|
||||
}
|
||||
}
|
||||
// press RIGHT
|
||||
|
@ -157,7 +169,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
|||
_ScreenManager.selectSetTimeScreen(false);
|
||||
}
|
||||
else {
|
||||
adjTimeDate(+1);
|
||||
_adjTimeDate(+1);
|
||||
}
|
||||
}
|
||||
// press UP
|
||||
|
@ -179,11 +191,11 @@ CSetClockScreen::keyHandler(uint8_t event)
|
|||
if(_rowSel>=1) {
|
||||
// hold RIGHT
|
||||
if(event & key_Right) {
|
||||
adjTimeDate(+1);
|
||||
_adjTimeDate(+1);
|
||||
}
|
||||
// hold LEFT
|
||||
if(event & key_Left) {
|
||||
adjTimeDate(-1);
|
||||
_adjTimeDate(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -194,7 +206,7 @@ CSetClockScreen::keyHandler(uint8_t event)
|
|||
}
|
||||
|
||||
void
|
||||
CSetClockScreen::adjTimeDate(int dir)
|
||||
CSetClockScreen::_adjTimeDate(int dir)
|
||||
{
|
||||
int days;
|
||||
switch(_rowSel) {
|
||||
|
|
|
@ -36,10 +36,12 @@ class CSetClockScreen : public CScreenHeader {
|
|||
BTCDateTime working;
|
||||
unsigned long _SaveTime;
|
||||
|
||||
void adjTimeDate(int dir);
|
||||
void _adjTimeDate(int dir);
|
||||
void _initUI();
|
||||
|
||||
public:
|
||||
CSetClockScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
void onSelect();
|
||||
bool show();
|
||||
void showTime(int);
|
||||
bool keyHandler(uint8_t event);
|
||||
|
|
|
@ -38,18 +38,25 @@ const char* briefDOW[] = { "S", "M", "T", "W", "T", "F", "S" };
|
|||
|
||||
CSetTimerScreen::CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance) : CScreenHeader(display, mgr)
|
||||
{
|
||||
_rowSel = 0;
|
||||
_colSel = 0;
|
||||
_SaveTime = 0;
|
||||
_initUI();
|
||||
_instance = instance;
|
||||
}
|
||||
|
||||
void
|
||||
CSetTimerScreen::onSelect()
|
||||
{
|
||||
_initUI();
|
||||
NVstore.getTimerInfo(_instance, _timer);
|
||||
}
|
||||
|
||||
void
|
||||
CSetTimerScreen::_initUI()
|
||||
{
|
||||
_rowSel = 0;
|
||||
_colSel = 0;
|
||||
_SaveTime = 0;
|
||||
}
|
||||
|
||||
bool
|
||||
CSetTimerScreen::show()
|
||||
{
|
||||
|
@ -207,8 +214,8 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
|||
bHeld = true;
|
||||
if(_rowSel == 1) {
|
||||
if(_colSel < 4) {
|
||||
if(event & key_Left) adjust(-1);
|
||||
if(event & key_Right) adjust(+1);
|
||||
if(event & key_Left) _adjust(-1);
|
||||
if(event & key_Right) _adjust(+1);
|
||||
}
|
||||
else if(_colSel == 4) {
|
||||
if(event & key_Right) {
|
||||
|
@ -233,7 +240,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
|||
if(event & key_Left) {
|
||||
switch(_rowSel) {
|
||||
case 1:
|
||||
adjust(-1);
|
||||
_adjust(-1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -257,7 +264,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
|||
switch(_rowSel) {
|
||||
case 1:
|
||||
// adjust selected item
|
||||
adjust(+1);
|
||||
_adjust(+1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -285,7 +292,7 @@ CSetTimerScreen::keyHandler(uint8_t event)
|
|||
|
||||
|
||||
void
|
||||
CSetTimerScreen::adjust(int dir)
|
||||
CSetTimerScreen::_adjust(int dir)
|
||||
{
|
||||
int days;
|
||||
int maskDOW = 0x01 << _colSel; // if doing Day of Week - (_rowSel == 2)
|
||||
|
|
|
@ -36,8 +36,9 @@ class CSetTimerScreen : public CScreenHeader {
|
|||
int _instance;
|
||||
unsigned long _SaveTime;
|
||||
sTimer _timer;
|
||||
void adjust(int dir);
|
||||
void _adjust(int dir);
|
||||
void _printEnabledTimers();
|
||||
void _initUI();
|
||||
|
||||
public:
|
||||
CSetTimerScreen(C128x64_OLED& display, CScreenManager& mgr, int instance);
|
||||
|
|
|
@ -42,11 +42,25 @@ static const int plugPowers[] = { 35, 40, 45, 80, 85, 90};
|
|||
|
||||
CSettingsScreen::CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr) : CPasswordScreen(display, mgr)
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CSettingsScreen::onSelect()
|
||||
{
|
||||
// ensure standard entry to screen - especially after a dimming timeout
|
||||
CPasswordScreen::onSelect();
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CSettingsScreen::_initUI()
|
||||
{
|
||||
// ensure standard entry to screen - especially after a dimming timeout
|
||||
_animateCount = 0;
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CSettingsScreen::show()
|
||||
{
|
||||
|
|
|
@ -31,11 +31,13 @@ class CScreenManager;
|
|||
class CSettingsScreen : public CPasswordScreen {
|
||||
int _animateCount;
|
||||
int _nAdoptSettings;
|
||||
void _initUI();
|
||||
public:
|
||||
CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
bool show();
|
||||
bool keyHandler(uint8_t event);
|
||||
bool animate();
|
||||
void onSelect();
|
||||
};
|
||||
|
||||
#endif
|
|
@ -23,9 +23,6 @@
|
|||
#include "KeyPad.h"
|
||||
#include "../Protocol/helpers.h"
|
||||
#include "../Wifi/BTCWifi.h"
|
||||
// #include "fonts/Tahoma8.h"
|
||||
// #include "fonts/FranklinGothic.h"
|
||||
// #include "fonts/Arial.h"
|
||||
#include "../Utility/NVstorage.h"
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
@ -40,12 +37,23 @@
|
|||
#define STA_HOLD_TIME 10
|
||||
|
||||
CWiFiScreen::CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr) : CScreenHeader(display, mgr)
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CWiFiScreen::onSelect()
|
||||
{
|
||||
_initUI();
|
||||
}
|
||||
|
||||
void
|
||||
CWiFiScreen::_initUI()
|
||||
{
|
||||
_rowSel = 0;
|
||||
_bShowMAC = false;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
CWiFiScreen::show()
|
||||
{
|
||||
|
|
|
@ -31,12 +31,14 @@ class CScreenManager;
|
|||
class CWiFiScreen : public CScreenHeader {
|
||||
public:
|
||||
CWiFiScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
void onSelect();
|
||||
bool show();
|
||||
bool keyHandler(uint8_t event);
|
||||
private:
|
||||
int _rowSel;
|
||||
int _repeatCount;
|
||||
bool _bShowMAC;
|
||||
void _initUI();
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Reference in a new issue