Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
973 changes: 538 additions & 435 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_10.c

Large diffs are not rendered by default.

966 changes: 544 additions & 422 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_12.c

Large diffs are not rendered by default.

1,018 changes: 586 additions & 432 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_14.c

Large diffs are not rendered by default.

1,055 changes: 619 additions & 436 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_16.c

Large diffs are not rendered by default.

1,080 changes: 650 additions & 430 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_18.c

Large diffs are not rendered by default.

1,134 changes: 699 additions & 435 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_20.c

Large diffs are not rendered by default.

1,178 changes: 741 additions & 437 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_22.c

Large diffs are not rendered by default.

1,235 changes: 796 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_24.c

Large diffs are not rendered by default.

1,282 changes: 843 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_26.c

Large diffs are not rendered by default.

1,325 changes: 891 additions & 434 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_28.c

Large diffs are not rendered by default.

1,403 changes: 964 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_30.c

Large diffs are not rendered by default.

1,452 changes: 1,017 additions & 435 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_32.c

Large diffs are not rendered by default.

1,518 changes: 1,083 additions & 435 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_34.c

Large diffs are not rendered by default.

1,589 changes: 1,157 additions & 432 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_36.c

Large diffs are not rendered by default.

1,678 changes: 1,239 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_38.c

Large diffs are not rendered by default.

1,755 changes: 1,316 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_40.c

Large diffs are not rendered by default.

1,837 changes: 1,401 additions & 436 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_42.c

Large diffs are not rendered by default.

1,922 changes: 1,484 additions & 438 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_44.c

Large diffs are not rendered by default.

2,016 changes: 1,577 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_46.c

Large diffs are not rendered by default.

2,112 changes: 1,673 additions & 439 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_48.c

Large diffs are not rendered by default.

884 changes: 480 additions & 404 deletions lib/lvgl/lvgl/src/font/lv_font_montserrat_8.c

Large diffs are not rendered by default.

10 changes: 10 additions & 0 deletions mkapp/app/language/de_de.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
; Languages
Simplified Chinese = "Chinesisch (vereinfacht)"
English = "Englisch"
Russian = "Russisch"
Spanish = "Spanisch"
German = "Deutsch"

SD Card = "SD-Karte"
Off = "Aus"
On = "Ein"
Expand Down Expand Up @@ -240,10 +247,13 @@ Target = "Ziel"
Current Version = "Aktuelle Version"
Reset all settings = "Alle Einstellungen zuruecksetzen"
Update complete = "Update abgeschlossen"
Language = "Sprache"
Goggle update completed successfully = "Brillen-Update erfolgreich abgeschlossen"
Please repower goggle now = "Bitte starten Sie die Brille neu"
Settings reset = "Einstellungen zurueckgesetzt"
All settings have been reset = "Alle Einstellungen wurden zurueckgesetzt"
Set Language = "Sprache setzen"
Language has been changed = "Die Sprache wurde geaendert"
Empty = "Leer"
Goggle = "Brille"

Expand Down
10 changes: 10 additions & 0 deletions mkapp/app/language/es_es.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
; Languages
Simplified Chinese = "chino simplificado"
English = "Inglés"
Russian = "Ruso"
Spanish = "Español"
German = "Alemán"

SD Card = "SDCard"
Off = "Off"
On = "On"
Expand Down Expand Up @@ -241,10 +248,13 @@ Target = "Objetivo"
Current Version = "Versión Actual"
Reset all settings = "Restablecer todo"
Update complete = "Actualización completa"
Language = "Idioma"
Goggle update completed successfully = "Actualización de las gafas completada."
Please repower goggle now = "Por favor, reinicie las gafas ahora."
Settings reset = "Ajustes restablecidos"
All settings have been reset = "Todos los ajustes han sido restablecidos."
Set Language = "Establecer idioma"
Language has been changed = "La lenguaje ha sido cambiado"
Empty = "Vacío"
Goggle = "Gafas"

Expand Down
10 changes: 10 additions & 0 deletions mkapp/app/language/ru_ru.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
; Languages
Simplified Chinese = "Упрощенный китайский"
English = "Английский"
Russian = "Русский"
Spanish = "испанский"
German = "немецкий"

