From dfbdcdba85b35906fe78a9b83efe024b89d62d54 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Sat, 28 Jan 2017 19:52:34 +0100 Subject: [PATCH] [X7] Hardware menu navigation fix (last line) + some TODO removed --- radio/src/CMakeLists.txt | 8 +++- .../src/gui/128x64/model_logical_switches.cpp | 16 +++++--- .../gui/128x64/model_special_functions.cpp | 2 +- radio/src/gui/128x64/radio_hardware.cpp | 31 ++++++---------- .../src/gui/212x64/model_logical_switches.cpp | 4 +- .../gui/212x64/model_special_functions.cpp | 2 +- radio/src/gui/212x64/radio_hardware.cpp | 23 ++++-------- radio/src/gui/212x64/radio_setup.cpp | 2 +- .../gui/480x272/model_logical_switches.cpp | 4 +- .../gui/480x272/model_special_functions.cpp | 2 +- radio/src/gui/480x272/radio_hardware.cpp | 15 ++------ radio/src/gui/480x272/radio_setup.cpp | 2 +- .../src/gui/480x272/view_logical_switches.cpp | 4 +- radio/src/gui/common/widgets.cpp | 8 +++- radio/src/gui/gui_common.cpp | 37 +++++++++++++++++++ radio/src/gui/gui_common.h | 3 ++ radio/src/gui/gui_common_arm.cpp | 27 ++++---------- 17 files changed, 107 insertions(+), 83 deletions(-) create mode 100644 radio/src/gui/gui_common.cpp diff --git a/radio/src/CMakeLists.txt b/radio/src/CMakeLists.txt index 67f920fd3..e0f584996 100644 --- a/radio/src/CMakeLists.txt +++ b/radio/src/CMakeLists.txt @@ -338,11 +338,17 @@ if(GUI) keys.cpp maths.cpp translations.cpp - gui/gui_common_arm.cpp + gui/gui_common.cpp ) foreach(FILE ${GUI_SRC}) set(SRC ${SRC} gui/${GUI_DIR}/${FILE}) endforeach() + if(ARCH STREQUAL ARM) + set(SRC + ${SRC} + gui/gui_common_arm.cpp + ) + endif() endif() foreach(FILE ${TARGET_SRC}) diff --git a/radio/src/gui/128x64/model_logical_switches.cpp b/radio/src/gui/128x64/model_logical_switches.cpp index 829f9a944..d6aea87a8 100644 --- a/radio/src/gui/128x64/model_logical_switches.cpp +++ b/radio/src/gui/128x64/model_logical_switches.cpp @@ -195,7 +195,9 @@ void menuModelLogicalSwitchOne(event_t event) case LS_FIELD_ANDSW: lcdDrawTextAlignedLeft(y, STR_AND_SWITCH); drawSwitch(CSWONE_2ND_COLUMN, y, cs->andsw, attr); - if (attr) CHECK_INCDEC_MODELSWITCH(event, cs->andsw, -MAX_LS_ANDSW, MAX_LS_ANDSW, isSwitchAvailableInLogicalSwitches); + if (attr) { + CHECK_INCDEC_MODELSWITCH(event, cs->andsw, -MAX_LS_ANDSW, MAX_LS_ANDSW, isSwitchAvailableInLogicalSwitches); + } break; case LS_FIELD_DURATION: @@ -203,8 +205,10 @@ void menuModelLogicalSwitchOne(event_t event) if (cs->duration > 0) lcdDrawNumber(CSWONE_2ND_COLUMN, y, cs->duration, attr|PREC1|LEFT); else - lcdDrawTextAtIndex(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_LS_DURATION); + lcdDrawMMM(CSWONE_2ND_COLUMN, y, attr); + if (attr) { + CHECK_INCDEC_MODELVAR_ZERO(event, cs->duration, MAX_LS_DURATION); + } break; case LS_FIELD_DELAY: @@ -212,8 +216,10 @@ void menuModelLogicalSwitchOne(event_t event) if (cs->delay > 0) lcdDrawNumber(CSWONE_2ND_COLUMN, y, cs->delay, attr|PREC1|LEFT); else - lcdDrawTextAtIndex(CSWONE_2ND_COLUMN, y, STR_MMMINV, 0, attr); - if (attr) CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_LS_DELAY); + lcdDrawMMM(CSWONE_2ND_COLUMN, y, attr); + if (attr) { + CHECK_INCDEC_MODELVAR_ZERO(event, cs->delay, MAX_LS_DELAY); + } break; } } diff --git a/radio/src/gui/128x64/model_special_functions.cpp b/radio/src/gui/128x64/model_special_functions.cpp index fbcb8dac4..a4a3da90b 100644 --- a/radio/src/gui/128x64/model_special_functions.cpp +++ b/radio/src/gui/128x64/model_special_functions.cpp @@ -301,7 +301,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF lcdDrawChar(lcdLastPos, y, 's'); } else { - lcdDrawTextAtIndex(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, STR_MMMINV, 0, attr); + lcdDrawMMM(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, attr); } } #endif diff --git a/radio/src/gui/128x64/radio_hardware.cpp b/radio/src/gui/128x64/radio_hardware.cpp index f0721e11f..e8393186c 100644 --- a/radio/src/gui/128x64/radio_hardware.cpp +++ b/radio/src/gui/128x64/radio_hardware.cpp @@ -109,20 +109,20 @@ enum MenuRadioHardwareItems { ITEM_RADIO_HARDWARE_SB, ITEM_RADIO_HARDWARE_SC, ITEM_RADIO_HARDWARE_SD, - ITEM_RADIO_HARDWARE_SE, ITEM_RADIO_HARDWARE_SF, + ITEM_RADIO_HARDWARE_SH, ITEM_RADIO_HARDWARE_JITTER_FILTER, ITEM_RADIO_HARDWARE_MAX }; -#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 -#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) -#define HW_SETTINGS_COLUMN 30 +#define POTS_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#define SWITCHES_ROWS NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1, NAVIGATION_LINE_BY_LINE|1 +#define SWITCH_TYPE_MAX(sw) ((MIXSRC_SF-MIXSRC_FIRST_SWITCH == sw || MIXSRC_SH-MIXSRC_FIRST_SWITCH == sw) ? SWITCH_2POS : SWITCH_3POS) +#define HW_SETTINGS_COLUMN 30 void menuRadioHardware(event_t event) { - MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS }); + MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX, { LABEL(Sticks), 0, 0, 0, 0, LABEL(Pots), POTS_ROWS, LABEL(Switches), SWITCHES_ROWS, 0 }); uint8_t sub = menuVerticalPosition; @@ -144,15 +144,8 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: case ITEM_RADIO_HARDWARE_STICK4: - { - int idx = k-1; - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0); - if (ZEXIST(g_eeGeneral.anaNames[idx]) || attr) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, attr); - else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + editStickHardwareSettings(HW_SETTINGS_COLUMN, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); break; - } case ITEM_RADIO_HARDWARE_LABEL_POTS: lcdDrawTextAlignedLeft(y, STR_POTS); @@ -164,10 +157,10 @@ void menuRadioHardware(event_t event) uint8_t shift = (2*idx); uint8_t mask = (0x03 << shift); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+idx+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && menuHorizontalPosition == 0)) + if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && s_editMode > 0 && menuHorizontalPosition == 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition==0 ? attr : 0); uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift; potType = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.potsConfig &= ~mask; @@ -182,16 +175,16 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_SB: case ITEM_RADIO_HARDWARE_SC: case ITEM_RADIO_HARDWARE_SD: - case ITEM_RADIO_HARDWARE_SE: case ITEM_RADIO_HARDWARE_SF: + case ITEM_RADIO_HARDWARE_SH: { int index = k-ITEM_RADIO_HARDWARE_SA; int config = SWITCH_CONFIG(index); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH-MIXSRC_Rud+index+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0)) + if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && s_editMode > 0 && menuHorizontalPosition == 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); config = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); if (attr && checkIncDec_Ret) { swconfig_t mask = (swconfig_t)0x03 << (2*index); diff --git a/radio/src/gui/212x64/model_logical_switches.cpp b/radio/src/gui/212x64/model_logical_switches.cpp index d0010648c..564d8b592 100644 --- a/radio/src/gui/212x64/model_logical_switches.cpp +++ b/radio/src/gui/212x64/model_logical_switches.cpp @@ -185,7 +185,7 @@ void menuModelLogicalSwitches(event_t event) if (cs->duration > 0) lcdDrawNumber(CSW_5TH_COLUMN, y, cs->duration, (horz==LS_FIELD_DURATION ? attr : 0)|PREC1|LEFT); else - lcdDrawTextAtIndex(CSW_5TH_COLUMN, y, STR_MMMINV, 0, horz==LS_FIELD_DURATION ? attr : 0); + lcdDrawMMM(CSW_5TH_COLUMN, y, horz==LS_FIELD_DURATION ? attr : 0); // CSW delay if (cstate == LS_FAMILY_EDGE) { @@ -198,7 +198,7 @@ void menuModelLogicalSwitches(event_t event) lcdDrawNumber(CSW_6TH_COLUMN, y, cs->delay, (horz==LS_FIELD_DELAY ? attr : 0)|PREC1|LEFT); } else { - lcdDrawTextAtIndex(CSW_6TH_COLUMN, y, STR_MMMINV, 0, horz==LS_FIELD_DELAY ? attr : 0); + lcdDrawMMM(CSW_6TH_COLUMN, y, horz==LS_FIELD_DELAY ? attr : 0); } if (attr && horz == LS_FIELD_V3 && cstate != LS_FAMILY_EDGE) { diff --git a/radio/src/gui/212x64/model_special_functions.cpp b/radio/src/gui/212x64/model_special_functions.cpp index 878622ad7..3e7462e24 100644 --- a/radio/src/gui/212x64/model_special_functions.cpp +++ b/radio/src/gui/212x64/model_special_functions.cpp @@ -329,7 +329,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF lcdDrawChar(lcdLastPos, y, 's'); } else { - lcdDrawTextAtIndex(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, STR_MMMINV, 0, attr); + lcdDrawMMM(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, attr); } } #if defined(PCBX9E) || defined(PCBX9DP) diff --git a/radio/src/gui/212x64/radio_hardware.cpp b/radio/src/gui/212x64/radio_hardware.cpp index 613799a6c..cdaa26b95 100644 --- a/radio/src/gui/212x64/radio_hardware.cpp +++ b/radio/src/gui/212x64/radio_hardware.cpp @@ -103,15 +103,8 @@ void menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: case ITEM_RADIO_HARDWARE_STICK4: - { - int idx = (k<=ITEM_RADIO_HARDWARE_STICK4 ? k-ITEM_RADIO_HARDWARE_STICK1 : k-ITEM_RADIO_HARDWARE_LS+MIXSRC_SLIDER1-MIXSRC_Rud); - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0); - if (ZEXIST(g_eeGeneral.anaNames[idx]) || attr) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, attr); - else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + editStickHardwareSettings(HW_SETTINGS_COLUMN, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); break; - } case ITEM_RADIO_HARDWARE_LS: case ITEM_RADIO_HARDWARE_RS: @@ -121,12 +114,12 @@ void menuRadioHardware(event_t event) #endif { int idx = k - ITEM_RADIO_HARDWARE_LS; - uint8_t mask = (0x01 << idx); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+NUM_POTS+idx+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0)) + if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); + uint8_t mask = (0x01 << idx); uint8_t potType = (g_eeGeneral.slidersConfig & mask) >> idx; potType = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.slidersConfig &= ~mask; @@ -150,10 +143,10 @@ void menuRadioHardware(event_t event) uint8_t shift = (2*idx); uint8_t mask = (0x03 << shift); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+idx+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && menuHorizontalPosition == 0)) + if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift; potType = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.potsConfig &= ~mask; @@ -187,10 +180,10 @@ void menuRadioHardware(event_t event) int index = k-ITEM_RADIO_HARDWARE_SA; int config = SWITCH_CONFIG(index); lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, MIXSRC_FIRST_SWITCH-MIXSRC_Rud+index+1, menuHorizontalPosition < 0 ? attr : 0); - if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0)) + if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0 && s_editMode > 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, menuHorizontalPosition == 0 ? attr : 0); config = editChoice(HW_SETTINGS_COLUMN+5*FW, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); if (attr && checkIncDec_Ret) { swconfig_t mask = (swconfig_t)0x03 << (2*index); diff --git a/radio/src/gui/212x64/radio_setup.cpp b/radio/src/gui/212x64/radio_setup.cpp index 61a9609be..7a2c330c3 100644 --- a/radio/src/gui/212x64/radio_setup.cpp +++ b/radio/src/gui/212x64/radio_setup.cpp @@ -396,7 +396,7 @@ void menuRadioSetup(event_t event) lcdDrawChar(lcdLastPos, y, 's'); } else { - lcdDrawTextAtIndex(RADIO_SETUP_2ND_COLUMN, y, STR_MMMINV, 0, attr); // TODO define + lcdDrawMMM(RADIO_SETUP_2ND_COLUMN, y, attr); } if (attr) g_eeGeneral.splashMode = -checkIncDecGen(event, -g_eeGeneral.splashMode, -3, 4); break; diff --git a/radio/src/gui/480x272/model_logical_switches.cpp b/radio/src/gui/480x272/model_logical_switches.cpp index a02696daf..1f0e10e52 100644 --- a/radio/src/gui/480x272/model_logical_switches.cpp +++ b/radio/src/gui/480x272/model_logical_switches.cpp @@ -184,7 +184,7 @@ bool menuModelLogicalSwitches(event_t event) if (cs->duration > 0) lcdDrawNumber(CSW_5TH_COLUMN, y, cs->duration, (menuHorizontalPosition==LS_FIELD_DURATION ? attr : 0)|PREC1|LEFT); else - lcdDrawTextAtIndex(CSW_5TH_COLUMN, y, STR_MMMINV, 0, menuHorizontalPosition==LS_FIELD_DURATION ? attr : 0); + lcdDrawMMM(CSW_5TH_COLUMN, y, menuHorizontalPosition==LS_FIELD_DURATION ? attr : 0); // CSW delay if (cstate == LS_FAMILY_EDGE) { @@ -194,7 +194,7 @@ bool menuModelLogicalSwitches(event_t event) lcdDrawNumber(CSW_6TH_COLUMN, y, cs->delay, (menuHorizontalPosition==LS_FIELD_DELAY ? attr : 0)|PREC1|LEFT); } else { - lcdDrawTextAtIndex(CSW_6TH_COLUMN, y, STR_MMMINV, 0, menuHorizontalPosition==LS_FIELD_DELAY ? attr : 0); + lcdDrawMMM(CSW_6TH_COLUMN, y, menuHorizontalPosition==LS_FIELD_DELAY ? attr : 0); } if (s_editMode>0 && attr) { diff --git a/radio/src/gui/480x272/model_special_functions.cpp b/radio/src/gui/480x272/model_special_functions.cpp index 5eb0ce3e7..18b6a5756 100644 --- a/radio/src/gui/480x272/model_special_functions.cpp +++ b/radio/src/gui/480x272/model_special_functions.cpp @@ -333,7 +333,7 @@ bool menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF lcdDrawNumber(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, val_displayed, attr|PREC1|LEFT, 0, NULL, "s"); } else { - lcdDrawTextAtIndex(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, STR_MMMINV, 0, attr); + lcdDrawMMM(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, attr); } } #if defined(GVARS) diff --git a/radio/src/gui/480x272/radio_hardware.cpp b/radio/src/gui/480x272/radio_hardware.cpp index 92021f0c9..ff1559732 100644 --- a/radio/src/gui/480x272/radio_hardware.cpp +++ b/radio/src/gui/480x272/radio_hardware.cpp @@ -88,15 +88,8 @@ bool menuRadioHardware(event_t event) case ITEM_RADIO_HARDWARE_STICK2: case ITEM_RADIO_HARDWARE_STICK3: case ITEM_RADIO_HARDWARE_STICK4: - { - int idx = k - ITEM_RADIO_HARDWARE_STICK1; - lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0); - if (ZEXIST(g_eeGeneral.anaNames[idx]) || attr) - editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, attr); - else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + editStickHardwareSettings(HW_SETTINGS_COLUMN, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr); break; - } case ITEM_RADIO_HARDWARE_LS: case ITEM_RADIO_HARDWARE_RS: @@ -109,7 +102,7 @@ bool menuRadioHardware(event_t event) if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx]) || (attr && menuHorizontalPosition == 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); uint8_t potType = (g_eeGeneral.slidersConfig & mask) >> idx; potType = editChoice(HW_SETTINGS_COLUMN+50, y, STR_SLIDERTYPES, potType, SLIDER_NONE, SLIDER_WITH_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.slidersConfig &= ~mask; @@ -132,7 +125,7 @@ bool menuRadioHardware(event_t event) if (ZEXIST(g_eeGeneral.anaNames[NUM_STICKS+idx]) || (attr && menuHorizontalPosition == 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift; potType = editChoice(HW_SETTINGS_COLUMN+50, y, STR_POTTYPES, potType, POT_NONE, POT_WITHOUT_DETENT, menuHorizontalPosition == 1 ? attr : 0, event); g_eeGeneral.potsConfig &= ~mask; @@ -157,7 +150,7 @@ bool menuRadioHardware(event_t event) if (ZEXIST(g_eeGeneral.switchNames[index]) || (attr && menuHorizontalPosition == 0)) editName(HW_SETTINGS_COLUMN, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0); else - lcdDrawTextAtIndex(HW_SETTINGS_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(HW_SETTINGS_COLUMN, y, 0); config = editChoice(HW_SETTINGS_COLUMN+50, y, STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event); if (attr && checkIncDec_Ret) { swconfig_t mask = (swconfig_t)0x03 << (2*index); diff --git a/radio/src/gui/480x272/radio_setup.cpp b/radio/src/gui/480x272/radio_setup.cpp index c723d3cfc..66363964e 100644 --- a/radio/src/gui/480x272/radio_setup.cpp +++ b/radio/src/gui/480x272/radio_setup.cpp @@ -401,7 +401,7 @@ bool menuRadioSetup(event_t event) lcdDrawNumber(RADIO_SETUP_2ND_COLUMN, y, SPLASH_TIMEOUT/100, attr|LEFT, 0, NULL, "s"); } else { - lcdDrawTextAtIndex(RADIO_SETUP_2ND_COLUMN, y, STR_MMMINV, 0, attr); // TODO define + lcdDrawMMM(RADIO_SETUP_2ND_COLUMN, y, attr); } if (attr) g_eeGeneral.splashMode = -checkIncDecGen(event, -g_eeGeneral.splashMode, -3, 4); break; diff --git a/radio/src/gui/480x272/view_logical_switches.cpp b/radio/src/gui/480x272/view_logical_switches.cpp index bca2a6ad4..74d1030be 100644 --- a/radio/src/gui/480x272/view_logical_switches.cpp +++ b/radio/src/gui/480x272/view_logical_switches.cpp @@ -73,7 +73,7 @@ void displayLogicalSwitchedDetails(coord_t x, coord_t y, uint8_t idx) if (cs->duration > 0) lcdDrawNumber(CSW_5TH_COLUMN, y, cs->duration, PREC1 | LEFT); else - lcdDrawTextAtIndex(CSW_5TH_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(CSW_5TH_COLUMN, y, 0); // CSW delay if (cstate == LS_FAMILY_EDGE) { @@ -83,7 +83,7 @@ void displayLogicalSwitchedDetails(coord_t x, coord_t y, uint8_t idx) lcdDrawNumber(CSW_6TH_COLUMN, y, cs->delay, PREC1 | LEFT); } else { - lcdDrawTextAtIndex(CSW_6TH_COLUMN, y, STR_MMMINV, 0, 0); + lcdDrawMMM(CSW_6TH_COLUMN, y, 0); } } diff --git a/radio/src/gui/common/widgets.cpp b/radio/src/gui/common/widgets.cpp index df3752f61..02bdbbb44 100644 --- a/radio/src/gui/common/widgets.cpp +++ b/radio/src/gui/common/widgets.cpp @@ -20,11 +20,16 @@ #include "opentx.h" +void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags) +{ + lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, flags); +} + #if defined(FLIGHT_MODES) void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att) { if (idx==0) { - lcdDrawTextAtIndex(x, y, STR_MMMINV, 0, att); // TODO macro + lcdDrawMMM(x, y, att); return; } // TODO this code was not included in Taranis! and used with abs(...) on Horus @@ -41,4 +46,3 @@ void drawFlightMode(coord_t x, coord_t y, int8_t idx, LcdFlags att) drawStringWithIndex(x, y, STR_FP, idx-1, att); } #endif - diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp new file mode 100644 index 000000000..8c7dd2215 --- /dev/null +++ b/radio/src/gui/gui_common.cpp @@ -0,0 +1,37 @@ +/* + * Copyright (C) OpenTX + * + * Based on code named + * th9x - http://code.google.com/p/th9x + * er9x - http://code.google.com/p/er9x + * gruvin9x - http://code.google.com/p/gruvin9x + * + * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include "opentx.h" + +#if defined(PCBTARANIS) || defined(PCBHORUS) || defined(PCBFLAMENCO) +uint8_t switchToMix(uint8_t source) +{ + div_t qr = div(source-1, 3); + return qr.quot+MIXSRC_FIRST_SWITCH; +} +#else +uint8_t switchToMix(uint8_t source) +{ + if (source <= 3) + return MIXSRC_3POS; + else + return MIXSRC_FIRST_SWITCH - 3 + source; +} +#endif diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 0eb2aec0f..05a2bd733 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -111,6 +111,7 @@ void drawFatalErrorScreen(const char * message); void runFatalErrorScreen(const char * message); #endif +void lcdDrawMMM(coord_t x, coord_t y, LcdFlags flags=0); // model_setup Defines that are used in all uis in the same way #define EXTERNAL_MODULE_CHANNELS_ROWS IF_EXTERNAL_MODULE_ON((IS_MODULE_DSM2(EXTERNAL_MODULE) || IS_MODULE_CROSSFIRE(EXTERNAL_MODULE) || (IS_MODULE_MULTIMODULE(EXTERNAL_MODULE) && g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol(true) != MM_RF_PROTO_DSM2)) ? (uint8_t)0 : (uint8_t)1) @@ -152,4 +153,6 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol); #define FAILSAFE_ROWS(x) (IS_MODULE_XJT(x) && HAS_RF_PROTOCOL_FAILSAFE(g_model.moduleData[x].rfProtocol) ? (g_model.moduleData[x].failsafeMode==FAILSAFE_CUSTOM ? (uint8_t)1 : (uint8_t)0) : MULTIMODULE_FAILSAFEROWS(x)) +void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags); + #endif // _GUI_COMMON_H_ diff --git a/radio/src/gui/gui_common_arm.cpp b/radio/src/gui/gui_common_arm.cpp index 6e98fd174..d9855251f 100644 --- a/radio/src/gui/gui_common_arm.cpp +++ b/radio/src/gui/gui_common_arm.cpp @@ -20,23 +20,6 @@ #include "opentx.h" -#if defined(PCBTARANIS) || defined(PCBHORUS) || defined(PCBFLAMENCO) -uint8_t switchToMix(uint8_t source) -{ - div_t qr = div(source-1, 3); - return qr.quot+MIXSRC_FIRST_SWITCH; -} -#else -uint8_t switchToMix(uint8_t source) -{ - if (source <= 3) - return MIXSRC_3POS; - else - return MIXSRC_FIRST_SWITCH - 3 + source; -} -#endif - -#if defined(CPUARM) int circularIncDec(int current, int inc, int min, int max, IsValueAvailable isValueAvailable) { do { @@ -636,7 +619,13 @@ const mm_protocol_definition *getMultiProtocolDefinition (uint8_t protocol) // Return the empty last protocol return pdef; } - #endif -#endif +void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags) +{ + lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0); + if (ZEXIST(g_eeGeneral.anaNames[idx]) || (flags && s_editMode > 0)) + editName(x, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, flags); + else + lcdDrawMMM(x, y, flags); +} \ No newline at end of file