diff --git a/radio/src/gui/colorlcd/radio_trainer.cpp b/radio/src/gui/colorlcd/radio_trainer.cpp index 341e4c179..802ceccf3 100644 --- a/radio/src/gui/colorlcd/radio_trainer.cpp +++ b/radio/src/gui/colorlcd/radio_trainer.cpp @@ -30,13 +30,15 @@ RadioTrainerPage::RadioTrainerPage(): { } -static const lv_coord_t col_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(2), +#if LCD_W > LCD_H +static const lv_coord_t col_dsc[] = {LV_GRID_FR(7), LV_GRID_FR(13), LV_GRID_FR(10), LV_GRID_FR(10), LV_GRID_FR(10), LV_GRID_TEMPLATE_LAST}; - -#if LCD_H >= LCD_W -static const lv_coord_t col4_dsc[] = {LV_GRID_FR(1), LV_GRID_FR(1), - LV_GRID_FR(1), LV_GRID_FR(1), - LV_GRID_TEMPLATE_LAST}; + +#define MULT_COL_CNT 3 +#else +static const lv_coord_t col_dsc[] = {LV_GRID_FR(7), LV_GRID_FR(15), LV_GRID_FR(9), LV_GRID_FR(9), + LV_GRID_TEMPLATE_LAST}; +#define MULT_COL_CNT 2 #endif static const lv_coord_t row_dsc[] = {LV_GRID_CONTENT, LV_GRID_TEMPLATE_LAST}; @@ -51,66 +53,61 @@ void RadioTrainerPage::build(FormWindow * form) { FlexGridLayout grid(col_dsc, row_dsc, 2); form->setFlexLayout(); + form->padAll(4); +#if LCD_W > LCD_H + form->padLeft(8); + form->padRight(8); +#endif for (uint8_t i = 0; i < NUM_STICKS; i++) { uint8_t chan = channelOrder(i + 1); TrainerMix* td = &g_eeGeneral.trainer.mix[chan - 1]; auto line = form->newLine(&grid); + new StaticText(line, rect_t{}, STR_VSRCRAW[chan], 0, COLOR_THEME_PRIMARY1); - auto box = new FormGroup(line, rect_t{}); - box->setFlexLayout(LV_FLEX_FLOW_ROW, lv_dpx(4)); - auto box_obj = box->getLvObj(); - lv_obj_set_width(box_obj, LV_SIZE_CONTENT); - lv_obj_set_style_flex_cross_place(box_obj, LV_FLEX_ALIGN_CENTER, 0); - - new Choice(box, rect_t{}, STR_TRNMODE, 0, 2, GET_SET_DEFAULT(td->mode)); - new Choice(box, rect_t{}, STR_TRNCHN, 0, 3, GET_SET_DEFAULT(td->srcChn)); - auto weight = new NumberEdit(box, rect_t{}, -125, 125, + new Choice(line, rect_t{}, STR_TRNMODE, 0, 2, GET_SET_DEFAULT(td->mode)); + new Choice(line, rect_t{}, STR_TRNCHN, 0, 3, GET_SET_DEFAULT(td->srcChn)); + auto weight = new NumberEdit(line, rect_t{}, -125, 125, GET_SET_DEFAULT(td->studWeight)); weight->setSuffix("%"); -#if LCD_W > LCD_H - new DynamicNumber(box, rect_t{}, +#if LCD_H > LCD_W + line = form->newLine(&grid); + line->padLeft(30); + line->padBottom(8); +#endif + + auto d = new DynamicNumber(line, rect_t{}, [=]() { return (ppmInput[i] - g_eeGeneral.trainer.calib[i]) * 2; }, LEFT | PPM_PRECISION | COLOR_THEME_PRIMARY1); -#endif } -#if LCD_H >= LCD_W - { - FlexGridLayout grid4(col4_dsc, row_dsc, 2); - auto line = form->newLine(&grid4); - - for (uint8_t i = 0; i < NUM_STICKS; i++) { - new DynamicNumber(line, rect_t{}, - [=]() { return (ppmInput[i] - g_eeGeneral.trainer.calib[i]) * 2; }, - CENTERED | PPM_PRECISION | COLOR_THEME_PRIMARY1); - } - } + auto line = form->newLine(&grid); + line->padTop(10); + + // Trainer multiplier + auto lbl = new StaticText(line, rect_t{}, STR_MULTIPLIER, 0, COLOR_THEME_PRIMARY1); + lbl->padRight(4); + lv_obj_set_grid_cell(lbl->getLvObj(), LV_GRID_ALIGN_END, 0, MULT_COL_CNT, LV_GRID_ALIGN_CENTER, 0, 1); + auto multiplier = new NumberEdit(line, rect_t{}, -10, 40, + GET_SET_DEFAULT(g_eeGeneral.PPM_Multiplier)); + multiplier->setDisplayHandler( + [](int32_t value) { return formatNumberAsString(value + 10, PREC1); }); + lv_obj_set_grid_cell(multiplier->getLvObj(), LV_GRID_ALIGN_START, MULT_COL_CNT, 1, LV_GRID_ALIGN_CENTER, 0, 1); + +#if LCD_H > LCD_W + line = form->newLine(&grid); + line->padTop(10); #endif // Trainer calibration - auto line = form->newLine(&grid); - auto btn = new TextButton(line, rect_t{}, std::string(STR_CAL), [=]() -> uint8_t { + auto btn = new TextButton(line, rect_t{0, 0, 0, 30}, std::string(STR_CAL), [=]() -> uint8_t { memcpy(g_eeGeneral.trainer.calib, ppmInput, sizeof(g_eeGeneral.trainer.calib)); SET_DIRTY(); return 0; }); - lv_obj_set_style_min_width(btn->getLvObj(), 2*LV_DPI_DEF/3, 0); - - // Trainer multiplier - auto box = new FormGroup(line, rect_t{}); - box->setFlexLayout(LV_FLEX_FLOW_ROW, lv_dpx(4)); - auto box_obj = box->getLvObj(); - lv_obj_set_width(box_obj, LV_SIZE_CONTENT); - lv_obj_set_style_flex_cross_place(box_obj, LV_FLEX_ALIGN_CENTER, 0); - - new StaticText(box, rect_t{}, STR_MULTIPLIER, 0, COLOR_THEME_PRIMARY1); - auto multiplier = new NumberEdit(box, rect_t{}, -10, 40, - GET_SET_DEFAULT(g_eeGeneral.PPM_Multiplier)); - multiplier->setDisplayHandler( - [](int32_t value) { return formatNumberAsString(value + 10, PREC1); }); + lv_obj_set_grid_cell(btn->getLvObj(), LV_GRID_ALIGN_STRETCH, MULT_COL_CNT+1, 1, LV_GRID_ALIGN_CENTER, 0, 1); } diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 5566f1c67..59e47915c 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -50,7 +50,7 @@ #define TR_VBEEPMODE "Tichý",TR("Alarm","Jen Alarm"),TR("BezKl","Bez kláves"),"Vše" #define TR_COUNTDOWNVALUES "5s","10s","20s","30s" #define TR_VBLMODE TR("Vyp","Vypnuto"),TR("Kláv.","Klávesy"),"Páky","Vše",TR("Zap","Zapnuto") -#define TR_TRNMODE "X","+=",":=" +#define TR_TRNMODE "X","Sečíst","Zaměnit" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "VYP","Telemetrie zrcadlení","Telemetrie vstup","SBUS Trenér","LUA","CLI","GPS","Debug","SpaceMouse","Externí modul" #define TR_SWTYPES "Žádný","Bez aretace","2-polohový","3-polohový" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index ccac248c7..4eca6c09a 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -47,7 +47,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Stille","Alarm","NoKey","Alle" #define TR_VBLMODE "FRA","Taster",TR("Ctrl","Controls"),"Begge","TIL" -#define TR_TRNMODE "FRA","+=",":=" +#define TR_TRNMODE "FRA","Læg til","Erstat" #define TR_TRNCHN "KA1","KA2","KA3","KA4" #define TR_AUX_SERIAL_MODES "FRA","Telem spejlet","Telemetri ind","SBUS træner","LUA","CLI","GPS","Debug","SpaceMouse","Eksternt modul" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 0177dcbbe..a1aca21c3 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -50,7 +50,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Stumm","Alarm","NoKey","Alle" #define TR_VBLMODE "AUS","Taste","Stks","Beide","EIN" -#define TR_TRNMODE "AUS","+=",":=" +#define TR_TRNMODE "AUS","Addiere","Ersetze" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "AUS","Telem weiterl.","Telemetrie In","SBUS Eingang","LUA","CLI","GPS","Debug","SpaceMouse","Externes Modul" #define TR_SWTYPES "Kein","Taster","2POS","3POS" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 2fe41ed3a..a84448608 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -45,7 +45,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Quiet","Alarm","NoKey","All" #define TR_VBLMODE "OFF","Keys",TR("Ctrl","Controls"),"Both","ON" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Add","Replace" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "OFF","Telem Mirror","Telemetry In","SBUS Trainer","LUA","CLI","GPS","Debug","SpaceMouse","External module" diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index f1dd933d5..51750975b 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -47,7 +47,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Silencio","Alarma","No tecla","Todo" #define TR_VBLMODE "OFF","Teclas","Sticks","Ambos","ON" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Añadir","Cambiar" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "UIT","Telem Mirror","Telemetría","Entrenador SBUS","LUA","CLI","GPS","Debug","SpaceMouse","Módulo externo" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index aa65fba86..2fa6c0828 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -49,7 +49,7 @@ #define TR_MMMINV "---","KÄÄ" #define TR_VBEEPMODE "Äänet","Hälyt","EiNap","Kaikk" #define TR_VBLMODE "OFF","Keys",TR("Ctrl","Controls"),"Both","ON" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Lisää","Korvaa" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "POIS","S-Port Pelik","Telemetry In","SBUS Trainer","LUA","CLI","GPS","Debug","SpaceMouse","External module" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index 8a322f361..56eeac00d 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -50,7 +50,7 @@ #define TR_VBEEPMODE "Aucun","Alarm","NoKey","Tout" #define TR_COUNTDOWNVALUES "5s","10s","20s","30s" #define TR_VBLMODE "OFF",TR("Btns","Touches"),TR("Ctrl","Controles"),"Tous","ON" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Ajoute","Remplace" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "OFF","Recopie Telem","Télémétrie In","Ecolage SBUS","LUA","CLI","GPS","Debug","SpaceMouse","Module externe" #define TR_SWTYPES "Rien","Levier","2-POS","3-POS" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index 681f8d85f..4bd78d56a 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -49,7 +49,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE TR("Silen","Silente"),TR("Avvis","Avvisi"),TR("Notst","No Tasti"),"Tutti" #define TR_VBLMODE TR("OFF","Spenta"),"Tasti",TR("Stks","Sticks"),"Tutti",TR("ON","Accesa") -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Add.","Sost." #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "OFF","Replica S-Port","Telemetria","SBUS Trainer","LUA","CLI","GPS","Debug","SpaceMouse","Modulo esterno" diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index de7495e06..51e22a042 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -46,7 +46,7 @@ #define TR_MMMINV "---","リバース" #define TR_VBEEPMODE "消音","アラームのみ","キー音なし","すべて" #define TR_VBLMODE "OFF","クリック時",TR("Ctrl","操作時"),"両方","ON" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","加算","置換" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "OFF","テレメトリーミラー","テレメトリーIN","SBUSトレーナー","LUAスクリプト","CLI","GPS","デバッグ","外部モジュール" diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index bcfbfc9e2..e880b5913 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -48,7 +48,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Stil","Alarm","NoKey","Alles" #define TR_VBLMODE "UIT",TR("Keys","Toetsen"),TR("Stick","Sticks"),"Beide","AAN" -#define TR_TRNMODE "UIT","+=",":=" +#define TR_TRNMODE "UIT","Add","Replace" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "UIT","Telem Mirror","Telemetry In","SBUS Leerling","LUA","CLI","GPS","Debug","SpaceMouse","External module" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 572d8aaad..f048237bc 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -48,7 +48,7 @@ #define TR_MMMINV "---","REV" #define TR_VBEEPMODE "Cichy","Alarm","BezPr","Wsz." #define TR_VBLMODE TR("Wył","Wyłącz"),TR("Przy","Przycisk"),TR("Drąż","Drązki"),"Oba",TR("Zał","Włącz") -#define TR_TRNMODE "Wył","+=",":=" +#define TR_TRNMODE "Wył","Dodaj","Zastąp" #define TR_TRNCHN "KN1","KN2","KN3","KN4" #define TR_AUX_SERIAL_MODES "Wyłącz","S-Port Kopia","Telemetria","Trener SBUS","LUA","CLI","GPS","Debug","SpaceMouse","Moduł zewnętrzny" #define TR_SWTYPES "Brak","Chwil.","2POZ","3POZ" diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 0e004e328..df402ccfe 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -48,7 +48,7 @@ #define TR_MMMINV "---","INV" #define TR_VBEEPMODE "Mudo","Alarm","NoKey","Todo" #define TR_VBLMODE "OFF","Chav","Stks","Tudo","ON\0" -#define TR_TRNMODE "OFF","+=",":=" +#define TR_TRNMODE "OFF","Adicionar","Trocar" #define TR_TRNCHN "CH1","CH2","CH3","CH4" #define TR_AUX_SERIAL_MODES "OFF","S-Port Mirror","Telemetry","SBUS Trainer","LUA","CLI","GPS","Debug","SpaceMouse","External module" #define TR_SWTYPES "None","Toggle","2POS","3POS" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index faec4aa7d..e7eadbbbe 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -51,7 +51,7 @@ #define TR_VBEEPMODE "Tyst","Alarm","Ej knapp","Alla" #define TR_COUNTDOWNVALUES "5s","10s","20s","30s" #define TR_VBLMODE "Av",TR("Knapp","Knappar"),TR("Spak","Spakar"),"Allt","PÅ" -#define TR_TRNMODE "Av","+=",":=" +#define TR_TRNMODE "Av","Addera","Ersätt" #define TR_TRNCHN "KA1","KA2","KA3","KA4" #define TR_AUX_SERIAL_MODES "AV","Speglad telemetri","Telemetri in","SBUS Lärare","LUA","CLI","GPS","Debug","SpaceMouse","Extern modul"