Fixed editName() 128x64
This commit is contained in:
committed by
Raphael Coeffic
parent
b429855675
commit
27252a41ac
@@ -35,13 +35,14 @@ uint8_t s_maxLines = 8;
|
||||
uint8_t s_copySrcIdx;
|
||||
uint8_t s_copySrcCh;
|
||||
|
||||
uint8_t editNameCursorPos = 0;
|
||||
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);
|
||||
editName(x, y, name, size, event, active);
|
||||
editName(x, y, name, size, event, active, 0, old_editMode);
|
||||
}
|
||||
|
||||
uint8_t s_currIdx;
|
||||
|
||||
@@ -93,13 +93,16 @@ void menuModelCurveOne(event_t event)
|
||||
int8_t * points = curveAddress(s_currIdxSubMenu);
|
||||
|
||||
drawStringWithIndex(PSIZE(TR_MENUCURVES)*FW+FW, 0, STR_CV, s_currIdxSubMenu+1);
|
||||
|
||||
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);
|
||||
|
||||
@@ -61,6 +61,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, 0);
|
||||
|
||||
uint8_t old_editMode = s_editMode;
|
||||
|
||||
SUBMENU(STR_MENUCUSTOMSCRIPTS, 3+scriptInputsOutputs[s_currIdx].inputsCount+scriptInputsOutputs[s_currIdx].outputsCount + 1 /*outputs label*/, { 0, 0, LABEL(inputs), 0/*repeated*/ });
|
||||
|
||||
int8_t sub = menuVerticalPosition;
|
||||
@@ -88,12 +90,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) {
|
||||
@@ -111,14 +113,15 @@ void menuModelCustomScriptOne(event_t event)
|
||||
CHECK_INCDEC_MODELSOURCE(event, g_model.scriptsData[s_currIdx].inputs[inputIdx].source, 0, MIXSRC_LAST_TELEM);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount+1) {
|
||||
} else if (i == ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL +
|
||||
scriptInputsOutputs[s_currIdx].inputsCount + 1) {
|
||||
lcdDrawTextAlignedLeft(y, STR_OUTPUTS);
|
||||
if (attr) {
|
||||
REPEAT_LAST_CURSOR_MOVE();
|
||||
}
|
||||
}
|
||||
else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount+scriptInputsOutputs[s_currIdx].outputsCount+1) {
|
||||
} else if (i <= ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL +
|
||||
scriptInputsOutputs[s_currIdx].inputsCount +
|
||||
scriptInputsOutputs[s_currIdx].outputsCount + 1) {
|
||||
int outputIdx = i-(ITEM_MODEL_CUSTOMSCRIPT_PARAMS_LABEL+scriptInputsOutputs[s_currIdx].inputsCount)-2;
|
||||
lcdDrawSizedText(INDENT_WIDTH, y, scriptInputsOutputs[s_currIdx].outputs[outputIdx].name, 10, 0);
|
||||
lcdDrawNumber(SCRIPT_ONE_2ND_COLUMN_POS, y, calcRESXto1000(scriptInputsOutputs[s_currIdx].outputs[outputIdx].value), attr|PREC1|LEFT);
|
||||
|
||||
@@ -63,6 +63,8 @@ void menuModelFlightModeOne(event_t event)
|
||||
FlightModeData * fm = flightModeAddress(s_currIdx);
|
||||
drawFlightMode(13*FW, 0, s_currIdx+1, (getFlightMode()==s_currIdx ? BOLD : 0));
|
||||
|
||||
uint8_t old_editMode = s_editMode;
|
||||
|
||||
#if defined(GVARS) && !defined(GVARS_IN_CURVES_SCREEN)
|
||||
#define VERTICAL_SHIFT (ITEM_MODEL_FLIGHT_MODE_FADE_IN-ITEM_MODEL_FLIGHT_MODE_TRIMS)
|
||||
static const uint8_t mstate_tab_fm1[] = {0, 3, 0, 0, (uint8_t)-1, 1, 1, 1, 1, 1, 1};
|
||||
@@ -98,7 +100,8 @@ void menuModelFlightModeOne(event_t event)
|
||||
#endif
|
||||
switch (i) {
|
||||
case ITEM_MODEL_FLIGHT_MODE_NAME:
|
||||
editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, fm->name, sizeof(fm->name), event, attr);
|
||||
editSingleName(MIXES_2ND_COLUMN, y, STR_PHASENAME, fm->name,
|
||||
sizeof(fm->name), event, attr, old_editMode);
|
||||
break;
|
||||
|
||||
case ITEM_MODEL_FLIGHT_MODE_SWITCH:
|
||||
|
||||
@@ -70,6 +70,8 @@ void menuModelGVarOne(event_t event)
|
||||
drawGVarValue(32*FW, 0, s_currIdxSubMenu, getGVarValue(s_currIdxSubMenu, getFlightMode()));
|
||||
lcdDrawFilledRect(0, 0, LCD_W, FH, SOLID);
|
||||
|
||||
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,8 @@ 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:
|
||||
|
||||
@@ -67,7 +67,9 @@ void menuModelExpoOne(event_t event)
|
||||
#endif
|
||||
ExpoData * ed = expoAddress(s_currIdx);
|
||||
drawSource(PSIZE(TR_MENUINPUTS)*FW+FW, 0, MIXSRC_FIRST_INPUT+ed->chn, 0);
|
||||
|
||||
|
||||
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, LABEL(Curve), 1, CASE_FLIGHT_MODES(LABEL(Flight Mode)) CASE_FLIGHT_MODES((MAX_FLIGHT_MODES-1) | NAVIGATION_LINE_BY_LINE) 0 /*, ...*/});
|
||||
|
||||
int8_t sub = menuVerticalPosition;
|
||||
@@ -85,11 +87,15 @@ void menuModelExpoOne(event_t event)
|
||||
|
||||
switch (i) {
|
||||
case EXPO_FIELD_INPUT_NAME:
|
||||
editSingleName(EXPO_ONE_2ND_COLUMN-LEN_INPUT_NAME*FW, y, STR_INPUTNAME, g_model.inputNames[ed->chn], LEN_INPUT_NAME, event, attr);
|
||||
editSingleName(EXPO_ONE_2ND_COLUMN - LEN_INPUT_NAME * FW, y,
|
||||
STR_INPUTNAME, g_model.inputNames[ed->chn],
|
||||
LEN_INPUT_NAME, event, (attr != 0), old_editMode);
|
||||
break;
|
||||
|
||||
case EXPO_FIELD_LINE_NAME:
|
||||
editSingleName(EXPO_ONE_2ND_COLUMN-LEN_EXPOMIX_NAME*FW, y, STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event, attr);
|
||||
editSingleName(EXPO_ONE_2ND_COLUMN - LEN_EXPOMIX_NAME * FW, y,
|
||||
STR_EXPONAME, ed->name, LEN_EXPOMIX_NAME, event,
|
||||
(attr != 0), old_editMode);
|
||||
break;
|
||||
|
||||
case EXPO_FIELD_SOURCE:
|
||||
|
||||
@@ -103,6 +103,8 @@ void menuModelMixOne(event_t event)
|
||||
#endif
|
||||
MixData * md2 = mixAddress(s_currIdx) ;
|
||||
putsChn(PSIZE(TR_MIXES)*FW+FW, 0, md2->destCh+1,0);
|
||||
|
||||
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 /*, ...*/});
|
||||
|
||||
@@ -122,7 +124,9 @@ void menuModelMixOne(event_t event)
|
||||
LcdFlags attr = (sub==i ? (editMode>0 ? BLINK|INVERS : INVERS) : 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 != 0),
|
||||
old_editMode);
|
||||
break;
|
||||
|
||||
case MIX_FIELD_SOURCE:
|
||||
|
||||
@@ -105,6 +105,8 @@ void menuModelLimitsOne(event_t event)
|
||||
lcdDrawNumber(19*FW, 0, PPM_CH_CENTER(s_currIdx)+channelOutputs[s_currIdx]/2, RIGHT);
|
||||
lcdDrawText(19*FW, 0, STR_US);
|
||||
|
||||
uint8_t old_editMode = s_editMode;
|
||||
|
||||
SUBMENU_NOTITLE(ITEM_OUTPUTONE_MAXROW, { 0, 0, 0, 0, 0, 0 , 0 /*, 0...*/ });
|
||||
|
||||
int8_t sub = menuVerticalPosition;
|
||||
@@ -118,7 +120,8 @@ void menuModelLimitsOne(event_t event)
|
||||
|
||||
switch (i) {
|
||||
case ITEM_OUTPUTONE_CH_NAME:
|
||||
editSingleName(LIMITS_ONE_2ND_COLUMN, y, STR_NAME, ld->name, sizeof(ld->name), event, attr);
|
||||
editSingleName(LIMITS_ONE_2ND_COLUMN, y, STR_NAME, ld->name,
|
||||
sizeof(ld->name), event, attr, old_editMode);
|
||||
break;
|
||||
|
||||
case ITEM_OUTPUTONE_OFFSET:
|
||||
|
||||
@@ -485,8 +485,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_TIMER1:
|
||||
@@ -543,7 +546,8 @@ void menuModelSetup(event_t event)
|
||||
case ITEM_MODEL_SETUP_TIMER3_NAME:
|
||||
{
|
||||
TimerData * timer = &g_model.timers[k>=ITEM_MODEL_SETUP_TIMER3 ? 2 : (k>=ITEM_MODEL_SETUP_TIMER2 ? 1 : 0)];
|
||||
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, timer->name, sizeof(timer->name), event, attr);
|
||||
editSingleName(MODEL_SETUP_2ND_COLUMN, y, INDENT TR_NAME, timer->name,
|
||||
sizeof(timer->name), event, attr, old_editMode);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -47,6 +47,8 @@ void menuModelSensor(event_t event)
|
||||
{
|
||||
TelemetrySensor * sensor = & g_model.telemetrySensors[s_currIdx];
|
||||
|
||||
uint8_t old_editMode = s_editMode;
|
||||
|
||||
SUBMENU(STR_MENUSENSOR, SENSOR_FIELD_MAX, {
|
||||
0, // Name
|
||||
0, // Type
|
||||
@@ -85,7 +87,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:
|
||||
|
||||
Reference in New Issue
Block a user