1
0
forked from me/IronOS

Merge pull request #1060 from Ralim/ralim/scrollbar

Fix scrollbar to handle omitted menu items
This commit is contained in:
Ben V. Brown
2021-09-25 11:07:47 +10:00
committed by GitHub
5 changed files with 146 additions and 199 deletions

View File

@@ -146,7 +146,8 @@ constexpr uint8_t settings_item_index(const SettingsItemIndex i) { return static
const char *translatedString(uint16_t index); const char *translatedString(uint16_t index);
void prepareTranslations(); void prepareTranslations();
bool settings_displayLanguageSwitch(void); void settings_displayLanguageSwitch(void);
bool settings_showLanguageSwitch(void);
bool settings_setLanguageSwitch(void); bool settings_setLanguageSwitch(void);
#endif /* TRANSLATION_H_ */ #endif /* TRANSLATION_H_ */

View File

@@ -26,7 +26,8 @@ typedef struct {
uint8_t description; uint8_t description;
// return true if increment reached the maximum value // return true if increment reached the maximum value
bool (*const incrementHandler)(void); bool (*const incrementHandler)(void);
bool (*const draw)(void); void (*const draw)(void);
bool (*const isVisible)(void);
// If this is set, we will automatically use the settings increment handler instead, set >= num settings to disable // If this is set, we will automatically use the settings increment handler instead, set >= num settings to disable
SettingsOptions autoSettingOption; SettingsOptions autoSettingOption;
} menuitem; } menuitem;

View File

@@ -85,7 +85,5 @@ bool settings_setLanguageSwitch(void) {
return selectedLangIndex == (LanguageCount - 1); return selectedLangIndex == (LanguageCount - 1);
} }
bool settings_displayLanguageSwitch(void) { bool settings_showLanguageSwitch(void) { return true; }
OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast<uint8_t>(SettingsItemIndex::LanguageSwitch)])); void settings_displayLanguageSwitch(void) { OLED::printWholeScreen(translatedString(Tr->SettingsShortNames[static_cast<uint8_t>(SettingsItemIndex::LanguageSwitch)])); }
return false;
}

View File

@@ -2,6 +2,5 @@
bool settings_setLanguageSwitch(void) { return false; } bool settings_setLanguageSwitch(void) { return false; }
bool settings_displayLanguageSwitch(void) { void settings_displayLanguageSwitch(void) {}
return true; // skip bool settings_showLanguageSwitch(void) { return false; }
}

View File

