refactored inheritance of OEM settings into a new screen - MUCH TIDIER!
This commit is contained in:
parent
222c66bbbd
commit
807709adc8
|
@ -45,6 +45,7 @@ CFuelMixtureScreen::onSelect()
|
|||
{
|
||||
CPasswordScreen::onSelect();
|
||||
_initUI();
|
||||
|
||||
adjPump[0] = getHeaterInfo().getPump_Min();
|
||||
adjPump[1] = getHeaterInfo().getPump_Max();
|
||||
adjFan[0] = getHeaterInfo().getFan_Min();
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "RebootScreen.h"
|
||||
#include "HeaterSettingsScreen.h"
|
||||
#include "SettingsScreen.h"
|
||||
#include "InheritSettingsScreen.h"
|
||||
#include <Wire.h>
|
||||
#include "../cfg/pins.h"
|
||||
#include "../cfg/BTCConfig.h"
|
||||
|
@ -101,7 +102,8 @@ CScreenManager::CScreenManager()
|
|||
_timerScreen = -1;
|
||||
_settingScreen = -1;
|
||||
_bReqUpdate = false;
|
||||
_bSetTime = false;
|
||||
_bSetTimeScreenActive = false;
|
||||
_bInheritScreenActive = false;
|
||||
_DimTime = millis() + 60000;
|
||||
_pRebootScreen = NULL;
|
||||
}
|
||||
|
@ -165,6 +167,7 @@ CScreenManager::begin(bool bNoClock)
|
|||
_TimerScreens.push_back(new CSetTimerScreen(*_pDisplay, *this, 1)); // set timer 2
|
||||
_SettingsScreens.push_back(new CFuelMixtureScreen(*_pDisplay, *this)); // tuning
|
||||
_SettingsScreens.push_back(new CHeaterSettingsScreen(*_pDisplay, *this)); // tuning
|
||||
_InheritScreen = new CInheritSettingsScreen(*_pDisplay, *this); // inherit OEM settings
|
||||
|
||||
#if RTC_USE_DS3231==0 && RTC_USE_DS1307==0 && RTC_USE_PCF8523==0
|
||||
_currentScreen = 6; // bring up clock set screen first if using millis based RTC!
|
||||
|
@ -191,6 +194,7 @@ CScreenManager::checkUpdate()
|
|||
selectTimerScreen(false);
|
||||
selectSetTimeScreen(false);
|
||||
selectSettingsScreen(false);
|
||||
selectInheritScreen(false);
|
||||
// sticky screens are Detailed Control, Basic Control, or Clock.
|
||||
// otherwise return to Basic Control screen
|
||||
if(_currentScreen > 2) {
|
||||
|
@ -207,11 +211,16 @@ CScreenManager::checkUpdate()
|
|||
return true;
|
||||
}
|
||||
else {
|
||||
if(_bSetTime) {
|
||||
if(_bSetTimeScreenActive) {
|
||||
_SetTimeScreen->show();
|
||||
_bReqUpdate = false;
|
||||
return true;
|
||||
}
|
||||
else if(_bInheritScreenActive) {
|
||||
_InheritScreen->show();
|
||||
_bReqUpdate = false;
|
||||
return true;
|
||||
}
|
||||
else if(_settingScreen >= 0) {
|
||||
_SettingsScreens[_settingScreen]->show();
|
||||
_bReqUpdate = false;
|
||||
|
@ -242,6 +251,8 @@ bool
|
|||
CScreenManager::animate()
|
||||
{
|
||||
if(_settingScreen >= 0) return _SettingsScreens[_settingScreen]->animate();
|
||||
if(_bSetTimeScreenActive) return _SetTimeScreen->animate();
|
||||
if(_bInheritScreenActive) return _InheritScreen->animate();
|
||||
if(_timerScreen >= 0) return _TimerScreens[_timerScreen]->animate();
|
||||
if(_currentScreen >= 0) return _Screens[_currentScreen]->animate();
|
||||
return false;
|
||||
|
@ -257,7 +268,9 @@ CScreenManager::refresh()
|
|||
void
|
||||
CScreenManager::_enterScreen()
|
||||
{
|
||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||
if(_bSetTimeScreenActive) _SetTimeScreen->onSelect();
|
||||
else if(_bInheritScreenActive) _InheritScreen->onSelect();
|
||||
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onSelect();
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onSelect();
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->onSelect();
|
||||
|
||||
|
@ -267,7 +280,9 @@ CScreenManager::_enterScreen()
|
|||
void
|
||||
CScreenManager::_leaveScreen()
|
||||
{
|
||||
if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onExit();
|
||||
if(_bSetTimeScreenActive) _SetTimeScreen->onExit();
|
||||
else if(_bInheritScreenActive) _InheritScreen->onExit();
|
||||
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->onExit();
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->onExit();
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->onExit();
|
||||
}
|
||||
|
@ -277,8 +292,9 @@ CScreenManager::nextScreen()
|
|||
{
|
||||
_leaveScreen();
|
||||
|
||||
if(_bSetTime) {
|
||||
|
||||
if(_bSetTimeScreenActive) {
|
||||
}
|
||||
else if(_bInheritScreenActive) {
|
||||
}
|
||||
else if(_timerScreen >= 0) {
|
||||
_timerScreen++;
|
||||
|
@ -301,7 +317,9 @@ CScreenManager::prevScreen()
|
|||
{
|
||||
_leaveScreen();
|
||||
|
||||
if(_bSetTime) {
|
||||
if(_bSetTimeScreenActive) {
|
||||
}
|
||||
else if (_bInheritScreenActive) {
|
||||
}
|
||||
else if(_timerScreen >=0) {
|
||||
_timerScreen--;
|
||||
|
@ -330,7 +348,8 @@ CScreenManager::keyHandler(uint8_t event)
|
|||
_DimTime = (millis() + NVstore.getDimTime()) | 1;
|
||||
|
||||
// call handler for active screen
|
||||
if(_bSetTime) _SetTimeScreen->keyHandler(event);
|
||||
if(_bSetTimeScreenActive) _SetTimeScreen->keyHandler(event);
|
||||
else if(_bInheritScreenActive) _InheritScreen->keyHandler(event);
|
||||
else if(_settingScreen >= 0) _SettingsScreens[_settingScreen]->keyHandler(event);
|
||||
else if(_timerScreen >= 0) _TimerScreens[_timerScreen]->keyHandler(event);
|
||||
else if(_currentScreen >= 0) _Screens[_currentScreen]->keyHandler(event);
|
||||
|
@ -343,7 +362,8 @@ CScreenManager::selectTimerScreen(bool show)
|
|||
_leaveScreen();
|
||||
_timerScreen = show ? 0 : -1;
|
||||
_settingScreen = -1;
|
||||
_bSetTime = false;
|
||||
_bSetTimeScreenActive = false;
|
||||
_bInheritScreenActive = false;
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
|
@ -353,7 +373,8 @@ CScreenManager::selectSettingsScreen(bool show)
|
|||
_leaveScreen();
|
||||
_settingScreen = show ? 0 : -1;
|
||||
_timerScreen = -1;
|
||||
_bSetTime = false;
|
||||
_bSetTimeScreenActive = false;
|
||||
_bInheritScreenActive = false;
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
|
@ -361,12 +382,24 @@ void
|
|||
CScreenManager::selectSetTimeScreen(bool show)
|
||||
{
|
||||
_leaveScreen();
|
||||
_bSetTime = show;
|
||||
_bSetTimeScreenActive = show;
|
||||
_bInheritScreenActive = false;
|
||||
_settingScreen = -1;
|
||||
_timerScreen = -1;
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::selectInheritScreen(bool show)
|
||||
{
|
||||
_leaveScreen();
|
||||
_bInheritScreenActive = show;
|
||||
_bSetTimeScreenActive = false;
|
||||
_timerScreen = -1;
|
||||
_settingScreen = -1;
|
||||
_enterScreen();
|
||||
}
|
||||
|
||||
void
|
||||
CScreenManager::showRebootMsg(const char* content[2], long delayTime)
|
||||
{
|
||||
|
|
|
@ -35,11 +35,13 @@ class CScreenManager {
|
|||
std::vector<CScreen*> _TimerScreens;
|
||||
std::vector<CScreen*> _SettingsScreens;
|
||||
CScreen* _SetTimeScreen;
|
||||
CScreen* _InheritScreen;
|
||||
C128x64_OLED* _pDisplay;
|
||||
int _currentScreen;
|
||||
int _timerScreen;
|
||||
int _settingScreen;
|
||||
bool _bSetTime;
|
||||
bool _bSetTimeScreenActive;
|
||||
bool _bInheritScreenActive;
|
||||
unsigned long _DimTime;
|
||||
bool _bReqUpdate;
|
||||
void _enterScreen();
|
||||
|
@ -60,6 +62,7 @@ public:
|
|||
void selectTimerScreen(bool show);
|
||||
void selectSetTimeScreen(bool show);
|
||||
void selectSettingsScreen(bool show);
|
||||
void selectInheritScreen(bool show);
|
||||
};
|
||||
|
||||
#endif // __SCREEN_MANAGER_H__
|
||||
|
|
|
@ -58,7 +58,6 @@ CSettingsScreen::_initUI()
|
|||
{
|
||||
// ensure standard entry to screen - especially after a dimming timeout
|
||||
_animateCount = 0;
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
|
||||
bool
|
||||
|
@ -73,36 +72,18 @@ CSettingsScreen::show()
|
|||
|
||||
if(!CPasswordScreen::show()) {
|
||||
|
||||
if(_nAdoptSettings == 1) {
|
||||
_display.clearDisplay();
|
||||
_display.writeFillRect(0, 0, 128, 24, WHITE);
|
||||
_printInverted(_display.xCentre(), 4, "Adopt LCD controller", true, eCentreJustify);
|
||||
_printInverted(_display.xCentre(), 13, "settings? ", true, eCentreJustify);
|
||||
_printMenuText(_display.xCentre(), 35, "Press RIGHT to", false, eCentreJustify);
|
||||
_printMenuText(_display.xCentre(), 45, "inherit and save", false, eCentreJustify);
|
||||
}
|
||||
else if(_nAdoptSettings == 2) {
|
||||
_display.clearDisplay();
|
||||
_display.writeFillRect(0, 0, 128, 24, WHITE);
|
||||
_printInverted(_display.xCentre(), 4, " Cannot inherit knob ", true, eCentreJustify);
|
||||
_printInverted(_display.xCentre(), 13, " controller settings ", true, eCentreJustify);
|
||||
_printMenuText(_display.xCentre(), 35, "Press any key", false, eCentreJustify);
|
||||
_printMenuText(_display.xCentre(), 45, "to abort", false, eCentreJustify);
|
||||
}
|
||||
else {
|
||||
sprintf(str, "%.0fV", getHeaterInfo().getSystemVoltage());
|
||||
_printMenuText(_display.width(), Line3, str, false, eRightJustify);
|
||||
sprintf(str, "%.0fV", getHeaterInfo().getSystemVoltage());
|
||||
_printMenuText(_display.width(), Line3, str, false, eRightJustify);
|
||||
|
||||
sprintf(str, "Min: %.1f/%d", getHeaterInfo().getPump_Min(), getHeaterInfo().getFan_Min());
|
||||
_printMenuText(0, Line2, str);
|
||||
sprintf(str, "Min: %.1f/%d", getHeaterInfo().getPump_Min(), getHeaterInfo().getFan_Min());
|
||||
_printMenuText(0, Line2, str);
|
||||
|
||||
sprintf(str, "Max: %.1f/%d", getHeaterInfo().getPump_Max(), getHeaterInfo().getFan_Max());
|
||||
_printMenuText(0, Line1, str);
|
||||
sprintf(str, "Max: %.1f/%d", getHeaterInfo().getPump_Max(), getHeaterInfo().getFan_Max());
|
||||
_printMenuText(0, Line1, str);
|
||||
|
||||
int yPos = 53;
|
||||
int xPos = _display.xCentre();
|
||||
_printMenuText(xPos, yPos, "<- enter ->", true, eCentreJustify);
|
||||
}
|
||||
int yPos = 53;
|
||||
int xPos = _display.xCentre();
|
||||
_printMenuText(xPos, yPos, "<- enter ->", true, eCentreJustify);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -120,7 +101,7 @@ CSettingsScreen::animate()
|
|||
_printMenuText(Column, Line1, " ");
|
||||
_printMenuText(Column, Line2, " ");
|
||||
}
|
||||
else if(_nAdoptSettings == 0) {
|
||||
else {
|
||||
_animateCount++;
|
||||
ROLLUPPERLIMIT(_animateCount, 9, 0);
|
||||
|
||||
|
@ -166,23 +147,8 @@ CSettingsScreen::keyHandler(uint8_t event)
|
|||
{
|
||||
if(CPasswordScreen::keyHandler(event)) {
|
||||
if(_isPasswordOK()) {
|
||||
if(_nAdoptSettings == 3) {
|
||||
setPumpMin(getHeaterInfo().getPump_Min());
|
||||
setPumpMax(getHeaterInfo().getPump_Max());
|
||||
setFanMin(getHeaterInfo().getFan_Min());
|
||||
setFanMax(getHeaterInfo().getFan_Max());
|
||||
setFanSensor(getHeaterInfo().getFan_Sensor());
|
||||
setSystemVoltage(getHeaterInfo().getSystemVoltage());
|
||||
saveNV();
|
||||
_showStoringMessage();
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
else {
|
||||
_ScreenManager.selectSettingsScreen(true);
|
||||
}
|
||||
_ScreenManager.selectSettingsScreen(true);
|
||||
}
|
||||
if(!isPasswordBusy())
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
|
||||
else {
|
||||
|
@ -190,48 +156,25 @@ CSettingsScreen::keyHandler(uint8_t event)
|
|||
if(event & keyPressed) {
|
||||
// press LEFT
|
||||
if(event & key_Left) {
|
||||
if(_nAdoptSettings == 0)
|
||||
_ScreenManager.prevScreen();
|
||||
_nAdoptSettings = 0;
|
||||
_ScreenManager.prevScreen();
|
||||
}
|
||||
// press RIGHT
|
||||
if(event & key_Right) {
|
||||
if(_nAdoptSettings == 1) {
|
||||
_nAdoptSettings = 3;
|
||||
_getPassword();
|
||||
}
|
||||
else {
|
||||
if(_nAdoptSettings == 0)
|
||||
_ScreenManager.nextScreen();
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
_ScreenManager.nextScreen();
|
||||
}
|
||||
// press UP
|
||||
if(event & (key_Up | key_Centre)) {
|
||||
if(_nAdoptSettings == 0) {
|
||||
if(hasOEMcontroller()) {
|
||||
if(event & key_Centre)
|
||||
_reqOEMWarning();
|
||||
else {
|
||||
if(hasOEMLCDcontroller()) {
|
||||
_nAdoptSettings = 1;
|
||||
}
|
||||
else {
|
||||
_nAdoptSettings = 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(hasOEMcontroller()) {
|
||||
if(event & key_Centre)
|
||||
_reqOEMWarning();
|
||||
else {
|
||||
_getPassword();
|
||||
_ScreenManager.selectInheritScreen(true);
|
||||
}
|
||||
}
|
||||
else {
|
||||
_nAdoptSettings = 0;
|
||||
_getPassword();
|
||||
}
|
||||
}
|
||||
if(event & key_Down) {
|
||||
_nAdoptSettings = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
_ScreenManager.reqUpdate();
|
||||
|
|
|
@ -30,7 +30,6 @@ class CScreenManager;
|
|||
|
||||
class CSettingsScreen : public CPasswordScreen {
|
||||
int _animateCount;
|
||||
int _nAdoptSettings;
|
||||
void _initUI();
|
||||
public:
|
||||
CSettingsScreen(C128x64_OLED& display, CScreenManager& mgr);
|
||||
|
|
Loading…
Reference in a new issue