Off = "Выкл."
On = "Вкл."
In = "Вход"
Expand Down Expand Up @@ -240,10 +247,13 @@ Target = "Цель"
Current Version = "Текущая версия"
Reset all settings = "Сбросить все настройки"
Update complete = "Обновление завершено"
Language = "Язык"
Goggle update completed successfully = "Обновление очков завершено."
Please repower goggle now = "Пожалуйста, перезагрузите очки."
Settings reset = "Сброс настроек"
All settings have been reset = "Все настройки сброшены."
Set Language = "Установить язык"
Language has been changed = "Язык был изменен."
Empty = "Пусто"
Goggle = "Очки"

Expand Down
10 changes: 10 additions & 0 deletions mkapp/app/language/zh_hans.ini
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
; Languages
Simplified Chinese = "简体中文"
English = "英语"
Russian = "俄语"
Spanish = "西班牙语"
German = "德语"

Off = "关"
On = "开"
In = "输入"
Expand Down Expand Up @@ -240,10 +247,13 @@ Target = "目标"
Current Version = "当前版本"
Reset all settings = "重置所有设置"
Update complete = "更新完成"
Language = "语言"
Goggle update completed successfully = "眼镜更新完成"
Please repower goggle now = "现在请重启眼镜"
Settings reset = "重置设置"
All settings have been reset = "所有设置已被重置"
Set Language = "设置语言"
Language has been changed = "语言已更改"
Empty = "无"
Goggle = "眼镜"

Expand Down
48 changes: 42 additions & 6 deletions src/lang/language.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
#include "core/common.hh"
#include "language.h"
#include "ui/page_common.h"
#include "util/system.h"