@@ -17,71 +17,72 @@
void gui_Menu(const menuitem *menu); void gui_Menu(const menuitem *menu);
#ifdef POW_DC #ifdef POW_DC
static bool settings_displayInputVRange(void); static void settings_displayInputVRange(void);
static bool settings_displayInputMinVRange(void); static void settings_displayInputMinVRange(void);
#endif #endif
#ifdef POW_QC #ifdef POW_QC
static bool settings_displayQCInputV(void); static void settings_displayQCInputV(void);
#endif #endif
#ifdef POW_PD #ifdef POW_PD
static bool settings_displayPDNegTimeout(void); static void settings_displayPDNegTimeout(void);
#endif #endif
#ifndef NO_SLEEP_MODE #ifndef NO_SLEEP_MODE
static bool settings_setSleepTemp(void); static bool settings_setSleepTemp(void);
static bool settings_displaySleepTemp(void); static void settings_displaySleepTemp(void);
static bool settings_displaySleepTime(void); static void settings_displaySleepTime(void);
#endif #endif
static bool settings_displayShutdownTime(void); static void settings_displayShutdownTime(void);
static bool settings_displaySensitivity(void); static void settings_displaySensitivity(void);
static bool settings_setTempF(void); static bool settings_setTempF(void);
static bool settings_displayTempF(void); static void settings_displayTempF(void);
static bool settings_displayAdvancedSolderingScreens(void); static void settings_displayAdvancedSolderingScreens(void);
static bool settings_displayAdvancedIDLEScreens(void); static void settings_displayAdvancedIDLEScreens(void);
static bool settings_displayScrollSpeed(void); static void settings_displayScrollSpeed(void);
static bool settings_displayPowerLimit(void); static void settings_displayPowerLimit(void);
#ifndef NO_DISPLAY_ROTATE #ifndef NO_DISPLAY_ROTATE
static bool settings_setDisplayRotation(void); static bool settings_setDisplayRotation(void);
static bool settings_displayDisplayRotation(void); static void settings_displayDisplayRotation(void);
#endif #endif
static bool settings_setBoostTemp(void); static bool settings_setBoostTemp(void);
static bool settings_displayBoostTemp(void); static void settings_displayBoostTemp(void);
static bool settings_displayAutomaticStartMode(void); static void settings_displayAutomaticStartMode(void);
static bool settings_displayLockingMode(void); static void settings_displayLockingMode(void);
static bool settings_displayCoolingBlinkEnabled(void); static void settings_displayCoolingBlinkEnabled(void);
static bool settings_setResetSettings(void); static bool settings_setResetSettings(void);
static bool settings_displayResetSettings(void); static void settings_displayResetSettings(void);
static bool settings_setCalibrate(void); static bool settings_setCalibrate(void);
static bool settings_displayCalibrate(void); static void settings_displayCalibrate(void);
static bool settings_setCalibrateVIN(void); static bool settings_setCalibrateVIN(void);
static bool settings_displayCalibrateVIN(void); static void settings_displayCalibrateVIN(void);
static bool settings_displayReverseButtonTempChangeEnabled(void); static void settings_displayReverseButtonTempChangeEnabled(void);
static bool settings_displayTempChangeShortStep(void); static void settings_displayTempChangeShortStep(void);
static bool settings_displayTempChangeLongStep(void); static void settings_displayTempChangeLongStep(void);
static bool settings_displayPowerPulse(void); static void settings_displayPowerPulse(void);
static bool settings_displayAnimationSpeed(void); static void settings_displayAnimationSpeed(void);
static bool settings_displayAnimationLoop(void); static void settings_displayAnimationLoop(void);
static bool settings_displayPowerPulseWait(void); static void settings_displayPowerPulseWait(void);
static bool settings_displayPowerPulseDuration(void); static bool settings_showPowerPulseOptions(void);
static bool settings_displayBrightnessLevel(void); static void settings_displayPowerPulseDuration(void);
static bool settings_displayInvertColor(void); static void settings_displayBrightnessLevel(void);
static void settings_displayInvertColor(void);
#ifdef HALL_SENSOR #ifdef HALL_SENSOR
static bool settings_displayHallEffect(void); static void settings_displayHallEffect(void);
#endif #endif
// Menu functions // Menu functions
#if defined(POW_DC) || defined(POW_QC) #if defined(POW_DC) || defined(POW_QC)
static bool settings_displayPowerMenu(void); static void settings_displayPowerMenu(void);
static bool settings_enterPowerMenu(void); static bool settings_enterPowerMenu(void);
#endif #endif
static bool settings_displaySolderingMenu(void); static void settings_displaySolderingMenu(void);
static bool settings_enterSolderingMenu(void); static bool settings_enterSolderingMenu(void);
static bool settings_displayPowerSavingMenu(void); static void settings_displayPowerSavingMenu(void);
static bool settings_enterPowerSavingMenu(void); static bool settings_enterPowerSavingMenu(void);
static bool settings_displayUIMenu(void); static void settings_displayUIMenu(void);
static bool settings_enterUIMenu(void); static bool settings_enterUIMenu(void);
static bool settings_displayAdvancedMenu(void); static void settings_displayAdvancedMenu(void);
static bool settings_enterAdvancedMenu(void); static bool settings_enterAdvancedMenu(void);
/* /*
* Root Settings Menu * Root Settings Menu
@@ -134,15 +135,15 @@ const menuitem rootSettingsMenu[] {
*/ */
#if defined(POW_DC) || defined(POW_QC) #if defined(POW_DC) || defined(POW_QC)
{0, settings_enterPowerMenu, settings_displayPowerMenu, SettingsOptions::SettingsOptionsLength}, /*Power*/ {0, settings_enterPowerMenu, settings_displayPowerMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Power*/
#endif #endif
{0, settings_enterSolderingMenu, settings_displaySolderingMenu, SettingsOptions::SettingsOptionsLength}, /*Soldering*/ {0, settings_enterSolderingMenu, settings_displaySolderingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Soldering*/
{0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/ {0, settings_enterPowerSavingMenu, settings_displayPowerSavingMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Options Menu*/
{0, settings_enterUIMenu, settings_displayUIMenu, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/ {0, settings_enterUIMenu, settings_displayUIMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*UI Menu*/
{0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/ {0, settings_enterAdvancedMenu, settings_displayAdvancedMenu, nullptr, SettingsOptions::SettingsOptionsLength}, /*Advanced Menu*/
{0, settings_setLanguageSwitch, settings_displayLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/ {0, settings_setLanguageSwitch, settings_displayLanguageSwitch, settings_showLanguageSwitch, SettingsOptions::SettingsOptionsLength}, /*Language Switch*/
{ {
0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength 0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength
} // end of menu marker. DO NOT REMOVE } // end of menu marker. DO NOT REMOVE
}; };
@@ -152,16 +153,16 @@ const menuitem powerMenu[] = {
* Power Source * Power Source
*/ */
#ifdef POW_DC #ifdef POW_DC
{SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/ {SETTINGS_DESC(SettingsItemIndex::DCInCutoff), nullptr, settings_displayInputVRange, nullptr, SettingsOptions::MinDCVoltageCells}, /*Voltage input*/
{SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/ {SETTINGS_DESC(SettingsItemIndex::MinVolCell), nullptr, settings_displayInputMinVRange, nullptr, SettingsOptions::MinVoltageCells}, /*Minimum voltage input*/
#endif #endif
#ifdef POW_QC #ifdef POW_QC
{SETTINGS_DESC(SettingsItemIndex::QCMaxVoltage), nullptr, settings_displayQCInputV, SettingsOptions::QCIdealVoltage}, /*Voltage input*/ {SETTINGS_DESC(SettingsItemIndex::QCMaxVoltage), nullptr, settings_displayQCInputV, nullptr, SettingsOptions::QCIdealVoltage}, /*Voltage input*/
#endif #endif
#ifdef POW_PD #ifdef POW_PD
{SETTINGS_DESC(SettingsItemIndex::PDNegTimeout), nullptr, settings_displayPDNegTimeout, SettingsOptions::PDNegTimeout}, /*PD timeout setup*/ {SETTINGS_DESC(SettingsItemIndex::PDNegTimeout), nullptr, settings_displayPDNegTimeout, nullptr, SettingsOptions::PDNegTimeout}, /*PD timeout setup*/
#endif #endif
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
}; };
#endif #endif
const menuitem solderingMenu[] = { const menuitem solderingMenu[] = {
@@ -172,12 +173,12 @@ const menuitem solderingMenu[] = {
* Temp change short step * Temp change short step
* Temp change long step * Temp change long step
*/ */
{SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/ {SETTINGS_DESC(SettingsItemIndex::BoostTemperature), settings_setBoostTemp, settings_displayBoostTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Boost Temp*/
{SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, SettingsOptions::AutoStartMode}, /*Auto start*/ {SETTINGS_DESC(SettingsItemIndex::AutoStart), nullptr, settings_displayAutomaticStartMode, nullptr, SettingsOptions::AutoStartMode}, /*Auto start*/
{SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/ {SETTINGS_DESC(SettingsItemIndex::TempChangeShortStep), nullptr, settings_displayTempChangeShortStep, nullptr, SettingsOptions::TempChangeShortStep}, /*Temp change short step*/
{SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/ {SETTINGS_DESC(SettingsItemIndex::TempChangeLongStep), nullptr, settings_displayTempChangeLongStep, nullptr, SettingsOptions::TempChangeLongStep}, /*Temp change long step*/
{SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, SettingsOptions::LockingMode}, /*Locking Mode*/ {SETTINGS_DESC(SettingsItemIndex::LockingMode), nullptr, settings_displayLockingMode, nullptr, SettingsOptions::LockingMode}, /*Locking Mode*/
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
}; };
const menuitem UIMenu[] = { const menuitem UIMenu[] = {
/* /*
@@ -190,22 +191,22 @@ const menuitem UIMenu[] = {
* Detailed IDLE * Detailed IDLE
* Detailed Soldering * Detailed Soldering
*/ */
{SETTINGS_DESC(SettingsItemIndex::TemperatureUnit), settings_setTempF, settings_displayTempF, {SETTINGS_DESC(SettingsItemIndex::TemperatureUnit), settings_setTempF, settings_displayTempF, nullptr,
SettingsOptions::SettingsOptionsLength}, /* Temperature units, this has to be the first element in the array to work with the logic in settings_enterUIMenu() */ SettingsOptions::SettingsOptionsLength}, /* Temperature units, this has to be the first element in the array to work with the logic in settings_enterUIMenu() */
#ifndef NO_DISPLAY_ROTATE #ifndef NO_DISPLAY_ROTATE
{SETTINGS_DESC(SettingsItemIndex::DisplayRotation), settings_setDisplayRotation, settings_displayDisplayRotation, SettingsOptions::SettingsOptionsLength}, /*Display Rotation*/ {SETTINGS_DESC(SettingsItemIndex::DisplayRotation), settings_setDisplayRotation, settings_displayDisplayRotation, nullptr, SettingsOptions::SettingsOptionsLength}, /*Display Rotation*/
#endif #endif
{SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/ {SETTINGS_DESC(SettingsItemIndex::CooldownBlink), nullptr, settings_displayCoolingBlinkEnabled, nullptr, SettingsOptions::CoolingTempBlink}, /*Cooling blink warning*/
{SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/ {SETTINGS_DESC(SettingsItemIndex::ScrollingSpeed), nullptr, settings_displayScrollSpeed, nullptr, SettingsOptions::DescriptionScrollSpeed}, /*Scroll Speed for descriptions*/
{SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, {SETTINGS_DESC(SettingsItemIndex::ReverseButtonTempChange), nullptr, settings_displayReverseButtonTempChangeEnabled, nullptr,
SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */ SettingsOptions::ReverseButtonTempChangeEnabled}, /* Reverse Temp change buttons + - */
{SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */ {SETTINGS_DESC(SettingsItemIndex::AnimSpeed), nullptr, settings_displayAnimationSpeed, nullptr, SettingsOptions::AnimationSpeed}, /*Animation Speed adjustment */
{SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, SettingsOptions::AnimationLoop}, /*Animation Loop switch */ {SETTINGS_DESC(SettingsItemIndex::AnimLoop), nullptr, settings_displayAnimationLoop, nullptr, SettingsOptions::AnimationLoop}, /*Animation Loop switch */
{SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, SettingsOptions::OLEDBrightness}, /*Brightness Level*/ {SETTINGS_DESC(SettingsItemIndex::Brightness), nullptr, settings_displayBrightnessLevel, nullptr, SettingsOptions::OLEDBrightness}, /*Brightness Level*/
{SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, SettingsOptions::OLEDInversion}, /*Invert screen colour*/ {SETTINGS_DESC(SettingsItemIndex::ColourInversion), nullptr, settings_displayInvertColor, nullptr, SettingsOptions::OLEDInversion}, /*Invert screen colour*/
{SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/ {SETTINGS_DESC(SettingsItemIndex::AdvancedIdle), nullptr, settings_displayAdvancedIDLEScreens, nullptr, SettingsOptions::DetailedIDLE}, /* Advanced idle screen*/
{SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/ {SETTINGS_DESC(SettingsItemIndex::AdvancedSoldering), nullptr, settings_displayAdvancedSolderingScreens, nullptr, SettingsOptions::DetailedSoldering}, /* Advanced soldering screen*/
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
}; };
const menuitem PowerSavingMenu[] = { const menuitem PowerSavingMenu[] = {
/* /*
@@ -215,15 +216,15 @@ const menuitem PowerSavingMenu[] = {
* Motion Sensitivity * Motion Sensitivity
*/ */
#ifndef NO_SLEEP_MODE #ifndef NO_SLEEP_MODE
{SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/ {SETTINGS_DESC(SettingsItemIndex::SleepTemperature), settings_setSleepTemp, settings_displaySleepTemp, nullptr, SettingsOptions::SettingsOptionsLength}, /*Sleep Temp*/
{SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, SettingsOptions::SleepTime}, /*Sleep Time*/ {SETTINGS_DESC(SettingsItemIndex::SleepTimeout), nullptr, settings_displaySleepTime, nullptr, SettingsOptions::SleepTime}, /*Sleep Time*/
#endif #endif
{SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, SettingsOptions::ShutdownTime}, /*Shutdown Time*/ {SETTINGS_DESC(SettingsItemIndex::ShutdownTimeout), nullptr, settings_displayShutdownTime, nullptr, SettingsOptions::ShutdownTime}, /*Shutdown Time*/
{SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/ {SETTINGS_DESC(SettingsItemIndex::MotionSensitivity), nullptr, settings_displaySensitivity, nullptr, SettingsOptions::Sensitivity}, /* Motion Sensitivity*/
#ifdef HALL_SENSOR #ifdef HALL_SENSOR
{SETTINGS_DESC(SettingsItemIndex::HallEffSensitivity), nullptr, settings_displayHallEffect, SettingsOptions::HallEffectSensitivity}, /* HallEffect Sensitivity*/ {SETTINGS_DESC(SettingsItemIndex::HallEffSensitivity), nullptr, settings_displayHallEffect, nullptr, SettingsOptions::HallEffectSensitivity}, /* HallEffect Sensitivity*/
#endif #endif
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE {0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
}; };
const menuitem advancedMenu[] = { const menuitem advancedMenu[] = {
@@ -238,14 +239,15 @@ const menuitem advancedMenu[] = {
* Power Pulse Wait * Power Pulse Wait
* Power Pulse Duration * Power Pulse Duration
*/ */
{SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, SettingsOptions::PowerLimit}, /*Power limit*/ {SETTINGS_DESC(SettingsItemIndex::PowerLimit), nullptr, settings_displayPowerLimit, nullptr, SettingsOptions::PowerLimit}, /*Power limit*/
{SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/ {SETTINGS_DESC(SettingsItemIndex::SettingsReset), settings_setResetSettings, settings_displayResetSettings, nullptr, SettingsOptions::SettingsOptionsLength}, /*Resets settings*/
{SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/ {SETTINGS_DESC(SettingsItemIndex::TemperatureCalibration), settings_setCalibrate, settings_displayCalibrate, nullptr, SettingsOptions::SettingsOptionsLength}, /*Calibrate tip*/
{SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/ {SETTINGS_DESC(SettingsItemIndex::VoltageCalibration), settings_setCalibrateVIN, settings_displayCalibrateVIN, nullptr, SettingsOptions::SettingsOptionsLength}, /*Voltage input cal*/
{SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */ {SETTINGS_DESC(SettingsItemIndex::PowerPulsePower), nullptr, settings_displayPowerPulse, nullptr, SettingsOptions::KeepAwakePulse}, /*Power Pulse adjustment */
{SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/ {SETTINGS_DESC(SettingsItemIndex::PowerPulseWait), nullptr, settings_displayPowerPulseWait, settings_showPowerPulseOptions, SettingsOptions::KeepAwakePulseWait}, /*Power Pulse Wait adjustment*/
{SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/ {SETTINGS_DESC(SettingsItemIndex::PowerPulseDuration), nullptr, settings_displayPowerPulseDuration, settings_showPowerPulseOptions,
{0, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE SettingsOptions::KeepAwakePulseDuration}, /*Power Pulse Duration adjustment*/
{0, nullptr, nullptr, nullptr, SettingsOptions::SettingsOptionsLength} // end of menu marker. DO NOT REMOVE
}; };
/** /**
@@ -296,7 +298,7 @@ static int userConfirmation(const char *message) {
} }
#ifdef POW_DC #ifdef POW_DC
static bool settings_displayInputVRange(void) { static void settings_displayInputVRange(void) {
printShortDescription(SettingsItemIndex::DCInCutoff, 6); printShortDescription(SettingsItemIndex::DCInCutoff, 6);
if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { if (getSettingValue(SettingsOptions::MinDCVoltageCells)) {
@@ -305,10 +307,9 @@ static bool settings_displayInputVRange(void) {
} else { } else {
OLED::print(SymbolDC, FontStyle::LARGE); OLED::print(SymbolDC, FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayInputMinVRange(void) { static void settings_displayInputMinVRange(void) {
if (getSettingValue(SettingsOptions::MinDCVoltageCells)) { if (getSettingValue(SettingsOptions::MinDCVoltageCells)) {
printShortDescription(SettingsItemIndex::MinVolCell, 4); printShortDescription(SettingsItemIndex::MinVolCell, 4);
OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::MinVoltageCells) / 10, 2, FontStyle::LARGE);
@@ -318,12 +319,11 @@ static bool settings_displayInputMinVRange(void) {
printShortDescription(SettingsItemIndex::MinVolCell, 5); printShortDescription(SettingsItemIndex::MinVolCell, 5);
OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingNAChar), FontStyle::LARGE);
} }
return false;
} }
#endif #endif
#ifdef POW_QC #ifdef POW_QC
static bool settings_displayQCInputV(void) { static void settings_displayQCInputV(void) {
printShortDescription(SettingsItemIndex::QCMaxVoltage, 4); printShortDescription(SettingsItemIndex::QCMaxVoltage, 4);
// These are only used in QC modes // These are only used in QC modes
// Allows setting the voltage negotiated for QC // Allows setting the voltage negotiated for QC
@@ -332,14 +332,13 @@ static bool settings_displayQCInputV(void) {
OLED::print(SymbolDot, FontStyle::LARGE); OLED::print(SymbolDot, FontStyle::LARGE);
OLED::printNumber(voltage % 10, 1, FontStyle::LARGE); OLED::printNumber(voltage % 10, 1, FontStyle::LARGE);
OLED::print(SymbolVolts, FontStyle::LARGE); OLED::print(SymbolVolts, FontStyle::LARGE);
return false;
} }
#endif #endif
#ifdef POW_PD #ifdef POW_PD
static bool settings_displayPDNegTimeout(void) { static void settings_displayPDNegTimeout(void) {
printShortDescription(SettingsItemIndex::PDNegTimeout, 5); printShortDescription(SettingsItemIndex::PDNegTimeout, 5);
auto value = getSettingValue(SettingsOptions::PDNegTimeout); auto value = getSettingValue(SettingsOptions::PDNegTimeout);
if (value == 0) { if (value == 0) {
@@ -347,7 +346,6 @@ static bool settings_displayPDNegTimeout(void) {
} else { } else {
OLED::printNumber(value, 2, FontStyle::LARGE); OLED::printNumber(value, 2, FontStyle::LARGE);
} }
return false;
} }
#endif #endif
@@ -370,13 +368,12 @@ static bool settings_setSleepTemp(void) {
} }
} }
static bool settings_displaySleepTemp(void) { static void settings_displaySleepTemp(void) {
printShortDescription(SettingsItemIndex::SleepTemperature, 5); printShortDescription(SettingsItemIndex::SleepTemperature, 5);
OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::SleepTemp), 3, FontStyle::LARGE);
return false;
} }
static bool settings_displaySleepTime(void) { static void settings_displaySleepTime(void) {
printShortDescription(SettingsItemIndex::SleepTimeout, 5); printShortDescription(SettingsItemIndex::SleepTimeout, 5);
if (getSettingValue(SettingsOptions::SleepTime) == 0) { if (getSettingValue(SettingsOptions::SleepTime) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
@@ -387,11 +384,10 @@ static bool settings_displaySleepTime(void) {
OLED::printNumber(getSettingValue(SettingsOptions::SleepTime) - 5, 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::SleepTime) - 5, 2, FontStyle::LARGE);
OLED::print(SymbolMinutes, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE);
} }
return false;
} }
#endif #endif
static bool settings_displayShutdownTime(void) { static void settings_displayShutdownTime(void) {
printShortDescription(SettingsItemIndex::ShutdownTimeout, 5); printShortDescription(SettingsItemIndex::ShutdownTimeout, 5);
if (getSettingValue(SettingsOptions::ShutdownTime) == 0) { if (getSettingValue(SettingsOptions::ShutdownTime) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
@@ -399,7 +395,6 @@ static bool settings_displayShutdownTime(void) {
OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::ShutdownTime), 2, FontStyle::LARGE);
OLED::print(SymbolMinutes, FontStyle::LARGE); OLED::print(SymbolMinutes, FontStyle::LARGE);
} }
return false;
} }
static bool settings_setTempF(void) { static bool settings_setTempF(void) {
bool res = nextSettingValue(SettingsOptions::TemperatureInF); bool res = nextSettingValue(SettingsOptions::TemperatureInF);
@@ -434,33 +429,29 @@ static bool settings_setTempF(void) {
return res; return res;
} }
static bool settings_displayTempF(void) { static void settings_displayTempF(void) {
printShortDescription(SettingsItemIndex::TemperatureUnit, 7); printShortDescription(SettingsItemIndex::TemperatureUnit, 7);
OLED::print((getSettingValue(SettingsOptions::TemperatureInF)) ? SymbolDegF : SymbolDegC, FontStyle::LARGE); OLED::print((getSettingValue(SettingsOptions::TemperatureInF)) ? SymbolDegF : SymbolDegC, FontStyle::LARGE);
return false;
} }
static bool settings_displaySensitivity(void) { static void settings_displaySensitivity(void) {
printShortDescription(SettingsItemIndex::MotionSensitivity, 7); printShortDescription(SettingsItemIndex::MotionSensitivity, 7);
OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false); OLED::printNumber(getSettingValue(SettingsOptions::Sensitivity), 1, FontStyle::LARGE, false);
return false;
} }
static bool settings_displayAdvancedSolderingScreens(void) { static void settings_displayAdvancedSolderingScreens(void) {
printShortDescription(SettingsItemIndex::AdvancedSoldering, 7); printShortDescription(SettingsItemIndex::AdvancedSoldering, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering)); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedSoldering));
return false;
} }
static bool settings_displayAdvancedIDLEScreens(void) { static void settings_displayAdvancedIDLEScreens(void) {
printShortDescription(SettingsItemIndex::AdvancedIdle, 7); printShortDescription(SettingsItemIndex::AdvancedIdle, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedIDLE)); OLED::drawCheckbox(getSettingValue(SettingsOptions::DetailedIDLE));
return false;
} }
static bool settings_displayPowerLimit(void) { static void settings_displayPowerLimit(void) {
printShortDescription(SettingsItemIndex::PowerLimit, 5); printShortDescription(SettingsItemIndex::PowerLimit, 5);
if (getSettingValue(SettingsOptions::PowerLimit) == 0) { if (getSettingValue(SettingsOptions::PowerLimit) == 0) {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
@@ -468,13 +459,11 @@ static bool settings_displayPowerLimit(void) {
OLED::printNumber(getSettingValue(SettingsOptions::PowerLimit), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::PowerLimit), 2, FontStyle::LARGE);
OLED::print(SymbolWatts, FontStyle::LARGE); OLED::print(SymbolWatts, FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayScrollSpeed(void) { static void settings_displayScrollSpeed(void) {
printShortDescription(SettingsItemIndex::ScrollingSpeed, 7); printShortDescription(SettingsItemIndex::ScrollingSpeed, 7);
OLED::print(translatedString((getSettingValue(SettingsOptions::DescriptionScrollSpeed)) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE); OLED::print(translatedString((getSettingValue(SettingsOptions::DescriptionScrollSpeed)) ? Tr->SettingFastChar : Tr->SettingSlowChar), FontStyle::LARGE);
return false;
} }
#ifndef NO_DISPLAY_ROTATE #ifndef NO_DISPLAY_ROTATE
@@ -496,7 +485,7 @@ static bool settings_setDisplayRotation(void) {
return res; return res;
} }
static bool settings_displayDisplayRotation(void) { static void settings_displayDisplayRotation(void) {
printShortDescription(SettingsItemIndex::DisplayRotation, 7); printShortDescription(SettingsItemIndex::DisplayRotation, 7);
switch (getSettingValue(SettingsOptions::OrientationMode)) { switch (getSettingValue(SettingsOptions::OrientationMode)) {
@@ -513,7 +502,6 @@ static bool settings_displayDisplayRotation(void) {
OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingRightChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
#endif #endif
static bool settings_setBoostTemp(void) { static bool settings_setBoostTemp(void) {
@@ -543,17 +531,16 @@ static bool settings_setBoostTemp(void) {
return value == MAX_TEMP_C; return value == MAX_TEMP_C;
} }
static bool settings_displayBoostTemp(void) { static void settings_displayBoostTemp(void) {
printShortDescription(SettingsItemIndex::BoostTemperature, 5); printShortDescription(SettingsItemIndex::BoostTemperature, 5);
if (getSettingValue(SettingsOptions::BoostTemp)) { if (getSettingValue(SettingsOptions::BoostTemp)) {
OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::BoostTemp), 3, FontStyle::LARGE);
} else { } else {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayAutomaticStartMode(void) { static void settings_displayAutomaticStartMode(void) {
printShortDescription(SettingsItemIndex::AutoStart, 7); printShortDescription(SettingsItemIndex::AutoStart, 7);
switch (getSettingValue(SettingsOptions::AutoStartMode)) { switch (getSettingValue(SettingsOptions::AutoStartMode)) {
@@ -573,10 +560,9 @@ static bool settings_displayAutomaticStartMode(void) {
OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingStartNoneChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayLockingMode(void) { static void settings_displayLockingMode(void) {
printShortDescription(SettingsItemIndex::LockingMode, 7); printShortDescription(SettingsItemIndex::LockingMode, 7);
switch (getSettingValue(SettingsOptions::LockingMode)) { switch (getSettingValue(SettingsOptions::LockingMode)) {
@@ -593,13 +579,11 @@ static bool settings_displayLockingMode(void) {
OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingLockDisableChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayCoolingBlinkEnabled(void) { static void settings_displayCoolingBlinkEnabled(void) {
printShortDescription(SettingsItemIndex::CooldownBlink, 7); printShortDescription(SettingsItemIndex::CooldownBlink, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::CoolingTempBlink)); OLED::drawCheckbox(getSettingValue(SettingsOptions::CoolingTempBlink));
return false;
} }
static bool settings_setResetSettings(void) { static bool settings_setResetSettings(void) {
@@ -610,10 +594,7 @@ static bool settings_setResetSettings(void) {
return false; return false;
} }
static bool settings_displayResetSettings(void) { static void settings_displayResetSettings(void) { printShortDescription(SettingsItemIndex::SettingsReset, 7); }
printShortDescription(SettingsItemIndex::SettingsReset, 7);
return false;
}
static void setTipOffset() { static void setTipOffset() {
uint16_t setoffset = 0; uint16_t setoffset = 0;
@@ -657,10 +638,7 @@ static bool settings_setCalibrate(void) {
return false; return false;
} }
static bool settings_displayCalibrate(void) { static void settings_displayCalibrate(void) { printShortDescription(SettingsItemIndex::TemperatureCalibration, 5); }
printShortDescription(SettingsItemIndex::TemperatureCalibration, 5);
return false;
}
static bool settings_setCalibrateVIN(void) { static bool settings_setCalibrateVIN(void) {
// Jump to the voltage calibration subscreen // Jump to the voltage calibration subscreen
@@ -701,25 +679,22 @@ static bool settings_setCalibrateVIN(void) {
return false; return false;
} }
static bool settings_displayReverseButtonTempChangeEnabled(void) { static void settings_displayReverseButtonTempChangeEnabled(void) {
printShortDescription(SettingsItemIndex::ReverseButtonTempChange, 7); printShortDescription(SettingsItemIndex::ReverseButtonTempChange, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled)); OLED::drawCheckbox(getSettingValue(SettingsOptions::ReverseButtonTempChangeEnabled));
return false;
} }
static bool settings_displayTempChangeShortStep(void) { static void settings_displayTempChangeShortStep(void) {
printShortDescription(SettingsItemIndex::TempChangeShortStep, 6); printShortDescription(SettingsItemIndex::TempChangeShortStep, 6);
OLED::printNumber(getSettingValue(SettingsOptions::TempChangeShortStep), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeShortStep), 2, FontStyle::LARGE);
return false;
} }
static bool settings_displayTempChangeLongStep(void) { static void settings_displayTempChangeLongStep(void) {
printShortDescription(SettingsItemIndex::TempChangeLongStep, 6); printShortDescription(SettingsItemIndex::TempChangeLongStep, 6);
OLED::printNumber(getSettingValue(SettingsOptions::TempChangeLongStep), 2, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::TempChangeLongStep), 2, FontStyle::LARGE);
return false;
} }
static bool settings_displayPowerPulse(void) { static void settings_displayPowerPulse(void) {
printShortDescription(SettingsItemIndex::PowerPulsePower, 5); printShortDescription(SettingsItemIndex::PowerPulsePower, 5);
if (getSettingValue(SettingsOptions::KeepAwakePulse)) { if (getSettingValue(SettingsOptions::KeepAwakePulse)) {
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) / 10, 1, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulse) / 10, 1, FontStyle::LARGE);
@@ -728,16 +703,14 @@ static bool settings_displayPowerPulse(void) {
} else { } else {
OLED::print(translatedString(Tr->OffString), FontStyle::LARGE); OLED::print(translatedString(Tr->OffString), FontStyle::LARGE);
} }
return false;
} }
static bool settings_displayAnimationLoop(void) { static void settings_displayAnimationLoop(void) {
printShortDescription(SettingsItemIndex::AnimLoop, 7); printShortDescription(SettingsItemIndex::AnimLoop, 7);
OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop)); OLED::drawCheckbox(getSettingValue(SettingsOptions::AnimationLoop));
return false;
} }
static bool settings_displayAnimationSpeed(void) { static void settings_displayAnimationSpeed(void) {
printShortDescription(SettingsItemIndex::AnimSpeed, 7); printShortDescription(SettingsItemIndex::AnimSpeed, 7);
switch (getSettingValue(SettingsOptions::AnimationSpeed)) { switch (getSettingValue(SettingsOptions::AnimationSpeed)) {
case settingOffSpeed_t::SLOW: case settingOffSpeed_t::SLOW:
@@ -753,40 +726,29 @@ static bool settings_displayAnimationSpeed(void) {
OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingOffChar), FontStyle::LARGE);
break; break;
} }
return false;
} }
static bool settings_displayPowerPulseWait(void) { static bool settings_showPowerPulseOptions(void) { return getSettingValue(SettingsOptions::KeepAwakePulse) > 0; }
if (getSettingValue(SettingsOptions::KeepAwakePulse)) { static void settings_displayPowerPulseWait(void) {
printShortDescription(SettingsItemIndex::PowerPulseWait, 7); printShortDescription(SettingsItemIndex::PowerPulseWait, 7);
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseWait), 1, FontStyle::LARGE);
return false;
} else {
return true; // skip
}
} }
static bool settings_displayPowerPulseDuration(void) { static void settings_displayPowerPulseDuration(void) {
if (getSettingValue(SettingsOptions::KeepAwakePulse)) { printShortDescription(SettingsItemIndex::PowerPulseDuration, 7);
printShortDescription(SettingsItemIndex::PowerPulseDuration, 7); OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE);
OLED::printNumber(getSettingValue(SettingsOptions::KeepAwakePulseDuration), 1, FontStyle::LARGE);
return false;
} else {
return true; // skip
}
} }
static bool settings_displayBrightnessLevel(void) { static void settings_displayBrightnessLevel(void) {
OLED::drawArea(0, 0, 16, 16, brightnessIcon); OLED::drawArea(0, 0, 16, 16, brightnessIcon);
OLED::setCursor(5 * FONT_12_WIDTH - 2, 0); OLED::setCursor(5 * FONT_12_WIDTH - 2, 0);
// printShortDescription(SettingsItemIndex::Brightness, 7); // printShortDescription(SettingsItemIndex::Brightness, 7);
OLED::printNumber(getSettingValue(SettingsOptions::OLEDBrightness), 3, FontStyle::LARGE); OLED::printNumber(getSettingValue(SettingsOptions::OLEDBrightness), 3, FontStyle::LARGE);
// While not optimal to apply this here, it is _very_ convienient // While not optimal to apply this here, it is _very_ convienient
OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness)); OLED::setBrightness(getSettingValue(SettingsOptions::OLEDBrightness));
return false;
} }
static bool settings_displayInvertColor(void) { static void settings_displayInvertColor(void) {
OLED::drawArea(0, 0, 24, 16, invertDisplayIcon); OLED::drawArea(0, 0, 24, 16, invertDisplayIcon);
OLED::setCursor(7 * FONT_12_WIDTH - 2, 0); OLED::setCursor(7 * FONT_12_WIDTH - 2, 0);
// printShortDescription(SettingsItemIndex::ColourInversion, 7); // printShortDescription(SettingsItemIndex::ColourInversion, 7);
@@ -794,11 +756,10 @@ static bool settings_displayInvertColor(void) {
OLED::drawCheckbox(getSettingValue(SettingsOptions::OLEDInversion)); OLED::drawCheckbox(getSettingValue(SettingsOptions::OLEDInversion));
// While not optimal to apply this here, it is _very_ convienient // While not optimal to apply this here, it is _very_ convienient
OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion)); OLED::setInverseDisplay(getSettingValue(SettingsOptions::OLEDInversion));
return false;
} }
#ifdef HALL_SENSOR #ifdef HALL_SENSOR
static bool settings_displayHallEffect(void) { static void settings_displayHallEffect(void) {
printShortDescription(SettingsItemIndex::HallEffSensitivity, 7); printShortDescription(SettingsItemIndex::HallEffSensitivity, 7);
switch (getSettingValue(SettingsOptions::HallEffectSensitivity)) { switch (getSettingValue(SettingsOptions::HallEffectSensitivity)) {
case 1: case 1:
@@ -815,7 +776,6 @@ static bool settings_displayHallEffect(void) {
OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE); OLED::print(translatedString(Tr->SettingSensitivityOff), FontStyle::LARGE);
break; break;
} }
return false;
} }
#endif #endif
@@ -860,53 +820,35 @@ static void displayMenu(size_t index) {
} }
// Draw symbol // Draw symbol
// 16 pixel wide image // 16 pixel wide image
// 2 pixel wide scrolling indicator // less 2 pixel wide scrolling indicator
OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[index][(16 * 2) * currentFrame])); OLED::drawArea(OLED_WIDTH - 16 - 2, 0, 16, 16, (&SettingsMenuIcons[index][(16 * 2) * currentFrame]));
} }
static bool settings_displayCalibrateVIN(void) { static void settings_displayCalibrateVIN(void) { printShortDescription(SettingsItemIndex::VoltageCalibration, 5); }
printShortDescription(SettingsItemIndex::VoltageCalibration, 5);
return false;
}
#if defined(POW_DC) || defined(POW_QC) #if defined(POW_DC) || defined(POW_QC)
static bool settings_displayPowerMenu(void) { static void settings_displayPowerMenu(void) { displayMenu(0); }
displayMenu(0);
return false;
}
static bool settings_enterPowerMenu(void) { static bool settings_enterPowerMenu(void) {
gui_Menu(powerMenu); gui_Menu(powerMenu);
return false; return false;
} }
#endif #endif
static bool settings_displaySolderingMenu(void) { static void settings_displaySolderingMenu(void) { displayMenu(1); }
displayMenu(1);
return false;
}
static bool settings_enterSolderingMenu(void) { static bool settings_enterSolderingMenu(void) {
gui_Menu(solderingMenu); gui_Menu(solderingMenu);
return false; return false;
} }
static bool settings_displayPowerSavingMenu(void) { static void settings_displayPowerSavingMenu(void) { displayMenu(2); }
displayMenu(2);
return false;
}
static bool settings_enterPowerSavingMenu(void) { static bool settings_enterPowerSavingMenu(void) {
gui_Menu(PowerSavingMenu); gui_Menu(PowerSavingMenu);
return false; return false;
} }
static bool settings_displayUIMenu(void) { static void settings_displayUIMenu(void) { displayMenu(3); }
displayMenu(3);
return false;
}
static bool settings_enterUIMenu(void) { static bool settings_enterUIMenu(void) {
gui_Menu(HasFahrenheit ? UIMenu : UIMenu + 1); gui_Menu(HasFahrenheit ? UIMenu : UIMenu + 1);
return false; return false;
} }
static bool settings_displayAdvancedMenu(void) { static void settings_displayAdvancedMenu(void) { displayMenu(4); }
displayMenu(4);
return false;
}
static bool settings_enterAdvancedMenu(void) { static bool settings_enterAdvancedMenu(void) {
gui_Menu(advancedMenu); gui_Menu(advancedMenu);
return false; return false;
@@ -940,7 +882,11 @@ void gui_Menu(const menuitem *menu) {
ScrollMessage scrollMessage; ScrollMessage scrollMessage;
for (uint8_t i = 0; menu[i].draw != nullptr; i++) { for (uint8_t i = 0; menu[i].draw != nullptr; i++) {
scrollContentSize += 1; if (menu[i].isVisible == nullptr) {
scrollContentSize += 1; // Always visible
} else if (menu[i].isVisible()) {
scrollContentSize += 1; // Selectively visible and chosen to show
}
} }
while ((menu[currentScreen].draw != nullptr) && earlyExit == false) { while ((menu[currentScreen].draw != nullptr) && earlyExit == false) {
@@ -952,10 +898,12 @@ void gui_Menu(const menuitem *menu) {
// to keep the primary framebuffer intact for the upcoming transition // to keep the primary framebuffer intact for the upcoming transition
// animation. // animation.
OLED::useSecondaryFramebuffer(true); OLED::useSecondaryFramebuffer(true);
if (menu[currentScreen].draw()) { if (menu[currentScreen].isVisible != nullptr) {
currentScreen++; if (!menu[currentScreen].isVisible()) {
OLED::useSecondaryFramebuffer(false); currentScreen++;
continue; OLED::useSecondaryFramebuffer(false);
continue;
}
} }
animOpenState = true; animOpenState = true;