diff --git a/radio/src/gui/Taranis/menu_model_custom_functions.cpp b/radio/src/gui/Taranis/menu_model_custom_functions.cpp index 3c59042d4..5fe854ebb 100644 --- a/radio/src/gui/Taranis/menu_model_custom_functions.cpp +++ b/radio/src/gui/Taranis/menu_model_custom_functions.cpp @@ -121,6 +121,35 @@ void onCustomFunctionsMenu(const char *result) } } +void onAdjustGvarSourceLongEnterPress(const char * result) +{ + CustomFunctionData * cfn = &g_model.customFn[m_posVert]; + + if (result == STR_CONSTANT) { + CFN_GVAR_MODE(cfn) = FUNC_ADJUST_GVAR_CONSTANT; + CFN_PARAM(cfn) = 0; + eeDirty(EE_MODEL); + } + else if (result == STR_MIXSOURCE) { + CFN_GVAR_MODE(cfn) = FUNC_ADJUST_GVAR_SOURCE; + CFN_PARAM(cfn) = 0; + eeDirty(EE_MODEL); + } + else if (result == STR_GLOBALVAR) { + CFN_GVAR_MODE(cfn) = FUNC_ADJUST_GVAR_GVAR; + CFN_PARAM(cfn) = 0; + eeDirty(EE_MODEL); + } + else if (result == STR_INCDEC) { + CFN_GVAR_MODE(cfn) = FUNC_ADJUST_GVAR_INC; + CFN_PARAM(cfn) = 0; + eeDirty(EE_MODEL); + } + else { + onSourceLongEnterPress(result); + } +} + void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFunctionsContext * functionsContext) { int sub = m_posVert; @@ -325,8 +354,7 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu case FUNC_ADJUST_GVAR_SOURCE: val_max = MIXSRC_LAST_CH; putsMixerSource(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, val_displayed, attr); - // TODO later, we have a conflict on [Enter Long] here ... - // INCDEC_SET_FLAG(eeFlags | INCDEC_SOURCE); + INCDEC_SET_FLAG(eeFlags | INCDEC_SOURCE); INCDEC_ENABLE_CHECK(isSourceAvailable); break; case FUNC_ADJUST_GVAR_GVAR: @@ -334,27 +362,39 @@ void menuCustomFunctions(uint8_t event, CustomFunctionData * functions, CustomFu putsStrIdx(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, STR_GV, val_displayed+1, attr); break; default: // FUNC_ADJUST_GVAR_INC +#if 0 // TODO 2.2.X + val_min = -100; val_max = +100; + if (val_displayed < 0) + lcd_putsAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, "-=", attr); + else + lcd_putsAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, "+=", attr); + lcd_outdezAtt(lcdNextPos, y, abs(val_displayed), attr|LEFT); +#endif val_max = 1; lcd_putsiAtt(MODEL_CUSTOM_FUNC_3RD_COLUMN, y, PSTR("\003-=1+=1"), val_displayed, attr); break; } - - if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { - killEvents(event); - s_editMode = !s_editMode; - active = true; - CFN_GVAR_MODE(cfn) += 1; - CFN_GVAR_MODE(cfn) &= 0x03; - val_displayed = 0; - } } #endif else if (attr) { REPEAT_LAST_CURSOR_MOVE(); } - if (active) { + if (active || event==EVT_KEY_LONG(KEY_ENTER)) { CFN_PARAM(cfn) = CHECK_INCDEC_PARAM(event, val_displayed, val_min, val_max); + if (attr && event==EVT_KEY_LONG(KEY_ENTER)) { + killEvents(event); + if (CFN_GVAR_MODE(cfn) != FUNC_ADJUST_GVAR_CONSTANT) + MENU_ADD_ITEM(STR_CONSTANT); + if (CFN_GVAR_MODE(cfn) != FUNC_ADJUST_GVAR_SOURCE) + MENU_ADD_ITEM(STR_MIXSOURCE); + if (CFN_GVAR_MODE(cfn) != FUNC_ADJUST_GVAR_GVAR) + MENU_ADD_ITEM(STR_GLOBALVAR); + if (CFN_GVAR_MODE(cfn) != FUNC_ADJUST_GVAR_INC) + MENU_ADD_ITEM(STR_INCDEC); + menuHandler = onAdjustGvarSourceLongEnterPress; + s_editMode = EDIT_MODIFY_FIELD; + } } break; } diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index efe86b04e..cf2f7cd9b 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -594,6 +594,10 @@ const pm_char STR_BLCOLOR[] PROGMEM = TR_BLCOLOR; const pm_char STR_SMOOTH[] PROGMEM = TR_SMOOTH; const pm_char STR_COPY_STICKS_TO_OFS[] PROGMEM = TR_COPY_STICKS_TO_OFS; const pm_char STR_COPY_TRIMS_TO_OFS[] PROGMEM = TR_COPY_TRIMS_TO_OFS; + const pm_char STR_INCDEC[] PROGMEM = TR_INCDEC; + const pm_char STR_GLOBALVAR[] PROGMEM = TR_GLOBALVAR; + const pm_char STR_MIXSOURCE[] PROGMEM = TR_MIXSOURCE; + const pm_char STR_CONSTANT[] PROGMEM = TR_CONSTANT; const pm_char STR_TOP_BAR[] PROGMEM = TR_TOP_BAR; const pm_char STR_ALTITUDE[] PROGMEM = TR_ALTITUDE; const pm_char STR_SCALE[] PROGMEM = TR_SCALE; diff --git a/radio/src/translations.h b/radio/src/translations.h index 15bbb1cfe..88ac0147b 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -813,6 +813,10 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_SMOOTH[]; extern const pm_char STR_COPY_STICKS_TO_OFS[]; extern const pm_char STR_COPY_TRIMS_TO_OFS[]; + extern const pm_char STR_INCDEC[]; + extern const pm_char STR_GLOBALVAR[]; + extern const pm_char STR_MIXSOURCE[]; + extern const pm_char STR_CONSTANT[]; extern const pm_char STR_TOP_BAR[]; extern const pm_char STR_ALTITUDE[]; extern const pm_char STR_SCALE[]; @@ -831,13 +835,13 @@ extern const pm_char STR_BLCOLOR[]; extern const pm_char STR_MENU_HELI[]; extern const pm_char STR_MENU_TRIMS[]; extern const pm_char STR_MENU_SWITCHES[]; -extern const pm_char STR_MENU_LOGICAL_SWITCHES[]; + extern const pm_char STR_MENU_LOGICAL_SWITCHES[]; extern const pm_char STR_MENU_TRAINER[]; extern const pm_char STR_MENU_CHANNELS[]; extern const pm_char STR_MENU_GVARS[]; extern const pm_char STR_MENU_TELEMETRY[]; -extern const pm_char STR_MENU_OTHER[]; -extern const pm_char STR_MENU_INVERT[]; + extern const pm_char STR_MENU_OTHER[]; + extern const pm_char STR_MENU_INVERT[]; #endif #if MENUS_LOCK == 1 diff --git a/radio/src/translations/cz.h.txt b/radio/src/translations/cz.h.txt index 431c250c5..1c4e3d507 100644 --- a/radio/src/translations/cz.h.txt +++ b/radio/src/translations/cz.h.txt @@ -949,6 +949,10 @@ #define TR_SMOOTH "Hladká" #define TR_COPY_STICKS_TO_OFS "Kopie pák do subtrimu" #define TR_COPY_TRIMS_TO_OFS "Kopíe trimů do subtrimu" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "Ukládat mAh") #define TR_PREFLIGHT "Předletová kontrola" #define TR_CHECKLIST INDENT "Zobrazit poznámky" diff --git a/radio/src/translations/de.h.txt b/radio/src/translations/de.h.txt index 828cbc488..4b0b58116 100644 --- a/radio/src/translations/de.h.txt +++ b/radio/src/translations/de.h.txt @@ -953,6 +953,10 @@ #define TR_SMOOTH "Runden" #define TR_COPY_STICKS_TO_OFS "Kopie Stick to Servo-Mitte" #define TR_COPY_TRIMS_TO_OFS "Kopie Trimm to Servo-Mitte" // "Trim to Subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Spr. mAh", INDENT "Speichern mAh") //9XR-Pro #define TR_PREFLIGHT TR("---Vorflug-Checkliste--", "----Vorflug-Checkliste----") #define TR_CHECKLIST TR(INDENT "Checkliste", INDENT "Checkliste anzeigen") //9XR-Pro diff --git a/radio/src/translations/en.h.txt b/radio/src/translations/en.h.txt index 8f60384d4..c3e0e8d28 100644 --- a/radio/src/translations/en.h.txt +++ b/radio/src/translations/en.h.txt @@ -948,6 +948,10 @@ #define TR_SMOOTH "Smooth" #define TR_COPY_STICKS_TO_OFS "Copy sticks to subtrim" #define TR_COPY_TRIMS_TO_OFS "Copy trims to subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "Persistent mAh") #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display Checklist") diff --git a/radio/src/translations/es.h.txt b/radio/src/translations/es.h.txt index f1014514f..e6e1231cf 100644 --- a/radio/src/translations/es.h.txt +++ b/radio/src/translations/es.h.txt @@ -903,6 +903,10 @@ #define TR_SMOOTH "Smooth" #define TR_COPY_STICKS_TO_OFS "Copy Sticks To Offset" #define TR_COPY_TRIMS_TO_OFS "Copy trims to subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH INDENT "Valor mAh" #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" diff --git a/radio/src/translations/fi.h.txt b/radio/src/translations/fi.h.txt index 8f29c3587..dac3cf23e 100644 --- a/radio/src/translations/fi.h.txt +++ b/radio/src/translations/fi.h.txt @@ -903,6 +903,10 @@ #define TR_SMOOTH "Smooth" #define TR_COPY_STICKS_TO_OFS "Copy Sticks To Offset" #define TR_COPY_TRIMS_TO_OFS "Copy trims to subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH INDENT "Store mAh" #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" diff --git a/radio/src/translations/fr.h.txt b/radio/src/translations/fr.h.txt index e02e3f397..25e2f84ea 100644 --- a/radio/src/translations/fr.h.txt +++ b/radio/src/translations/fr.h.txt @@ -940,6 +940,10 @@ #define TR_SMOOTH "Lissage" #define TR_COPY_STICKS_TO_OFS "Manche vers subtrim" #define TR_COPY_TRIMS_TO_OFS "Trim vers subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Enr. mAh", INDENT "Enregistrer mAh") #define TR_PREFLIGHT "Vérifications avant vol" #define TR_CHECKLIST TR(INDENT "Notes", INDENT "Afficher notes") diff --git a/radio/src/translations/it.h.txt b/radio/src/translations/it.h.txt index 4fac93abe..d8488ef68 100644 --- a/radio/src/translations/it.h.txt +++ b/radio/src/translations/it.h.txt @@ -951,6 +951,10 @@ #define TR_SMOOTH "Smussa" #define TR_COPY_STICKS_TO_OFS "Copia Stick su Offset" #define TR_COPY_TRIMS_TO_OFS "Copia Trim in Subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH INDENT "Memo mAh" #define TR_PREFLIGHT "Controlli Prevolo" #define TR_CHECKLIST INDENT "Mostra Checklist" diff --git a/radio/src/translations/nl.h.txt b/radio/src/translations/nl.h.txt index 22c9cceef..98e3dc7e7 100755 --- a/radio/src/translations/nl.h.txt +++ b/radio/src/translations/nl.h.txt @@ -958,6 +958,10 @@ #define TR_SMOOTH "Zacht" #define TR_COPY_STICKS_TO_OFS "Kopieer Sticks naar Subtrim" #define TR_COPY_TRIMS_TO_OFS "Kopieer Trim naar Subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Str mAh", INDENT "Vasthouden mAh") #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST TR(INDENT "Checklist", INDENT "Display Checklist") diff --git a/radio/src/translations/pl.h.txt b/radio/src/translations/pl.h.txt index 7dd395407..349189959 100644 --- a/radio/src/translations/pl.h.txt +++ b/radio/src/translations/pl.h.txt @@ -952,6 +952,10 @@ #define TR_SMOOTH "Gładka" #define TR_COPY_STICKS_TO_OFS "Skopiuj Drążki Do Offsetu" #define TR_COPY_TRIMS_TO_OFS "Skopiuj Trymery Do subtrymerów" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH TR(INDENT "Zap. mAh", INDENT "Zapisz mAh") #define TR_PREFLIGHT "Lista Ostrzeżeń" #define TR_CHECKLIST TR(INDENT "Czeklista",INDENT "Pokaż Listę Ostrzeżeń") diff --git a/radio/src/translations/pt.h.txt b/radio/src/translations/pt.h.txt index e4be20105..d335a946c 100644 --- a/radio/src/translations/pt.h.txt +++ b/radio/src/translations/pt.h.txt @@ -903,6 +903,10 @@ #define TR_SMOOTH "Smooth" #define TR_COPY_STICKS_TO_OFS "Copy Sticks To Offset" #define TR_COPY_TRIMS_TO_OFS "Copy trims to subtrim" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH INDENT "Store mAh" #define TR_PREFLIGHT "Preflight Checks" #define TR_CHECKLIST INDENT "Display Checklist" diff --git a/radio/src/translations/se.h.txt b/radio/src/translations/se.h.txt index 7853027f3..1426afd31 100644 --- a/radio/src/translations/se.h.txt +++ b/radio/src/translations/se.h.txt @@ -903,6 +903,10 @@ #define TR_SMOOTH "Mjuk" #define TR_COPY_STICKS_TO_OFS "Spara spakar som offset" #define TR_COPY_TRIMS_TO_OFS "Spara trimmar som offset" +#define TR_INCDEC "Inc/Decrement" +#define TR_GLOBALVAR "Global Var" +#define TR_MIXSOURCE "Mixer Source" +#define TR_CONSTANT "Constant" #define TR_PERSISTENT_MAH INDENT "Lagra mAh" #define TR_PREFLIGHT "Startkontroller" #define TR_CHECKLIST TR(INDENT "Checklista", INDENT "Visa Checklista")