From dd9a620bb7cdb323832306038a883f517930e497 Mon Sep 17 00:00:00 2001 From: philmoz Date: Mon, 6 May 2024 09:01:47 +1000 Subject: [PATCH] feat(color): add color options for radio info widget battery level indicator (#4845) --- radio/src/gui/colorlcd/widgets/radio_info.cpp | 51 ++++++++++++++----- radio/src/translations.cpp | 6 +++ radio/src/translations.h | 12 +++-- radio/src/translations/cn.h | 6 +++ radio/src/translations/cz.h | 6 +++ radio/src/translations/da.h | 6 +++ radio/src/translations/de.h | 6 +++ radio/src/translations/en.h | 6 +++ radio/src/translations/es.h | 6 +++ radio/src/translations/fi.h | 6 +++ radio/src/translations/fr.h | 6 +++ radio/src/translations/he.h | 6 +++ radio/src/translations/it.h | 6 +++ radio/src/translations/jp.h | 6 +++ radio/src/translations/nl.h | 6 +++ radio/src/translations/pl.h | 6 +++ radio/src/translations/pt.h | 6 +++ radio/src/translations/ru.h | 6 +++ radio/src/translations/se.h | 6 +++ radio/src/translations/tw.h | 6 +++ radio/src/translations/ua.h | 6 +++ 21 files changed, 158 insertions(+), 19 deletions(-) diff --git a/radio/src/gui/colorlcd/widgets/radio_info.cpp b/radio/src/gui/colorlcd/widgets/radio_info.cpp index 4a576ee80e4..3e65cad6982 100644 --- a/radio/src/gui/colorlcd/widgets/radio_info.cpp +++ b/radio/src/gui/colorlcd/widgets/radio_info.cpp @@ -85,13 +85,8 @@ class RadioInfoWidget : public TopBarWidget batteryFill = lv_obj_create(lvobj); lv_obj_set_pos(batteryFill, W_AUDIO_X + 1, 26); lv_obj_set_size(batteryFill, 20, 9); - lv_obj_set_style_bg_color(batteryFill, lv_palette_main(LV_PALETTE_GREEN), - LV_PART_MAIN); - lv_obj_set_style_bg_color(batteryFill, lv_palette_main(LV_PALETTE_AMBER), - LV_PART_MAIN | LV_STATE_USER_1); - lv_obj_set_style_bg_color(batteryFill, lv_palette_main(LV_PALETTE_RED), - LV_PART_MAIN | LV_STATE_USER_2); lv_obj_set_style_bg_opa(batteryFill, LV_OPA_COVER, LV_PART_MAIN); + update(); // RSSI bars const uint8_t rssiBarsHeight[] = {5, 10, 15, 21, 31}; @@ -107,6 +102,21 @@ class RadioInfoWidget : public TopBarWidget checkEvents(); } + void update() override + { + lv_color_t color; + + // get colors from options + color.full = persistentData->options[2].value.unsignedValue; + lv_obj_set_style_bg_color(batteryFill, color, LV_PART_MAIN); + + color.full = persistentData->options[1].value.unsignedValue; + lv_obj_set_style_bg_color(batteryFill, color, LV_PART_MAIN | LV_STATE_USER_1); + + color.full = persistentData->options[0].value.unsignedValue; + lv_obj_set_style_bg_color(batteryFill, color, LV_PART_MAIN | LV_STATE_USER_2); + } + void checkEvents() override { TopBarWidget::checkEvents(); @@ -175,6 +185,8 @@ class RadioInfoWidget : public TopBarWidget } } + static const ZoneOption options[]; + protected: uint8_t lastVol = 0; uint8_t lastBatt = 0; @@ -194,8 +206,14 @@ class RadioInfoWidget : public TopBarWidget #endif }; -BaseWidgetFactory RadioInfoWidget("Radio Info", nullptr, - "Radio Info"); +const ZoneOption RadioInfoWidget::options[] = { + {STR_LOW_BATT_COLOR, ZoneOption::Color, RGB(0xF4, 0x43, 0x36)}, + {STR_MID_BATT_COLOR, ZoneOption::Color, RGB(0xFF, 0xC1, 0x07)}, + {STR_HIGH_BATT_COLOR, ZoneOption::Color, RGB(0x4C, 0xAF, 0x50)}, + {nullptr, ZoneOption::Bool}}; + +BaseWidgetFactory RadioInfoWidget("Radio Info", RadioInfoWidget::options, + STR_RADIO_INFO_WIDGET); // Adjustment to make main view date/time align with model/radio settings views #if LCD_W > LCD_H @@ -212,6 +230,7 @@ class DateTimeWidget : public TopBarWidget TopBarWidget(factory, parent, rect, persistentData) { dateTime = new HeaderDateTime(lvobj, DT_OFFSET, 3); + update(); } void checkEvents() override @@ -224,13 +243,17 @@ class DateTimeWidget : public TopBarWidget if (t.tm_min != lastMinute) { lastMinute = t.tm_min; dateTime->update(); - // get color from options - LcdFlags color = - COLOR2FLAGS(persistentData->options[0].value.unsignedValue); - dateTime->setColor(color); } } + void update() override + { + // get color from options + LcdFlags color = + COLOR2FLAGS(persistentData->options[0].value.unsignedValue); + dateTime->setColor(color); + } + HeaderDateTime* dateTime = nullptr; int8_t lastMinute = -1; @@ -244,7 +267,7 @@ const ZoneOption DateTimeWidget::options[] = { BaseWidgetFactory DateTimeWidget("Date Time", DateTimeWidget::options, - "Date Time"); + STR_DATE_TIME_WIDGET); #if defined(INTERNAL_GPS) @@ -285,6 +308,6 @@ class InternalGPSWidget : public TopBarWidget }; BaseWidgetFactory InternalGPSWidget("Internal GPS", nullptr, - "Internal GPS"); + STR_INT_GPS_LABEL); #endif diff --git a/radio/src/translations.cpp b/radio/src/translations.cpp index 22213812f13..469c476d3f0 100644 --- a/radio/src/translations.cpp +++ b/radio/src/translations.cpp @@ -1095,6 +1095,12 @@ ISTR(SORT_ORDERS); const char STR_SORT_MODELS_BY[] = TR_SORT_MODELS_BY; const char STR_CREATE_NEW[] = TR_CREATE_NEW; const char STR_THEME_EXISTS[] = TR_THEME_EXISTS; + +const char STR_DATE_TIME_WIDGET[] = TR_DATE_TIME_WIDGET; +const char STR_RADIO_INFO_WIDGET[] = TR_RADIO_INFO_WIDGET; +const char STR_LOW_BATT_COLOR[] = TR_LOW_BATT_COLOR; +const char STR_MID_BATT_COLOR[] = TR_MID_BATT_COLOR; +const char STR_HIGH_BATT_COLOR[] = TR_HIGH_BATT_COLOR; #endif const char STR_MIX_SLOW_PREC[] = TR_MIX_SLOW_PREC; diff --git a/radio/src/translations.h b/radio/src/translations.h index 49e0997fd64..98c36488c0c 100644 --- a/radio/src/translations.h +++ b/radio/src/translations.h @@ -19,8 +19,7 @@ * GNU General Public License for more details. */ -#ifndef _TRANSLATIONS_H_ -#define _TRANSLATIONS_H_ +#pragma once #include #include "opentx_types.h" @@ -1286,9 +1285,12 @@ extern const char* const STR_SORT_ORDERS[]; extern const char STR_SORT_MODELS_BY[]; extern const char STR_CREATE_NEW[]; extern const char STR_THEME_EXISTS[]; + +extern const char STR_DATE_TIME_WIDGET[]; +extern const char STR_RADIO_INFO_WIDGET[]; +extern const char STR_LOW_BATT_COLOR[]; +extern const char STR_MID_BATT_COLOR[]; +extern const char STR_HIGH_BATT_COLOR[]; #endif extern const char STR_MIX_SLOW_PREC[]; - -#endif // _TRANSLATIONS_H_ - diff --git a/radio/src/translations/cn.h b/radio/src/translations/cn.h index d8e906e7c31..356eb932c14 100644 --- a/radio/src/translations/cn.h +++ b/radio/src/translations/cn.h @@ -1287,3 +1287,9 @@ #define TR_THEME_EXISTS "已存在同名主题目录 !" #define ROTORFLIGHT_LUA_CH "按败板半保备闭标表并波补不菜参叉差偿超车持池出存打大带待怠单到等低地点电调定动度舵二翻方放飞副复负高跟关管航号何合后护环缓回混火或机积集几计加间减件降交角教接阶截进救距开控宽馈拉来累类连练量零灵率滤螺落门面敏模目逆爬盘偏频平其启器前曲取确然入刹上设身升失时使式释试数衰水瞬顺速缩他态体停通退陀微尾位文稳误息熄下陷限线相响向消小校斜新心信型行悬旋循压页一移仪益翼因应用油右预援源载增针正直值止置制中重轴主转准子自踪总最左耦" + +#define TR_DATE_TIME_WIDGET "日期和时间" +#define TR_RADIO_INFO_WIDGET "遥控器信息" +#define TR_LOW_BATT_COLOR "低电量" +#define TR_MID_BATT_COLOR "中电量" +#define TR_HIGH_BATT_COLOR "高电量" diff --git a/radio/src/translations/cz.h b/radio/src/translations/cz.h index 446260987f0..be867ce5bc2 100644 --- a/radio/src/translations/cz.h +++ b/radio/src/translations/cz.h @@ -1300,3 +1300,9 @@ #define TR_MIX_SLOW_PREC TR("Přesnost zpomal", "Přesnost zpomalení") #define TR_THEME_EXISTS "Adresář vzhledu s tímto názvem již existuje." + +#define TR_DATE_TIME_WIDGET "Datum a čas" +#define TR_RADIO_INFO_WIDGET "Informace o vysílačce" +#define TR_LOW_BATT_COLOR "Vybitá baterie" +#define TR_MID_BATT_COLOR "Středně nabitá baterie" +#define TR_HIGH_BATT_COLOR "Plně nabitá baterie" diff --git a/radio/src/translations/da.h b/radio/src/translations/da.h index 7038784f773..5eb027140f4 100644 --- a/radio/src/translations/da.h +++ b/radio/src/translations/da.h @@ -1300,3 +1300,9 @@ #define TR_MIX_SLOW_PREC TR("Træg præc", "Træg op/ned præcision") #define TR_THEME_EXISTS "Der findes allerede et katalog med samme navn." + +#define TR_DATE_TIME_WIDGET "Dato & Klokke" +#define TR_RADIO_INFO_WIDGET "Radio info" +#define TR_LOW_BATT_COLOR "Batteri lavt" +#define TR_MID_BATT_COLOR "Batteri medio" +#define TR_HIGH_BATT_COLOR "Batteri højt" diff --git a/radio/src/translations/de.h b/radio/src/translations/de.h index 578a2b3c3f6..5a2eddac28e 100644 --- a/radio/src/translations/de.h +++ b/radio/src/translations/de.h @@ -1296,3 +1296,9 @@ #define TR_MIX_SLOW_PREC TR("Langs. Vorlauf", "Langs. Vor-/Rücklauf") #define TR_THEME_EXISTS "Ein Theme-Verzeichnis mit demselben Namen existiert bereits" + +#define TR_DATE_TIME_WIDGET "Datum & Uhrzeit" +#define TR_RADIO_INFO_WIDGET "Fernst. Info" +#define TR_LOW_BATT_COLOR "Farbe Akku fast leer" +#define TR_MID_BATT_COLOR "Farbe Akku mittel" +#define TR_HIGH_BATT_COLOR "Farbe Akku voll" diff --git a/radio/src/translations/en.h b/radio/src/translations/en.h index 18ce49024a3..c7cf2d4391d 100644 --- a/radio/src/translations/en.h +++ b/radio/src/translations/en.h @@ -1288,3 +1288,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "A theme directory with the same name already exists." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/es.h b/radio/src/translations/es.h index 6e8696991a6..41ccf93d9b8 100644 --- a/radio/src/translations/es.h +++ b/radio/src/translations/es.h @@ -1288,3 +1288,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "A theme directory with the same name already exists." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/fi.h b/radio/src/translations/fi.h index f2cdd6a23d3..a94f08fd31f 100644 --- a/radio/src/translations/fi.h +++ b/radio/src/translations/fi.h @@ -1304,3 +1304,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "A theme directory with the same name already exists." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/fr.h b/radio/src/translations/fr.h index e3d3522307b..42a19addf68 100644 --- a/radio/src/translations/fr.h +++ b/radio/src/translations/fr.h @@ -1305,3 +1305,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "Un thème avec le même nom existe déjà." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/he.h b/radio/src/translations/he.h index ddafcc8a7a9..3a9cfbd0361 100644 --- a/radio/src/translations/he.h +++ b/radio/src/translations/he.h @@ -1291,3 +1291,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "כבר קיימת ערכת נושא עם אותו שם" + +#define TR_DATE_TIME_WIDGET "תאריך ושעה" +#define TR_RADIO_INFO_WIDGET "מידע השלט" +#define TR_LOW_BATT_COLOR "מתח סוללה נמוך" +#define TR_MID_BATT_COLOR "מתח סוללה בינוני" +#define TR_HIGH_BATT_COLOR "מתח סוללה גבוה" diff --git a/radio/src/translations/it.h b/radio/src/translations/it.h index fced9a89739..4867b8f7146 100644 --- a/radio/src/translations/it.h +++ b/radio/src/translations/it.h @@ -1283,3 +1283,9 @@ #define TR_MIX_SLOW_PREC TR("Prec. lenta", "Prec. su/giù lenta") #define TR_THEME_EXISTS "Esiste già una cartella di temi con lo stesso nome." + +#define TR_DATE_TIME_WIDGET "Data & Ora" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Batteria scarica" +#define TR_MID_BATT_COLOR "Batteria media" +#define TR_HIGH_BATT_COLOR "Batteria carica" diff --git a/radio/src/translations/jp.h b/radio/src/translations/jp.h index e495971034a..dcb9853aac7 100644 --- a/radio/src/translations/jp.h +++ b/radio/src/translations/jp.h @@ -1287,3 +1287,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "同じ名前のテーマディレクトリが既に存在します。" + +#define TR_DATE_TIME_WIDGET "日付と時刻" +#define TR_RADIO_INFO_WIDGET "送信機情報" +#define TR_LOW_BATT_COLOR "バッテリー低" +#define TR_MID_BATT_COLOR "バッテリー中" +#define TR_HIGH_BATT_COLOR "バッテリー高" diff --git a/radio/src/translations/nl.h b/radio/src/translations/nl.h index a9b847d1006..bba91130d6e 100644 --- a/radio/src/translations/nl.h +++ b/radio/src/translations/nl.h @@ -1295,3 +1295,9 @@ #define TR_MIX_SLOW_PREC TR("Slow prec", "Slow up/dn prec") #define TR_THEME_EXISTS "A theme directory with the same name already exists." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/pl.h b/radio/src/translations/pl.h index 5822e15e233..5d7af557e4c 100644 --- a/radio/src/translations/pl.h +++ b/radio/src/translations/pl.h @@ -1287,3 +1287,9 @@ #define TR_MIX_SLOW_PREC TR("Wolna prec.", "Wolna prec. góra/dół") #define TR_THEME_EXISTS "Folder szablonów o takiej samej nazwie już istnieje." + +#define TR_DATE_TIME_WIDGET "Data i czas" +#define TR_RADIO_INFO_WIDGET "Informacje o radiu" +#define TR_LOW_BATT_COLOR "Rozładowana bateria" +#define TR_MID_BATT_COLOR "Średni stan baterii" +#define TR_HIGH_BATT_COLOR "Naładowana bateria" diff --git a/radio/src/translations/pt.h b/radio/src/translations/pt.h index 6883368978b..40142ac3fca 100644 --- a/radio/src/translations/pt.h +++ b/radio/src/translations/pt.h @@ -1291,3 +1291,9 @@ #define TR_MIX_SLOW_PREC TR("Prec. Lento", "Prec. mais/menos lento") #define TR_THEME_EXISTS "Já existe um diretório de tema com o mesmo nome." + +#define TR_DATE_TIME_WIDGET "Data & Hora" +#define TR_RADIO_INFO_WIDGET "Inf do Rádio" +#define TR_LOW_BATT_COLOR "Bateria Baixa" +#define TR_MID_BATT_COLOR "Bateria Média" +#define TR_HIGH_BATT_COLOR "Bateria Alta" diff --git a/radio/src/translations/ru.h b/radio/src/translations/ru.h index 6087beca391..91a9d30359e 100644 --- a/radio/src/translations/ru.h +++ b/radio/src/translations/ru.h @@ -1290,3 +1290,9 @@ #define TR_MIX_SLOW_PREC TR("Точн замедл", "Точность замедления") #define TR_THEME_EXISTS "Уже есть каталог с таким названием" + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery" diff --git a/radio/src/translations/se.h b/radio/src/translations/se.h index 82ec5cc521e..f50f0129ff0 100644 --- a/radio/src/translations/se.h +++ b/radio/src/translations/se.h @@ -1324,3 +1324,9 @@ #define TR_MIX_SLOW_PREC TR("Dröj preci.", "Fördröj upp/ner precision") #define TR_THEME_EXISTS "Det finns redan ett tema med samma namn" + +#define TR_DATE_TIME_WIDGET "Datum & Tid" +#define TR_RADIO_INFO_WIDGET "Radioinformation" +#define TR_LOW_BATT_COLOR "Lågt batteri" +#define TR_MID_BATT_COLOR "Medium batteri" +#define TR_HIGH_BATT_COLOR "Högt batteri" diff --git a/radio/src/translations/tw.h b/radio/src/translations/tw.h index dcd19585cb0..77779f42a0c 100644 --- a/radio/src/translations/tw.h +++ b/radio/src/translations/tw.h @@ -1292,3 +1292,9 @@ #define TR_THEME_EXISTS "已存在同名主題目錄 !" #define ROTORFLIGHT_LUA_CH "按敗板半保備閉標表並波補不菜參叉差償超車持池出存打大帶待怠單到等低地點電調定動度舵二翻方放飛副復負高跟關管航號何合后護環緩回混火或機積集幾計加間減件降交角教接階截進救距開控寬饋拉來累類連練量零靈率濾螺落門面敏模目逆爬盤偏頻平其啟器前曲取確然入剎上設身升失時使式釋試數衰水瞬順速縮他態體停通退陀微尾位文穩誤息熄下陷限線相響向消小校斜新心信型行懸旋循壓頁一移儀益翼因應用油右預援源載增針正直值止置制中重軸主轉准子自蹤總最左耦" + +#define TR_DATE_TIME_WIDGET "日期和時間" +#define TR_RADIO_INFO_WIDGET "遙控器信息" +#define TR_LOW_BATT_COLOR "低電量" +#define TR_MID_BATT_COLOR "中電量" +#define TR_HIGH_BATT_COLOR "高電量" diff --git a/radio/src/translations/ua.h b/radio/src/translations/ua.h index f75e6f48535..43a402e43c7 100644 --- a/radio/src/translations/ua.h +++ b/radio/src/translations/ua.h @@ -1280,3 +1280,9 @@ #define TR_MIX_SLOW_PREC TR("Точн. уповільн.", "Точність уповільнення") #define TR_THEME_EXISTS "A theme directory with the same name already exists." + +#define TR_DATE_TIME_WIDGET "Date & Time" +#define TR_RADIO_INFO_WIDGET "Radio Info" +#define TR_LOW_BATT_COLOR "Low battery" +#define TR_MID_BATT_COLOR "Mid battery" +#define TR_HIGH_BATT_COLOR "High battery"