From 77265112abc143f493da06072a952f04e85113c4 Mon Sep 17 00:00:00 2001 From: rljonesau Date: Sat, 16 Mar 2019 10:54:50 +1100 Subject: [PATCH] Timer menu key strokes more logical now - cool arrows found in Adafruit fonts!! --- .../src/OLED/ExperimentalSettingsScreen.cpp | 19 +++- .../src/OLED/FuelMixtureScreen.cpp | 2 +- .../src/OLED/HeaterSettingsScreen.cpp | 8 +- .../src/OLED/PrimingScreen.cpp | 4 +- .../src/OLED/SetTimerScreen.cpp | 100 ++++++++++-------- .../src/OLED/SettingsScreen.cpp | 8 +- .../BTCDieselHeater/src/OLED/WiFiScreen.cpp | 4 +- 7 files changed, 85 insertions(+), 60 deletions(-) diff --git a/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp index 6b8f4a2..d226ae7 100644 --- a/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/ExperimentalSettingsScreen.cpp @@ -26,6 +26,8 @@ #include "../Utility/UtilClasses.h" #include "../Utility/NVStorage.h" +static unsigned char _testoStart = 1; + /////////////////////////////////////////////////////////////////////////// // // CExperimentalSettingsScreen @@ -81,7 +83,7 @@ CExperimentalSettingsScreen::show() _printInverted(_display.xCentre(), 0, " Experimental ", true, eCentreJustify); _printMenuText(65, Line2, "Thermostat:", false, eRightJustify); _printMenuText(65, Line1, "Window:", false, eRightJustify); - sprintf(msg, "%.1f`C", _window); + sprintf(msg, "%.1f\367C", _window); // \367 is octal for Adafruit degree symbol _printMenuText(Column, Line1, msg, _rowSel == 1); switch(_thermoMode) { case 1: @@ -98,6 +100,16 @@ CExperimentalSettingsScreen::show() int yPos = 53; int xPos = _display.xCentre(); _printMenuText(xPos, yPos, "exit", _rowSel == 0, eCentreJustify); + + // TESTO - dump Adafruit font + char testo[17]; + for(int i=0; i<16; i++) { + testo[i] = i+_testoStart; + } + testo[16] = 0; + _printMenuText(0, Line3, testo); + sprintf(testo, "\\%03o", _testoStart, _testoStart); + _printMenuText(124, Line3, testo, _rowSel == 3, eRightJustify); } } @@ -147,7 +159,7 @@ CExperimentalSettingsScreen::keyHandler(uint8_t event) case 2: case 3: _rowSel++; - UPPERLIMIT(_rowSel, 2); + UPPERLIMIT(_rowSel, 3); break; case 4: // confirmed save _showStoringMessage(); @@ -191,5 +203,8 @@ CExperimentalSettingsScreen::_adjust(int dir) ROLLLOWERLIMIT(_thermoMode, 0, 2); ROLLUPPERLIMIT(_thermoMode, 2, 0); break; + case 3: // font dump mode + _testoStart += dir * 16; + break; } } diff --git a/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp index 119ada8..6f47807 100644 --- a/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/FuelMixtureScreen.cpp @@ -99,7 +99,7 @@ CFuelMixtureScreen::show() // navigation line yPos = 53; xPos = _display.xCentre(); - _printMenuText(xPos, yPos, "<- exit ->", _rowSel == 0, eCentreJustify); + _printMenuText(xPos, yPos, "\021 exit \020", _rowSel == 0, eCentreJustify); break; case 5: diff --git a/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp index caebf51..217dd80 100644 --- a/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/HeaterSettingsScreen.cpp @@ -88,7 +88,7 @@ CHeaterSettingsScreen::show() // navigation line int yPos = 53; int xPos = _display.xCentre(); - _printMenuText(xPos, yPos, "<- exit ->", _rowSel == 0, eCentreJustify); + _printMenuText(xPos, yPos, "\021 exit \020", _rowSel == 0, eCentreJustify); } } @@ -134,7 +134,9 @@ CHeaterSettingsScreen::animate() _printMenuText(Column, Line2, msg); } else { - _printMenuText(xPos, Line2, "("); + sprintf(msg, "(\365%d)", _fanSensor); // \365 is division character + _printMenuText(xPos, Line2, msg); +/* _printMenuText(xPos, Line2, "(\"); xPos += 6; // . // draw old fashioned divide symbol ----- @@ -145,7 +147,7 @@ CHeaterSettingsScreen::animate() _display.drawPixel(xPos+2, Line2+barOfs+2, WHITE); xPos += 6; sprintf(msg, "%d)", _fanSensor); - _printMenuText(xPos, Line2, msg); + _printMenuText(xPos, Line2, msg);*/ } } return true; diff --git a/Arduino/BTCDieselHeater/src/OLED/PrimingScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/PrimingScreen.cpp index ecb689e..03a6341 100644 --- a/Arduino/BTCDieselHeater/src/OLED/PrimingScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/PrimingScreen.cpp @@ -70,8 +70,8 @@ CPrimingScreen::show() CRect extents; int yPos = 53; - // show next/prev screen navigation line - _printMenuText(_display.xCentre(), yPos, "<- ->", _rowSel == 0, eCentreJustify); + // show next/prev menu navigation line + _printMenuText(_display.xCentre(), yPos, "\021 \020", _rowSel == 0, eCentreJustify); yPos = 40; if(_rowSel == 1) { diff --git a/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp index 7e9625c..686118c 100644 --- a/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/SetTimerScreen.cpp @@ -144,8 +144,7 @@ CSetTimerScreen::show() // navigation line yPos = 53; xPos = _display.xCentre(); - //_printMenuText(xPos, yPos, "<- ->", _rowSel==0, eCentreJustify); - _printMenuText(xPos, yPos, "<- return ->", _rowSel==0, eCentreJustify); + _printMenuText(xPos, yPos, "\021 return \020", _rowSel==0, eCentreJustify); return true; } @@ -192,6 +191,10 @@ CSetTimerScreen::keyHandler(uint8_t event) case 0: _ScreenManager.prevMenu(); break; + case 1: + _colSel--; + ROLLLOWERLIMIT(_colSel, 0, 5); + break; case 2: _colSel--; ROLLLOWERLIMIT(_colSel, 0, 6); @@ -204,10 +207,10 @@ CSetTimerScreen::keyHandler(uint8_t event) case 0: _ScreenManager.nextMenu(); break; - // case 1: - // _colSel++; - // ROLLUPPERLIMIT(_colSel, 5, 0); - // break; + case 1: + _colSel++; + ROLLUPPERLIMIT(_colSel, 5, 0); + break; case 2: _colSel++; ROLLUPPERLIMIT(_colSel, 6, 0); @@ -216,16 +219,16 @@ CSetTimerScreen::keyHandler(uint8_t event) } // press UP if(event & key_Up) { - switch(_rowSel) { - case 0: - _rowSel = 1; - _colSel = 5; - break; - case 1: - _colSel--; - ROLLLOWERLIMIT(_colSel, 0, 5); - break; - } + // switch(_rowSel) { + // case 0: + // _rowSel = 1; + // _colSel = 5; + // break; + // // case 1: + // // _colSel--; + // // ROLLLOWERLIMIT(_colSel, 0, 5); + // // break; + // } } // press DOWN if(event & key_Down) { @@ -234,10 +237,10 @@ CSetTimerScreen::keyHandler(uint8_t event) _rowSel = 1; _colSel = 0; break; - case 1: - _colSel++; - ROLLUPPERLIMIT(_colSel, 5, 0); - break; + // case 1: + // _colSel++; + // ROLLUPPERLIMIT(_colSel, 5, 0); + // break; } } } @@ -247,11 +250,14 @@ 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_Down) _adjust(-1); + if(event & key_Up) _adjust(+1); + // if(event & key_Left) _adjust(-1); + // if(event & key_Right) _adjust(+1); } else if(_colSel == 4) { - if(event & key_Right) { +// if(event & key_Right) { + if(event & key_Up) { _timerInfo.enabled &= 0x7f; // strip next day flag _rowSel = 2; _colSel = 0; @@ -259,10 +265,6 @@ CSetTimerScreen::keyHandler(uint8_t event) } } if(_rowSel==2) { -/* if(event & key_Right) { - _rowSel = 1; - _colSel = 4; - }*/ } } @@ -271,21 +273,20 @@ CSetTimerScreen::keyHandler(uint8_t event) int maskDOW = 0x01 << _colSel; if(event & key_Left) { - switch(_rowSel) { - case 1: - _adjust(-1); - break; - } + // switch(_rowSel) { + // case 1: + // _adjust(-1); + // break; + // } } // released DOWN - can only leave adjustment by using OK (centre button) if(event & key_Down) { // adjust selected item switch(_rowSel) { -/* case 0: - _rowSel = 1; - _colSel = 0; - break;*/ + case 1: + _adjust(-1); + break; case 2: // adjust selected item _timerInfo.enabled ^= maskDOW; @@ -294,21 +295,26 @@ CSetTimerScreen::keyHandler(uint8_t event) } } if(event & key_Right) { - switch(_rowSel) { - case 1: - // adjust selected item - _adjust(+1); - break; - } + // switch(_rowSel) { + // case 1: + // // adjust selected item + // _adjust(+1); + // break; + // } } // released UP if(event & key_Up) { switch(_rowSel) { -/* case 0: - // move from screen navigation to field select & adjust + case 0: _rowSel = 1; - _colSel = 5; - break;*/ + _colSel = 0; + break; + case 1: + // prevent accidentally losing per day settings + if(!(_colSel == 4 && (_timerInfo.enabled & 0x7F) != 0)) { + _adjust(+1); // adjust selected item, unless in per day mode + } + break; case 2: // adjust selected item _timerInfo.enabled ^= maskDOW; @@ -385,7 +391,7 @@ CSetTimerScreen::_printEnabledTimers() } else { if(_rowSel==1 && _colSel==4) { - _printMenuText(xPos, yPos, "Hold RIGHT", true, eRightJustify); + _printMenuText(xPos, yPos, "Hold UP", true, eRightJustify); } else { xPos -= 7 * dayWidth; // back step 7 day entries diff --git a/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp index 1326a0e..45b0207 100644 --- a/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/SettingsScreen.cpp @@ -83,7 +83,7 @@ CSettingsScreen::show() int yPos = 53; int xPos = _display.xCentre(); - _printMenuText(xPos, yPos, "<- enter ->", true, eCentreJustify); + _printMenuText(xPos, yPos, "\021 enter \020", true, eCentreJustify); } return true; @@ -124,7 +124,9 @@ CSettingsScreen::animate() else { int xPos = Column+6; _printMenuText(xPos, Line2, " "); // erase - _printMenuText(xPos, Line2, "("); + sprintf(msg, "(\365%d)", fanSensor); // \365 is division character + _printMenuText(xPos, Line2, msg); +/* _printMenuText(xPos, Line2, "("); xPos += 6; // . // draw old fashioned divide symbol ----- @@ -135,7 +137,7 @@ CSettingsScreen::animate() _display.drawPixel(xPos+2, Line2+barOfs+2, WHITE); xPos += 6; sprintf(msg, "%d)", fanSensor); - _printMenuText(xPos, Line2, msg); + _printMenuText(xPos, Line2, msg); */ } } diff --git a/Arduino/BTCDieselHeater/src/OLED/WiFiScreen.cpp b/Arduino/BTCDieselHeater/src/OLED/WiFiScreen.cpp index 522b882..f4e63e1 100644 --- a/Arduino/BTCDieselHeater/src/OLED/WiFiScreen.cpp +++ b/Arduino/BTCDieselHeater/src/OLED/WiFiScreen.cpp @@ -95,8 +95,8 @@ CWiFiScreen::show() _printInverted(0, yPos, " WiFi Inactive ", true); } - // show next/prev screen navigation line - _printMenuText(_display.xCentre(), 53, "<- ->", _rowSel == 0, eCentreJustify); + // show next/prev menu navigation line + _printMenuText(_display.xCentre(), 53, "\021 \020", _rowSel == 0, eCentreJustify); return true; }