#include <assert.h>
#include <stdlib.h>
Expand Down Expand Up @@ -131,21 +132,56 @@ bool language_config() {
int i = 0;

for (i = 0; i < LANG_END; i++) {
bool languageFound = false;

snprintf(buf, sizeof(buf), "/mnt/extsd/%s", language_config_file[i]);
if (access(buf, F_OK) == 0) {
LOGI("%s found", language_config_file[i]);
ini_putl("language", "lang", i, SETTING_INI);
g_setting.language.lang = i;
return true;
languageFound = true;
} else {
to_lowercase(buf);
if (access(buf, F_OK) == 0) {
LOGI("%s found", language_config_file[i]);
ini_putl("language", "lang", i, SETTING_INI);
g_setting.language.lang = i;
languageFound = true;
}
}

to_lowercase(buf);
if (access(buf, F_OK) == 0) {
LOGI("%s found", language_config_file[i]);
ini_putl("language", "lang", i, SETTING_INI);
g_setting.language.lang = i;
if (languageFound) {
char cmd[259];
snprintf(cmd, sizeof(cmd), "rm %s", buf);
system_exec(cmd);
return true;
}
}
return false;
}

/**
* Build a '\n'-separated list of all available languages
*/
char *languageList(char *buffer, size_t len) {
for (size_t i = 0; i < ARRAY_SIZE(languages) && len > 0; i++) {
const char * const currentLanguageName = _lang(languages[i].name);
const size_t nameLength = strlen(currentLanguageName);

if (nameLength >= len) {
char tmp[256];
snprintf(tmp, len, "%s", currentLanguageName);
strcat(buffer, tmp);
len = 0;
} else {
strcat(buffer, currentLanguageName);
len -= nameLength;
if (i < ARRAY_SIZE(languages) - 1 && len > 1) {
strcat(buffer, "\n");
len--;
}
}
}

return buffer;
}
3 changes: 2 additions & 1 deletion src/lang/language.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

#include "core/settings.h"

#define TRANSLATE_STRING_NUM 300
#define TRANSLATE_STRING_NUM 308
#define LANG_FOLDER "/mnt/app/language"

typedef enum {
Expand All @@ -23,6 +23,7 @@ typedef struct {
void language_init();
const char *translate_string(const char *str, lang_e lang);
bool language_config();
char *languageList(char *buffer, size_t len);

#define _str(string, lang) translate_string(string, lang)
#define _(string) _str(string, g_setting.language.lang)
Expand Down
67 changes: 67 additions & 0 deletions src/ui/page_version.c
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ enum {
ROW_GOGGLE_UPDATE_VTX,
ROW_GOGGLE_UPDATE_GOGGLE,
ROW_GOGGLE_UPDATE_ESP32,
ROW_GOGGLE_LANGUAGE,
ROW_GOGGLE_BACK,
ROW_GOGGLE_COUNT
};
Expand All @@ -45,6 +46,7 @@ enum {
ROW_BOXPRO_RESET_ALL_SETTINGS,
ROW_BOXPRO_UPDATE_GOGGLE,
ROW_BOXPRO_UPDATE_ESP32,
ROW_BOXPRO_LANGUAGE,
ROW_BOXPRO_BACK,
ROW_BOXPRO_COUNT
};
Expand All @@ -55,6 +57,7 @@ enum {
ROW_BOXLITE_CUR_VERSION = 0,
ROW_BOXLITE_RESET_ALL_SETTINGS,
ROW_BOXLITE_UPDATE_GOGGLE,
ROW_BOXLITE_LANGUAGE,
ROW_BOXLITE_BACK,
ROW_BOXLITE_COUNT
};
Expand All @@ -65,6 +68,7 @@ enum {
#define ROW_UPDATE_VTX ROW_GOGGLE_UPDATE_VTX
#define ROW_UPDATE_GOGGLE ROW_GOGGLE_UPDATE_GOGGLE
#define ROW_UPDATE_ESP32 ROW_GOGGLE_UPDATE_ESP32
#define ROW_LANGUAGE ROW_GOGGLE_LANGUAGE
#define ROW_BACK ROW_GOGGLE_BACK
#define ROW_COUNT ROW_GOGGLE_COUNT
#elif defined HDZBOXPRO
Expand All @@ -73,6 +77,7 @@ enum {
#define ROW_UPDATE_VTX (g_setting.has_all_features ? ROW_BOXPRO_UPDATE_VTX : ROW_BOXLITE_UPDATE_VTX)
#define ROW_UPDATE_GOGGLE (g_setting.has_all_features ? ROW_BOXPRO_UPDATE_GOGGLE : ROW_BOXLITE_UPDATE_GOGGLE)
#define ROW_UPDATE_ESP32 (g_setting.has_all_features ? ROW_BOXPRO_UPDATE_ESP32 : ROW_BOXLITE_UPDATE_ESP32)
#define ROW_LANGUAGE (g_setting.has_all_features ? ROW_BOXPRO_LANGUAGE : ROW_BOXLITE_LANGUAGE)
#define ROW_BACK (g_setting.has_all_features ? ROW_BOXPRO_BACK : ROW_BOXLITE_BACK)
#define ROW_COUNT (g_setting.has_all_features ? ROW_BOXPRO_COUNT : ROW_BOXLITE_COUNT)
#endif
Expand Down Expand Up @@ -122,6 +127,10 @@ static lv_obj_t *alert_img = NULL;
static fw_select_t fw_select_goggle;
static fw_select_t fw_select_vtx;
static fw_select_t *fw_select_current = &fw_select_vtx;
static lv_obj_t *dropdown_lang;
static lv_obj_t *msgbox_language_changed = NULL;

static bool dropdown_lang_is_opened = false;

#define ADDR_AL 0x65
#define ADDR_FPGA 0x64
Expand Down Expand Up @@ -839,6 +848,7 @@ static void page_version_fw_select_create(const char *device, fw_select_t *fw_se
page_version_fw_select_hide(fw_select);
}

char language_options_str[256];
static lv_obj_t *page_version_create(lv_obj_t *parent, panel_arr_t *arr) {
char buf[128];
static char page_name[32];
Expand Down Expand Up @@ -897,6 +907,16 @@ static lv_obj_t *page_version_create(lv_obj_t *parent, panel_arr_t *arr) {
lv_obj_add_flag(bar_esp, LV_OBJ_FLAG_HIDDEN);
}

sprintf(buf, "%s", _lang("Language"));
create_label_item(cont, buf, 1, ROW_LANGUAGE, 1);

dropdown_lang = create_dropdown_item(cont, languageList(language_options_str, 256), 3, ROW_LANGUAGE, UI_INPUT_DROPDOWN_WIDTH, row_dsc[ROW_LANGUAGE], 2, 10, LV_GRID_ALIGN_START, UI_PAGE_TEXT_FONT);
lv_dropdown_set_selected(dropdown_lang, g_setting.language.lang);

lv_obj_t *list = lv_dropdown_get_list(dropdown_lang);
lv_obj_add_style(list, &style_dropdown, LV_PART_MAIN); // The dropdown consists of a button and a list. You need to add a style to the list separately.
lv_obj_set_style_text_color(list, lv_color_make(0, 0, 0), LV_PART_SELECTED | LV_STATE_CHECKED);

snprintf(buf, sizeof(buf), "< %s", _lang("Back"));
create_label_item(cont, buf, 1, ROW_BACK, 1);

Expand All @@ -912,6 +932,12 @@ static lv_obj_t *page_version_create(lv_obj_t *parent, panel_arr_t *arr) {
msgbox_settings_reset = create_msgbox_item(_lang("Settings reset"), buf);
lv_obj_add_flag(msgbox_settings_reset, LV_OBJ_FLAG_HIDDEN);

snprintf(buf, sizeof(buf), "%s.\n%s.",
_lang("Language has been changed"),
_lang("Please repower goggle now"));
msgbox_language_changed = create_msgbox_item(_lang("Set Language"), buf);
lv_obj_add_flag(msgbox_language_changed, LV_OBJ_FLAG_HIDDEN);

msgbox_release_notes = create_msgbox_item(_lang("Release Notes"), _lang("Empty"));
lv_obj_add_flag(msgbox_release_notes, LV_OBJ_FLAG_HIDDEN);

Expand Down Expand Up @@ -1022,6 +1048,15 @@ static void reset_all_settings_reset_label_text() {
lv_label_set_text(btn_reset_all_settings, _lang("Reset all settings"));
}

static void close_language_dropdown() {
if (dropdown_lang_is_opened) {
lv_event_send(dropdown_lang, LV_EVENT_RELEASED, NULL);
lv_obj_remove_style(dropdown_lang, &style_dropdown, LV_PART_MAIN);
dropdown_lang_is_opened = false;
pp_version.p_arr.max = ROW_COUNT; // enable roller operation on input_device.c
}
}

static void page_version_enter() {
autoscan_filesystem = false;
version_update_title();
Expand All @@ -1038,13 +1073,28 @@ static void page_version_exit() {
lv_obj_add_flag(msgbox_release_notes, LV_OBJ_FLAG_HIDDEN);
page_version_fw_select_hide(&fw_select_vtx);
page_version_fw_select_hide(&fw_select_goggle);
if (dropdown_lang_is_opened) {
lv_dropdown_set_selected(dropdown_lang, g_setting.language.lang);
close_language_dropdown();
}

autoscan_filesystem = true;
}

static void page_version_on_roller(uint8_t key) {

version_update_title();

if (dropdown_lang_is_opened) {
if (key == DIAL_KEY_UP) {
uint32_t evt = LV_KEY_DOWN;
lv_event_send(dropdown_lang, LV_EVENT_KEY, &evt);
} else if (key == DIAL_KEY_DOWN) {
uint32_t evt = LV_KEY_UP;
lv_event_send(dropdown_lang, LV_EVENT_KEY, &evt);
}
}

if (reset_all_settings_confirm == CONFIRMATION_CONFIRMED) {
reset_all_settings_reset_label_text();
reset_all_settings_confirm = CONFIRMATION_UNCONFIRMED;
Expand All @@ -1056,6 +1106,23 @@ static void page_version_on_click(uint8_t key, int sel) {
FILE *fp;
int dat[16];

if (sel == ROW_LANGUAGE) {
if (dropdown_lang_is_opened) {
close_language_dropdown();
uint16_t selected = lv_dropdown_get_selected(dropdown_lang);
if (selected != g_setting.language.lang) {
ini_putl("language", "lang", selected, SETTING_INI);
lv_obj_clear_flag(msgbox_language_changed, LV_OBJ_FLAG_HIDDEN);
app_state_push(APP_STATE_USER_INPUT_DISABLED);
}
} else {
lv_dropdown_open(dropdown_lang);
lv_obj_add_style(dropdown_lang, &style_dropdown, LV_PART_MAIN);
dropdown_lang_is_opened = true;
pp_version.p_arr.max = 0; // disable roller operation on input_device.c
}
}

if (!page_version_release_notes_active()) {
version_update_title();
if (sel == ROW_CUR_VERSION) {
Expand Down