Fixed editName() 212x64

This commit is contained in:
Raphael Coeffic
2021-06-05 20:29:09 +02:00
committed by Raphael Coeffic
parent 057401fcb1
commit b429855675
31 changed files with 169 additions and 70 deletions
+6 -2
View File
@@ -201,8 +201,12 @@ int16_t editGVarFieldValue(coord_t x, coord_t y, int16_t value, int16_t min, int
void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t event);
void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr=ZCHAR);
void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8_t size, event_t event, uint8_t active);
void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event,
uint8_t active, LcdFlags attr, uint8_t old_editMode);
void editSingleName(coord_t x, coord_t y, const char *label, char *name,
uint8_t size, event_t event, uint8_t active,
uint8_t old_editMode);
uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay);
#define EDIT_DELAY(x, y, event, attr, str, delay) editDelay(y, event, attr, str, delay)
+1 -1
View File
@@ -907,7 +907,7 @@ void drawTimerWithMode(coord_t x, coord_t y, uint8_t index, LcdFlags att)
uint8_t xLabel = (negative ? x - 56 : x - 49);
uint8_t len = zlen(timer.name, LEN_TIMER_NAME);
if (len > 0) {
lcdDrawSizedText(xLabel, y + FH, timer.name, len, RIGHT | ZCHAR);
lcdDrawSizedText(xLabel, y + FH, timer.name, len, RIGHT);
}
else {
drawTimerMode(xLabel, y + FH, timer.mode, RIGHT);
-1
View File
@@ -54,7 +54,6 @@ typedef int coord_t;
#define FIXEDWIDTH 0x10
/* no 0x80 here because of "GV"1 which is aligned LEFT */
/* no 0x10 here because of "MODEL"01 which uses LEADING0 */
#define ZCHAR 0x80u
/* lcdDrawNumber additional flags */
#define LEADING0 0x10
@@ -169,6 +169,6 @@ void menuModelCustomScripts(event_t event)
}
// Script name
lcdDrawSizedText(16*FW, y, sd.name, sizeof(sd.name), ZCHAR);
lcdDrawSizedText(16*FW, y, sd.name, sizeof(sd.name), 0);
}
}
+3 -3
View File
@@ -141,7 +141,7 @@ void menuModelFlightModeOne(event_t event)
if (attr && posHorz > 0 && s_currIdx==0) posHorz++;
drawStringWithIndex(INDENT_WIDTH, y, STR_GV, idx+1, posHorz==0 ? attr : 0);
lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, ZCHAR);
lcdDrawSizedText(4*FW, y,g_model.gvars[idx].name, LEN_GVAR_NAME, 0);
if (attr && editMode>0 && posHorz==0) {
s_currIdxSubMenu = sub - ITEM_MODEL_FLIGHT_MODE_GV1;
editMode = 0;
@@ -213,9 +213,9 @@ void menuModelFlightModesAll(event_t event)
FlightModeData * p = flightModeAddress(i);
drawFlightMode(0, y, i+1, att|(getFlightMode()==i ? BOLD : 0));
#if defined(PCBTARANIS)
lcdDrawSizedText(NAME_POS, y, p->name, sizeof(p->name), ZCHAR);
lcdDrawSizedText(NAME_POS, y, p->name, sizeof(p->name), 0);
#else
lcdDrawSizedText(4*FW+NAME_OFS, y, p->name, sizeof(p->name), ZCHAR);
lcdDrawSizedText(4*FW+NAME_OFS, y, p->name, sizeof(p->name), 0);
#endif
if (i == 0) {
for (uint8_t t=0; t<NUM_STICKS; t++) {
+1 -1
View File
@@ -267,7 +267,7 @@ void menuModelLimits(event_t event)
putsChn(0, y, k+1, (sub==k) ? INVERS : 0);
}
else {
lcdDrawSizedText(0, y, ld->name, sizeof(ld->name), ((sub==k) ? INVERS : 0) | ZCHAR | LEFT);
lcdDrawSizedText(0, y, ld->name, sizeof(ld->name), ((sub==k) ? INVERS : 0) | LEFT);
}
for (uint8_t j=0; j<ITEM_OUTPUTS_COUNT; j++) {
+2 -2
View File
@@ -66,7 +66,7 @@ void onModelSelectMenu(const char * result)
#endif
else if (result == STR_DELETE_MODEL) {
POPUP_CONFIRMATION(STR_DELETEMODEL, onDeleteModelConfirm);
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), 0);
}
#if defined(SDCARD)
else if (result != STR_EXIT) {
@@ -109,7 +109,7 @@ void menuModelSelect(event_t event)
killEvents(event);
if (s_copyMode && s_copyTgtOfs == 0 && g_eeGeneral.currModel != sub && eeModelExists(sub)) {
POPUP_CONFIRMATION(STR_DELETEMODEL, nullptr);
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), ZCHAR);
SET_WARNING_INFO(modelHeaders[sub].name, sizeof(g_model.header.name), 0);
}
else {
s_copyMode = 0;
+2 -2
View File
@@ -820,7 +820,7 @@ void menuModelSetup(event_t event)
}
// TODO add a new function
lcdDrawSizedText(x, y, STR_VSRCRAW+2+STR_VSRCRAW[0]*(NUM_STICKS+1+i), STR_VSRCRAW[0]-1, flags & ~ZCHAR);
lcdDrawSizedText(x, y, STR_VSRCRAW+2+STR_VSRCRAW[0]*(NUM_STICKS+1+i), STR_VSRCRAW[0]-1, flags);
x = lcdNextPos+3;
}
}
@@ -1261,7 +1261,7 @@ void menuModelSetup(event_t event)
if (isDefaultModelRegistrationID())
lcdDrawText(MODEL_SETUP_2ND_COLUMN, y, STR_PXX2_DEFAULT);
else
lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID, ZCHAR);
lcdDrawSizedText(MODEL_SETUP_2ND_COLUMN, y, g_model.modelRegistrationID, PXX2_LEN_REGISTRATION_ID);
break;
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PXX2_MODEL_NUM:
@@ -266,7 +266,7 @@ void menuSpecialFunctions(event_t event, CustomFunctionData * functions, CustomF
}
else {
TelemetrySensor * sensor = & g_model.telemetrySensors[param-FUNC_RESET_PARAM_FIRST_TELEM];
lcdDrawSizedText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr|ZCHAR);
lcdDrawSizedText(MODEL_SPECIAL_FUNC_3RD_COLUMN, y, sensor->label, TELEM_LABEL_LEN, attr);
}
if (active) INCDEC_ENABLE_CHECK(functionsContext == &globalFunctionsContext ? isSourceAvailableInGlobalResetSpecialFunction : isSourceAvailableInResetSpecialFunction);
}
+1 -1
View File
@@ -143,7 +143,7 @@ void menuModelTelemetry(event_t event)
int index = k - ITEM_TELEMETRY_SENSOR_FIRST;
lcdDrawNumber(INDENT_WIDTH, y, index+1, LEFT|attr);
lcdDrawChar(lcdLastRightPos, y, ':', attr);
lcdDrawSizedText(3*FW, y, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, ZCHAR);
lcdDrawSizedText(3*FW, y, g_model.telemetrySensors[index].label, TELEM_LABEL_LEN, 0);
if (telemetryItems[index].isFresh()) {
lcdDrawChar(TELEM_COL3, y, '*');
}
+1 -1
View File
@@ -88,7 +88,7 @@ void menuChannelsViewCommon(event_t event)
if (lenLabel > 0) {
if (lenLabel > 4)
reusableBuffer.viewChannels.longNames = true;
lcdDrawSizedText(CHANNEL_NAME_OFFSET, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), ZCHAR | SMLSIZE);
lcdDrawSizedText(CHANNEL_NAME_OFFSET, y, g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name), SMLSIZE);
}
else {
putsChn(CHANNEL_NAME_OFFSET, y, ch + 1, SMLSIZE);
+2 -2
View File
@@ -739,7 +739,7 @@ void menuMainView(event_t event)
if (view_base != VIEW_CHAN_MONITOR) {
// Flight Mode Name
uint8_t mode = mixerCurrentFlightMode;
lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), ZCHAR | PHASE_FLAGS);
lcdDrawSizedText(PHASE_X, PHASE_Y, g_model.flightModeData[mode].name, sizeof(g_model.flightModeData[mode].name), PHASE_FLAGS);
// Model Name
drawModelName(MODELNAME_X, MODELNAME_Y, g_model.header.name, g_eeGeneral.currModel, BIGSIZE);
@@ -767,7 +767,7 @@ void menuMainView(event_t event)
gvarDisplayTimer--;
warningText = STR_GLOBAL_VAR;
drawMessageBox(warningText);
lcdDrawSizedText(16, 5 * FH, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, ZCHAR);
lcdDrawSizedText(16, 5 * FH, g_model.gvars[gvarLastChanged].name, LEN_GVAR_NAME, 0);
lcdDrawText(16 + 6 * FW, 5 * FH, "[", BOLD);
drawGVarValue(lcdLastRightPos, 5 * FH, gvarLastChanged, GVAR_VALUE(gvarLastChanged, getGVarFlightMode(mixerCurrentFlightMode, gvarLastChanged)),
LEFT | BOLD);
+7 -2
View File
@@ -230,8 +230,13 @@ void gvarWeightItem(coord_t x, coord_t y, MixData * md, LcdFlags attr, event_t e
void editCurveRef(coord_t x, coord_t y, CurveRef & curve, event_t event, LcdFlags flags);
extern uint8_t editNameCursorPos;
void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr=ZCHAR);
void editSingleName(coord_t x, coord_t y, const char * label, char * name, uint8_t size, event_t event, uint8_t active);
void editName(coord_t x, coord_t y, char *name, uint8_t size, event_t event,
uint8_t active, LcdFlags attr, uint8_t old_editMode);
void editSingleName(coord_t x, coord_t y, const char *label, char *name,
uint8_t size, event_t event, uint8_t active,
uint8_t old_editMode);
uint8_t editDelay(coord_t y, event_t event, uint8_t attr, const char * str, uint8_t delay);
#define EDIT_DELAY(y, event, attr, str, delay) editDelay(y, event, attr, str, delay)
+2 -2
View File
@@ -60,11 +60,11 @@ uint8_t s_copySrcCh;
uint8_t editNameCursorPos = 0;
void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_t size, event_t event, uint8_t active)
void editSingleName(coord_t x, coord_t y, const char * label, char *name, uint8_t size, event_t event, uint8_t active, uint8_t old_editMode)
{
lcdDrawTextAlignedLeft(y, label);
TRACE("EDIT SINGLE NAME %s", name);
editName(x, y, name, size, event, active);
editName(x, y, name, size, event, active, 0, old_editMode);
}
uint8_t s_currIdx;
+5 -2
View File
@@ -100,12 +100,15 @@ void menuModelCurveOne(event_t event)
lcdDrawText(11*FW+FW/2, 0, TR_PT "\002X\006Y");
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SIMPLE_SUBMENU(STR_MENUCURVES, 4 + 5+crv.points + (crv.type==CURVE_TYPE_CUSTOM ? 5+crv.points-2 : 0));
// Curve name
lcdDrawTextAlignedLeft(FH + 1, STR_NAME);
editName(INDENT_WIDTH, 2 * FH + 1, crv.name, sizeof(crv.name), event, menuVerticalPosition == 0);
editName(INDENT_WIDTH, 2 * FH + 1, crv.name, sizeof(crv.name), event,
menuVerticalPosition == 0, 0, old_editMode);
// Curve type
lcdDrawTextAlignedLeft(3 * FH + 1, NO_INDENT(STR_TYPE));
LcdFlags attr = (menuVerticalPosition == 1 ? (s_editMode > 0 ? INVERS | BLINK : INVERS) : 0);
@@ -54,6 +54,8 @@ void menuModelCustomScriptOne(event_t event)
drawStringWithIndex(PSIZE(TR_MENUCUSTOMSCRIPTS)*FW+FW, 0, "LUA", s_currIdx+1, 0);
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount, { 0, 0, LABEL(inputs), 0/*repeated*/ });
int8_t sub = menuVerticalPosition;
@@ -81,12 +83,12 @@ void menuModelCustomScriptOne(event_t event)
}
else if (i == ITEM_MODEL_CUSTOMSCRIPT_NAME) {
lcdDrawTextAlignedLeft(y, TR_NAME);
editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event, attr);
}
else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) {
editName(SCRIPT_ONE_2ND_COLUMN_POS, y, sd.name, sizeof(sd.name), event,
(attr != 0), attr, old_editMode);
} else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL) {
lcdDrawTextAlignedLeft(y, STR_INPUTS);
}
else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount) {
} else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL +
scriptInputsOutputs[s_currIdx].inputsCount) {
int inputIdx = i-ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL-1;
lcdDrawSizedText(INDENT_WIDTH, y, scriptInputsOutputs[s_currIdx].inputs[inputIdx].name, 10, 0);
if (scriptInputsOutputs[s_currIdx].inputs[inputIdx].type == INPUT_TYPE_VALUE) {
+3 -1
View File
@@ -50,6 +50,8 @@ bool isTrimModeAvailable(int mode)
void menuModelFlightModesAll(event_t event)
{
uint8_t old_editMode = s_editMode;
MENU(STR_MENUFLIGHTMODES, menuTabModel, MENU_MODEL_FLIGHT_MODES, MAX_FLIGHT_MODES+1, { NAVIGATION_LINE_BY_LINE|(ITEM_FLIGHT_MODES_LAST-1), NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, NAVIGATION_LINE_BY_LINE|ITEM_FLIGHT_MODES_LAST, 0 });
int8_t sub = menuVerticalPosition;
@@ -101,7 +103,7 @@ void menuModelFlightModesAll(event_t event)
uint8_t active = (attr && s_editMode>0) ;
switch (j) {
case ITEM_FLIGHT_MODES_NAME:
editName(4*FW-1, y, p->name, sizeof(p->name), event, attr);
editName(4*FW-1, y, p->name, sizeof(p->name), event, active, attr, old_editMode);
break;
case ITEM_FLIGHT_MODES_SWITCH:
+3 -1
View File
@@ -70,6 +70,8 @@ void menuModelGVarOne(event_t event)
drawGVarValue(32*FW, 0, s_currIdx, getGVarValue(s_currIdx, getFlightMode()));
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SIMPLE_SUBMENU(STR_GVARS, GVAR_FIELD_LAST);
for (int i=0; i<NUM_BODY_LINES; i++) {
@@ -79,7 +81,7 @@ void menuModelGVarOne(event_t event)
switch (k) {
case GVAR_FIELD_NAME:
editSingleName(GVAR_2ND_COLUMN, y, STR_NAME, gvar->name, LEN_GVAR_NAME, event, attr);
editSingleName(GVAR_2ND_COLUMN, y, STR_NAME, gvar->name, LEN_GVAR_NAME, event, attr, old_editMode);
break;
case GVAR_FIELD_UNIT:
+7 -2
View File
@@ -58,6 +58,8 @@ void menuModelExpoOne(event_t event)
drawSource(PSIZE(TR_MENUINPUTS)*FW+FW, 0, MIXSRC_FIRST_INPUT+ed->chn, 0);
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SUBMENU(STR_MENUINPUTS, EXPO_FIELD_MAX, {0, 0, 0, ed->srcRaw >= MIXSRC_FIRST_TELEM ? (uint8_t)0 : (uint8_t)HIDDEN_ROW, 0, 0, CURVE_ROWS, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/});
SET_SCROLLBAR_X(EXPO_ONE_2ND_COLUMN+10*FW);
@@ -77,11 +79,14 @@ void menuModelExpoOne(event_t event)
switch (i) {
case EXPO_FIELD_INPUT_NAME:
editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_INPUTNAME, g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr);
editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_INPUTNAME,
g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr,
old_editMode);
break;
case EXPO_FIELD_LINE_NAME:
editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event, attr);
editSingleName(EXPO_ONE_2ND_COLUMN, y, STR_EXPONAME, ed->name,
LEN_EXPOMIX_NAME, event, attr, old_editMode);
break;
case EXPO_FIELD_SOURCE:
+4 -1
View File
@@ -94,6 +94,8 @@ void menuModelMixOne(event_t event)
putsChn(PSIZE(TR_MIXES)*FW+FW, 0, md2->destCh+1,0);
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SUBMENU(STR_MIXES, MIX_FIELD_COUNT, {0, 0, 0, 0, 0, 1, CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0, 0 /*, ...*/});
int8_t sub = menuVerticalPosition;
@@ -105,7 +107,8 @@ void menuModelMixOne(event_t event)
LcdFlags attr = (sub==i ? INVERS | (editMode>0 ? BLINK : 0) : 0);
switch (i) {
case MIX_FIELD_NAME:
editSingleName(MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name, sizeof(md2->name), event, attr);
editSingleName(MIXES_2ND_COLUMN, y, STR_MIXNAME, md2->name,
sizeof(md2->name), event, attr, old_editMode);
break;
case MIX_FIELD_SOURCE:
+4 -1
View File
@@ -104,6 +104,8 @@ void menuModelLimits(event_t event)
#endif
}
uint8_t old_editMode = s_editMode;
MENU(STR_MENULIMITS, menuTabModel, MENU_MODEL_OUTPUTS, MAX_OUTPUT_CHANNELS+1, { NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, NAVIGATION_LINE_BY_LINE|ITEM_LIMITS_MAXROW, 0 });
if (sub<MAX_OUTPUT_CHANNELS && menuHorizontalPosition>=0) {
@@ -155,7 +157,8 @@ void menuModelLimits(event_t event)
switch(j)
{
case ITEM_LIMITS_CH_NAME:
editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr);
editName(LIMITS_NAME_POS, y, ld->name, sizeof(ld->name), event, attr,
0, old_editMode);
break;
case ITEM_LIMITS_OFFSET:
+14 -5
View File
@@ -427,8 +427,11 @@ void menuModelSetup(event_t event)
switch (k) {
case ITEM_MODEL_SETUP_NAME:
editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME, g_model.header.name, sizeof(g_model.header.name), event, attr);
memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name, sizeof(g_model.header.name));
editSingleName(MODEL_SETUP_2ND_COLUMN, y, STR_MODELNAME,
g_model.header.name, sizeof(g_model.header.name), event,
attr, old_editMode);
memcpy(modelHeaders[g_eeGeneral.currModel].name, g_model.header.name,
sizeof(g_model.header.name));
break;
case ITEM_MODEL_SETUP_BITMAP:
@@ -453,7 +456,9 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_TIMER1_NAME:
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[0].name, LEN_TIMER_NAME, event, attr);
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME,
g_model.timers[0].name, LEN_TIMER_NAME, event, attr,
old_editMode);
break;
case ITEM_MODEL_SETUP_TIMER1_MINUTE_BEEP:
@@ -474,7 +479,9 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_TIMER2_NAME:
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[1].name, LEN_TIMER_NAME, event, attr);
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME,
g_model.timers[1].name, LEN_TIMER_NAME, event, attr,
old_editMode);
break;
case ITEM_MODEL_SETUP_TIMER2_MINUTE_BEEP:
@@ -496,7 +503,9 @@ void menuModelSetup(event_t event)
break;
case ITEM_MODEL_SETUP_TIMER3_NAME:
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, g_model.timers[2].name, LEN_TIMER_NAME, event, attr);
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME,
g_model.timers[2].name, LEN_TIMER_NAME, event, attr,
old_editMode);
break;
case ITEM_MODEL_SETUP_TIMER3_MINUTE_BEEP:
@@ -62,6 +62,8 @@ void menuModelSensor(event_t event)
drawSensorCustomValue(25*FW, 0, s_currIdx, getValue(MIXSRC_FIRST_TELEM+3*s_currIdx));
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID, FILL_WHITE|GREY_DEFAULT);
uint8_t old_editMode = s_editMode;
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {
0, //Name
0, // Type
@@ -96,7 +98,8 @@ void menuModelSensor(event_t event)
switch (k) {
case SENSOR_FIELD_NAME:
editSingleName(SENSOR_2ND_COLUMN, y, STR_NAME, sensor->label, TELEM_LABEL_LEN, event, attr);
editSingleName(SENSOR_2ND_COLUMN, y, STR_NAME, sensor->label,
TELEM_LABEL_LEN, event, attr, old_editMode);
break;
case SENSOR_FIELD_TYPE:
sensor->type = editChoice(SENSOR_2ND_COLUMN, y, NO_INDENT(STR_TYPE), STR_VSENSORTYPES, sensor->type, 0, 1, attr, event);
+48 -11
View File
@@ -154,7 +154,30 @@ char getPreviousChar(char c, uint8_t position)
return c - 1;
}
void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, uint8_t active, LcdFlags attr)
static bool isNameCharset(int v)
{
char c = (char)v;
if (c == ' ')
return true;
if (c == '-')
return true;
if (c >= '0' && c <= '9')
return true;
if (c >= 'A' && c <= 'Z')
return true;
if (c >= 'a' && c <= 'z')
return true;
return false;
}
void editName(coord_t x, coord_t y, char* name, uint8_t size, event_t event,
uint8_t active, LcdFlags attr, uint8_t old_editMode)
{
uint8_t mode = 0;
if (active) {
@@ -171,16 +194,10 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui
uint8_t cur = editNameCursorPos;
if (s_editMode > 0) {
int8_t c = name[cur];
int8_t v = c;
int8_t v = c ? c : ' ';
if (IS_NEXT_EVENT(event) || IS_PREVIOUS_EVENT(event)) {
if (attr == ZCHAR) {
v = checkIncDec(event, abs(v), 0, ZCHAR_MAX, 0);
if (c <= 0) v = -v;
}
else {
v = checkIncDec(event, abs(v), ' ', 'z', 0);
}
v = checkIncDec(event, abs(v), ' ', 'z', 0, isNameCharset);
}
switch (event) {
@@ -250,6 +267,25 @@ void editName(coord_t x, coord_t y, char * name, uint8_t size, event_t event, ui
}
editNameCursorPos = cur;
lcdNextPos = backupNextPos;
if ((old_editMode > 0) && (s_editMode == 0)) {
bool modified = false;
for (uint8_t i = size - 1; i > 0; --i) {
// wipe empty spaces
if (name[i] == ' ') {
name[i] = '\0';
modified = true;
} else if (name[i] != '\0') {
// and stop at the first non empty character
break;
}
}
if (modified) {
storageDirty(isModelMenuDisplayed() ? EE_MODEL : EE_GENERAL);
}
}
}
}
@@ -268,11 +304,12 @@ void drawGVarName(coord_t x, coord_t y, int8_t idx, LcdFlags flags)
lcdDrawText(x, y, s, flags);
}
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags)
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags, uint8_t old_editMode)
{
lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, idx+1, 0);
if (g_eeGeneral.anaNames[idx][0] || (flags && s_editMode > 0))
editName(x, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, flags);
editName(x, y, g_eeGeneral.anaNames[idx], LEN_ANA_NAME, event, (flags != 0),
flags, old_editMode);
else
lcdDrawMMM(x, y, flags);
}
+3 -1
View File
@@ -41,6 +41,8 @@ void drawCurve(coord_t offset)
void menuModelCurvesAll(event_t event)
{
uint8_t old_editMode = s_editMode;
#if defined(GVARS_IN_CURVES_SCREEN)
SIMPLE_MENU(STR_MENUCURVES, menuTabModel, MENU_MODEL_CURVES, HEADER_LINE+MAX_CURVES+MAX_GVARS);
#else
@@ -83,7 +85,7 @@ void menuModelCurvesAll(event_t event)
{
drawStringWithIndex(0, y, STR_CV, k+1, attr);
CurveHeader & crv = g_model.curves[k];
editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0);
editName(4*FW, y, crv.name, sizeof(crv.name), 0, 0, 0, old_editMode);
#if LCD_W >= 212
lcdDrawNumber(11*FW, y, 5+crv.points, LEFT);
lcdDrawText(lcdLastRightPos, y, STR_PTS, 0);
+2 -2
View File
@@ -185,7 +185,7 @@ void displayExpoLine(coord_t y, ExpoData * ed)
displayFlightModes(EXPO_LINE_FM_POS, y, ed->flightModes);
if (ed->name[0]) {
lcdDrawSizedText(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), ZCHAR);
lcdDrawSizedText(EXPO_LINE_NAME_POS, y, ed->name, sizeof(ed->name), 0);
}
#if LCD_DEPTH > 1
@@ -217,7 +217,7 @@ void displayExpoLine(coord_t y, ExpoData * ed)
drawSource(EXPO_LINE_SRC_POS, y, ed->srcRaw, 0);
if (ed->name[0])
lcdDrawSizedText(EXPO_LINE_INFOS_POS, y, ed->name, LEN_EXPOMIX_NAME, ZCHAR);
lcdDrawSizedText(EXPO_LINE_INFOS_POS, y, ed->name, LEN_EXPOMIX_NAME, 0);
else if (!ed->flightModes || ((ed->curve.value || ed->swtch) && ((get_tmr10ms() / 200) & 1)))
displayExpoInfos(y, ed);
else
+5 -5
View File
@@ -166,7 +166,7 @@ void onMixesMenu(const char * result)
void displayHeaderChannelName(uint8_t ch)
{
if (g_model.limitData[ch].name[0] != '\0') {
lcdDrawSizedText(MIX_HDR_GAUGE_POS_X - FWNUM * 5 - 1, 1, g_model.limitData[ch].name, ZLEN(g_model.limitData[ch].name), ZCHAR|SMLSIZE|RIGHT);
lcdDrawSizedText(MIX_HDR_GAUGE_POS_X - FWNUM * 5 - 1, 1, g_model.limitData[ch].name, ZLEN(g_model.limitData[ch].name), SMLSIZE|RIGHT);
}
}
@@ -182,7 +182,7 @@ void displayMixInfos(coord_t y, MixData * md)
void displayMixLine(coord_t y, MixData * md)
{
if (md->name[0])
lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR);
lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), 0);
if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1)))
displayMixInfos(y, md);
else
@@ -208,7 +208,7 @@ void displayHeaderChannelName(uint8_t ch)
{
uint8_t len = zlen(g_model.limitData[ch].name, sizeof(g_model.limitData[ch].name));
if (len) {
lcdDrawSizedText(80, 1, g_model.limitData[ch].name, len, ZCHAR|SMLSIZE);
lcdDrawSizedText(80, 1, g_model.limitData[ch].name, len, SMLSIZE);
}
}
@@ -231,7 +231,7 @@ void displayMixInfos(coord_t y, MixData * md)
void displayMixLine(coord_t y, MixData * md, bool active)
{
if(active && md->name[0]) {
lcdDrawSizedText(FW*sizeof(TR_MIXES)+FW/2, 0, md->name, sizeof(md->name), ZCHAR);
lcdDrawSizedText(FW*sizeof(TR_MIXES)+FW/2, 0, md->name, sizeof(md->name), 0);
if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1)))
displayMixInfos(y, md);
else
@@ -239,7 +239,7 @@ void displayMixLine(coord_t y, MixData * md, bool active)
}
else {
if (md->name[0])
lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), ZCHAR);
lcdDrawSizedText(MIX_LINE_NAME_POS, y, md->name, sizeof(md->name), 0);
else if (!md->flightModes || ((md->curve.value || md->swtch) && ((get_tmr10ms() / 200) & 1)))
displayMixInfos(y, md);
else
+1 -1
View File
@@ -25,7 +25,7 @@ const char * warningInfoText;
uint8_t warningInfoLength;
uint8_t warningType;
uint8_t warningResult = 0;
uint8_t warningInfoFlags = ZCHAR;
uint8_t warningInfoFlags = 0;
uint8_t popupMenuOffsetType = MENU_OFFSET_INTERNAL;
void (* popupFunc)(event_t event) = nullptr;
+17 -5
View File
@@ -323,6 +323,8 @@ void onFactoryResetConfirm(const char * result)
void menuRadioHardware(event_t event)
{
uint8_t old_editMode = s_editMode;
MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, HEADER_LINE + ITEM_RADIO_HARDWARE_MAX, {
HEADER_LINE_COLUMNS
0 /* calibration button */,
@@ -391,7 +393,9 @@ void menuRadioHardware(event_t event)
case ITEM_RADIO_HARDWARE_STICK2:
case ITEM_RADIO_HARDWARE_STICK3:
case ITEM_RADIO_HARDWARE_STICK4:
editStickHardwareSettings(HW_SETTINGS_COLUMN1, y, k - ITEM_RADIO_HARDWARE_STICK1, event, attr);
editStickHardwareSettings(HW_SETTINGS_COLUMN1, y,
k - ITEM_RADIO_HARDWARE_STICK1, event,
attr, old_editMode);
break;
#if (NUM_POTS + NUM_SLIDERS) > 0
@@ -415,7 +419,9 @@ void menuRadioHardware(event_t event)
uint8_t mask = (0x03 << shift);
lcdDrawTextAtIndex(INDENT_WIDTH, y, STR_VSRCRAW, NUM_STICKS+idx+1, menuHorizontalPosition < 0 ? attr : 0);
if (g_eeGeneral.anaNames[NUM_STICKS+idx][0] || (attr && s_editMode > 0 && menuHorizontalPosition == 0))
editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0);
editName(HW_SETTINGS_COLUMN1, y,
g_eeGeneral.anaNames[NUM_STICKS + idx], LEN_ANA_NAME, event,
attr && menuHorizontalPosition == 0, 0, old_editMode);
else
lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition==0 ? attr : 0);
uint8_t potType = (g_eeGeneral.potsConfig & mask) >> shift;
@@ -436,7 +442,10 @@ void menuRadioHardware(event_t event)
int idx = k - ITEM_RADIO_HARDWARE_SLIDER1;
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 && s_editMode > 0))
editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.anaNames[NUM_STICKS+NUM_POTS+idx], LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0);
editName(HW_SETTINGS_COLUMN1, y,
g_eeGeneral.anaNames[NUM_STICKS + NUM_POTS + idx],
LEN_ANA_NAME, event, attr && menuHorizontalPosition == 0,
0, old_editMode);
else
lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition == 0 ? attr : 0);
uint8_t mask = (0x01 << idx);
@@ -490,7 +499,9 @@ void menuRadioHardware(event_t event)
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 && s_editMode > 0 && menuHorizontalPosition == 0))
editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.switchNames[index], LEN_SWITCH_NAME, event, menuHorizontalPosition == 0 ? attr : 0);
editName(HW_SETTINGS_COLUMN1, y, g_eeGeneral.switchNames[index],
LEN_SWITCH_NAME, event,
menuHorizontalPosition == 0 ? attr : 0, 0, old_editMode);
else
lcdDrawMMM(HW_SETTINGS_COLUMN1, y, menuHorizontalPosition == 0 ? attr : 0);
config = editChoice(HW_SETTINGS_COLUMN2, y, "", STR_SWTYPES, config, SWITCH_NONE, SWITCH_TYPE_MAX(index), menuHorizontalPosition == 1 ? attr : 0, event);
@@ -589,7 +600,8 @@ void menuRadioHardware(event_t event)
case ITEM_RADIO_HARDWARE_BLUETOOTH_NAME:
lcdDrawText(INDENT_WIDTH, y, STR_NAME);
editName(HW_SETTINGS_COLUMN2, y, g_eeGeneral.bluetoothName, LEN_BLUETOOTH_NAME, event, attr);
editName(HW_SETTINGS_COLUMN2, y, g_eeGeneral.bluetoothName,
LEN_BLUETOOTH_NAME, event, (attr != 0), attr, old_editMode);
break;
#endif
@@ -313,6 +313,7 @@ void menuRadioSdManager(event_t _event)
#endif
event_t event = (EVT_KEY_MASK(_event) == KEY_ENTER ? 0 : _event);
uint8_t old_editMode = s_editMode;
SIMPLE_MENU(SD_IS_HC() ? STR_SDHC_CARD : STR_SD_CARD, menuTabGeneral, MENU_RADIO_SD_MANAGER, HEADER_LINE + reusableBuffer.sdManager.count);
switch (_event) {
@@ -579,8 +580,13 @@ void menuRadioSdManager(event_t _event)
if (s_editMode == EDIT_MODIFY_STRING && attr) {
uint8_t extlen, efflen;
const char * ext = getFileExtension(reusableBuffer.sdManager.originalName, 0, 0, nullptr, &extlen);
editName(lcdNextPos, y, reusableBuffer.sdManager.lines[i], SD_SCREEN_FILE_LENGTH - extlen, _event, attr, 0);
efflen = effectiveLen(reusableBuffer.sdManager.lines[i], SD_SCREEN_FILE_LENGTH - extlen);
editName(lcdNextPos, y, reusableBuffer.sdManager.lines[i],
SD_SCREEN_FILE_LENGTH - extlen, _event, attr, 0, old_editMode);
efflen = effectiveLen(reusableBuffer.sdManager.lines[i],
SD_SCREEN_FILE_LENGTH - extlen);
if (s_editMode == 0) {
if (ext) {
strAppend(&reusableBuffer.sdManager.lines[i][efflen], ext);
+4 -2
View File
@@ -352,8 +352,10 @@ inline uint8_t MODULE_OPTION_ROW(uint8_t moduleIdx) {
return MULTIMODULE_OPTIONS_ROW(moduleIdx);
}
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
const char * getMultiOptionTitle(uint8_t moduleIdx);
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event,
LcdFlags flags, uint8_t old_editMode);
const char *getMultiOptionTitle(uint8_t moduleIdx);
const char * writeScreenshot();