🧑‍💻 Menu code cleanup

This commit is contained in:
Scott Lahteine 2025-04-01 03:11:43 -05:00
parent 26551c17c2
commit 30a10077cf
3 changed files with 29 additions and 37 deletions

View file

@ -527,29 +527,27 @@ void MarlinUI::init() {
#define ADC_MIN_KEY_DELAY 100
if (keypad_buttons) {
#if HAS_ENCODER_ACTION
refresh(LCDVIEW_REDRAW_NOW);
#if HAS_MARLINUI_MENU
if (encoderDirection == -(ENCODERBASE)) { // HAS_ADC_BUTTONS forces REVERSE_MENU_DIRECTION, so this indicates menu navigation
if (RRK(EN_KEYPAD_UP)) encoderPosition += ENCODER_STEPS_PER_MENU_ITEM;
else if (RRK(EN_KEYPAD_DOWN)) encoderPosition -= ENCODER_STEPS_PER_MENU_ITEM;
else if (RRK(EN_KEYPAD_LEFT)) { MenuItem_back::action(); quick_feedback(); }
else if (RRK(EN_KEYPAD_RIGHT)) { return_to_status(); quick_feedback(); }
}
else
#endif
{
#if HAS_MARLINUI_MENU
if (RRK(EN_KEYPAD_UP)) encoderPosition -= epps;
else if (RRK(EN_KEYPAD_DOWN)) encoderPosition += epps;
else if (RRK(EN_KEYPAD_LEFT)) { MenuItem_back::action(); quick_feedback(); }
else if (RRK(EN_KEYPAD_RIGHT)) encoderPosition = 0;
#else
if (RRK(EN_KEYPAD_UP) || RRK(EN_KEYPAD_LEFT)) encoderPosition -= epps;
else if (RRK(EN_KEYPAD_DOWN) || RRK(EN_KEYPAD_RIGHT)) encoderPosition += epps;
#endif
refresh(LCDVIEW_REDRAW_NOW);
#if HAS_MARLINUI_MENU
if (encoderDirection == -(ENCODERBASE)) { // HAS_ADC_BUTTONS forces REVERSE_MENU_DIRECTION, so this indicates menu navigation
if (RRK(EN_KEYPAD_UP)) encoderPosition += ENCODER_STEPS_PER_MENU_ITEM;
else if (RRK(EN_KEYPAD_DOWN)) encoderPosition -= ENCODER_STEPS_PER_MENU_ITEM;
else if (RRK(EN_KEYPAD_LEFT)) { MenuItem_back::action(); quick_feedback(); }
else if (RRK(EN_KEYPAD_RIGHT)) { return_to_status(); quick_feedback(); }
}
else
#endif
{
#if HAS_MARLINUI_MENU
if (RRK(EN_KEYPAD_UP)) encoderPosition -= epps;
else if (RRK(EN_KEYPAD_DOWN)) encoderPosition += epps;
else if (RRK(EN_KEYPAD_LEFT)) { MenuItem_back::action(); quick_feedback(); }
else if (RRK(EN_KEYPAD_RIGHT)) encoderPosition = 0;
#else
if (RRK(EN_KEYPAD_UP) || RRK(EN_KEYPAD_LEFT)) encoderPosition -= epps;
else if (RRK(EN_KEYPAD_DOWN) || RRK(EN_KEYPAD_RIGHT)) encoderPosition += epps;
#endif
}
next_button_update_ms = millis() + ADC_MIN_KEY_DELAY;
return true;
}
@ -1337,11 +1335,11 @@ void MarlinUI::init() {
const int8_t pulses = epps * encoderDirection;
if (BUTTON_PRESSED(UP)) {
encoderDiff = (ENCODER_STEPS_PER_MENU_ITEM) * pulses;
encoderDiff = pulses * (ENCODER_STEPS_PER_MENU_ITEM);
next_button_update_ms = now + 300;
}
else if (BUTTON_PRESSED(DOWN)) {
encoderDiff = -(ENCODER_STEPS_PER_MENU_ITEM) * pulses;
encoderDiff = pulses * -(ENCODER_STEPS_PER_MENU_ITEM);
next_button_update_ms = now + 300;
}
else if (BUTTON_PRESSED(LEFT)) {

View file

@ -235,18 +235,15 @@ static FSTR_P pause_header() {
// Portions from STATIC_ITEM...
#define HOTEND_STATUS_ITEM() do { \
if (_menuLineNr == _thisItemNr) { \
if ( MY_LINE()) { \
if (ui.should_draw()) { \
IF_DISABLED(HAS_GRAPHICAL_TFT, MenuItem_static::draw(_lcdLineNr, GET_TEXT_F(MSG_FILAMENT_CHANGE_NOZZLE), SS_INVERT)); \
ui.draw_hotend_status(_lcdLineNr, hotend_status_extruder); \
} \
if (_skipStatic && encoderLine <= _thisItemNr) { \
ui.encoderPosition += ENCODER_STEPS_PER_MENU_ITEM; \
++encoderLine; \
} \
STATIC_SKIP(); \
ui.refresh(LCDVIEW_CALL_REDRAW_NEXT); \
} \
++_thisItemNr; \
NEXT_ITEM(); \
}while(0)
void menu_pause_option() {
@ -307,11 +304,9 @@ void lcd_pause_waiting_message() { _lcd_pause_message(GET_TEXT_F(MSG_ADVANCED_P
void lcd_pause_resume_message() { _lcd_pause_message(GET_TEXT_F(MSG_FILAMENT_CHANGE_RESUME)); }
void lcd_pause_purge_message() {
#if ENABLED(ADVANCED_PAUSE_CONTINUOUS_PURGE)
_lcd_pause_message(GET_TEXT_F(MSG_FILAMENT_CHANGE_CONT_PURGE));
#else
_lcd_pause_message(GET_TEXT_F(MSG_FILAMENT_CHANGE_PURGE));
#endif
_lcd_pause_message(GET_TEXT_F(
TERN(ADVANCED_PAUSE_CONTINUOUS_PURGE, MSG_FILAMENT_CHANGE_CONT_PURGE, MSG_FILAMENT_CHANGE_PURGE)
));
}
FORCE_INLINE screenFunc_t ap_message_screen(const PauseMessage message) {

View file

@ -401,7 +401,7 @@ class MenuItem_bool : public MenuEditItemBase {
#define PSTRING_ITEM_F_P(FLABEL, PVAL, STYL) do{ \
constexpr int m = 20; \
char msg[m + 1]; \
if (_menuLineNr == _thisItemNr) { \
if (MY_LINE()) { \
msg[0] = ':'; msg[1] = ' '; \
strlcpy_P(msg + 2, PVAL, m - 1); \
if (msg[m - 1] & 0x80) msg[m - 1] = '\0'; \
@ -410,8 +410,7 @@ class MenuItem_bool : public MenuEditItemBase {
}while(0)
#define PSTRING_ITEM_N_F_P(N, V...) do{ \
if (_menuLineNr == _thisItemNr) \
MenuItemBase::init(N); \
if (MY_LINE()) MenuItemBase::init(N); \
PSTRING_ITEM_F_P(V); \
}while(0)