From f677b0b1eabd7ffb9185684d4dcf007de5188d01 Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Wed, 23 Jul 2025 14:17:44 +0200 Subject: [PATCH] Switch to lvgl 9.3.0 in PlatformIO Registry (#169) --- cmake/LVGL.cmake | 3 +- library.json | 2 +- source/graphics/TFT/TFTView_320x240.cpp | 50 ++++++++++++------------- 3 files changed, 28 insertions(+), 27 deletions(-) diff --git a/cmake/LVGL.cmake b/cmake/LVGL.cmake index 39bfe8a..bf19cbb 100644 --- a/cmake/LVGL.cmake +++ b/cmake/LVGL.cmake @@ -1,4 +1,5 @@ message(STATUS "Fetching LVGL ...") +set(LV_BUILD_CONF_DIR "include") add_compile_definitions(LV_LVGL_H_INCLUDE_SIMPLE) add_compile_definitions(LV_CONF_INCLUDE_SIMPLE) add_compile_definitions(LV_COMP_CONF_INCLUDE_SIMPLE) @@ -7,7 +8,7 @@ add_compile_definitions(LV_USE_LIBINPUT=1) add_compile_definitions(LV_LIBINPUT_XKB=1) FetchContent_Declare(lvgl GIT_REPOSITORY https://github.com/lvgl/lvgl.git - GIT_TAG "9c043167685fc08fbcd30ddf2c285ea1089be82d" + GIT_TAG v9.3.0 ) FetchContent_MakeAvailable(lvgl) target_include_directories(lvgl PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) diff --git a/library.json b/library.json index 4bce7f0..627c5be 100644 --- a/library.json +++ b/library.json @@ -21,7 +21,7 @@ "headers": ["DeviceScreen.h", "SharedQueue.h"], "dependencies": { "ArduinoThread": "https://github.com/meshtastic/ArduinoThread/archive/7c3ee9e1951551b949763b1f5280f8db1fa4068d.zip", - "lvgl/lvgl": "https://github.com/lvgl/lvgl/archive/9c043167685fc08fbcd30ddf2c285ea1089be82d.zip", + "lvgl/lvgl": "9.3.0", "greiman/SdFat": "https://github.com/mverch67/SdFat/archive/152a52251fc5e1d581303b42378ea712ab229246.zip", "nanopb/Nanopb": "0.4.91" }, diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 49382d1..8bab2ca 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -258,8 +258,8 @@ bool TFTView_320x240::setupUIConfig(const meshtastic_DeviceUIConfig &uiconfig) lv_obj_set_state(objects.nodes_filter_unknown_switch, LV_STATE_CHECKED, filter.unknown_switch); lv_obj_set_state(objects.nodes_filter_offline_switch, LV_STATE_CHECKED, filter.offline_switch); lv_obj_set_state(objects.nodes_filter_public_key_switch, LV_STATE_CHECKED, filter.public_key_switch); - // lv_dropdown_set_selected(objects.nodes_filter_channel_dropdown, filter.channel, LV_ANIM_OFF); - lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, filter.hops_away, LV_ANIM_OFF); + // lv_dropdown_set_selected(objects.nodes_filter_channel_dropdown, filter.channel); + lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, filter.hops_away); // lv_obj_set_state(objects.nodes_filter_mqtt_switch, LV_STATE_CHECKED, filter.mqtt_switch); lv_obj_set_state(objects.nodes_filter_position_switch, LV_STATE_CHECKED, filter.position_switch); lv_textarea_set_text(objects.nodes_filter_name_area, filter.node_name); @@ -1038,7 +1038,7 @@ void TFTView_320x240::ui_event_NodeButton(lv_event_t *e) THIS->chooseNodeSignalScanner = false; ui_event_signal_scanner(NULL); // restore previous filter - lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, THIS->selectedHops, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, THIS->selectedHops); THIS->updateNodesFiltered(true); THIS->updateNodesStatus(); } else if (THIS->chooseNodeTraceRoute) { @@ -1287,8 +1287,8 @@ void TFTView_320x240::ui_event_OnlineNodesButton(lv_event_t *e) lv_obj_set_state(objects.nodes_filter_offline_switch, LV_STATE_CHECKED, false); lv_obj_set_state(objects.nodes_filter_public_key_switch, LV_STATE_CHECKED, false); lv_obj_set_state(objects.nodes_filter_position_switch, LV_STATE_CHECKED, false); - lv_dropdown_set_selected(objects.nodes_filter_channel_dropdown, 0, LV_ANIM_OFF); - lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, 0, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.nodes_filter_channel_dropdown, 0); + lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, 0); lv_textarea_set_text(objects.nodes_filter_name_area, ""); THIS->ui_set_active(objects.nodes_button, objects.nodes_panel, objects.top_nodes_panel); THIS->updateNodesFiltered(true); @@ -1649,7 +1649,7 @@ void TFTView_320x240::ui_event_role_button(lv_event_t *e) { lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone && THIS->db.config.has_device) { - lv_dropdown_set_selected(objects.settings_device_role_dropdown, THIS->role2val(THIS->db.config.device.role), LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_device_role_dropdown, THIS->role2val(THIS->db.config.device.role)); lv_obj_clear_flag(objects.settings_device_role_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.settings_device_role_dropdown); THIS->disablePanel(objects.controller_panel); @@ -1662,7 +1662,7 @@ void TFTView_320x240::ui_event_region_button(lv_event_t *e) { lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone && THIS->db.config.has_lora) { - lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1); lv_obj_clear_flag(objects.settings_region_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.settings_region_dropdown); THIS->disablePanel(objects.controller_panel); @@ -1676,7 +1676,7 @@ void TFTView_320x240::ui_event_preset_button(lv_event_t *e) lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone && THIS->db.config.has_lora) { THIS->activeSettings = eModemPreset; - lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, THIS->db.config.lora.modem_preset, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, THIS->db.config.lora.modem_preset); char buf[60]; sprintf(buf, _("FrequencySlot: %d (%g MHz)"), THIS->db.config.lora.channel_num, @@ -1712,7 +1712,7 @@ void TFTView_320x240::ui_event_language_button(lv_event_t *e) { lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone) { - lv_dropdown_set_selected(objects.settings_language_dropdown, THIS->language2val(THIS->db.uiConfig.language), LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_language_dropdown, THIS->language2val(THIS->db.uiConfig.language)); lv_obj_clear_flag(objects.settings_language_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.settings_language_dropdown); THIS->disablePanel(objects.controller_panel); @@ -1782,7 +1782,7 @@ void TFTView_320x240::ui_event_theme_button(lv_event_t *e) { lv_event_code_t event_code = lv_event_get_code(e); if (event_code == LV_EVENT_CLICKED && THIS->activeSettings == eNone) { - lv_dropdown_set_selected(objects.settings_theme_dropdown, THIS->db.uiConfig.theme, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_theme_dropdown, THIS->db.uiConfig.theme); lv_obj_clear_flag(objects.settings_theme_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.settings_theme_dropdown); THIS->disablePanel(objects.controller_panel); @@ -1857,7 +1857,7 @@ void TFTView_320x240::ui_event_input_button(lv_event_t *e) lv_dropdown_set_options(objects.settings_mouse_input_dropdown, ptr_dropdown.c_str()); std::string current_ptr = THIS->inputdriver->getCurrentPointerDevice(); uint32_t ptrOption = lv_dropdown_get_option_index(objects.settings_mouse_input_dropdown, current_ptr.c_str()); - lv_dropdown_set_selected(objects.settings_mouse_input_dropdown, ptrOption, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_mouse_input_dropdown, ptrOption); std::vector kbd_events = THIS->inputdriver->getKeyboardDevices(); std::string kbd_dropdown = _("none"); @@ -1867,7 +1867,7 @@ void TFTView_320x240::ui_event_input_button(lv_event_t *e) lv_dropdown_set_options(objects.settings_keyboard_input_dropdown, kbd_dropdown.c_str()); std::string current_kbd = THIS->inputdriver->getCurrentKeyboardDevice(); uint32_t kbdOption = lv_dropdown_get_option_index(objects.settings_keyboard_input_dropdown, current_kbd.c_str()); - lv_dropdown_set_selected(objects.settings_keyboard_input_dropdown, kbdOption, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_keyboard_input_dropdown, kbdOption); lv_dropdown_get_selected_str(objects.settings_keyboard_input_dropdown, THIS->old_val1_scratch, sizeof(old_val1_scratch)); lv_dropdown_get_selected_str(objects.settings_mouse_input_dropdown, THIS->old_val2_scratch, sizeof(old_val2_scratch)); @@ -1898,7 +1898,7 @@ void TFTView_320x240::ui_event_alert_button(lv_event_t *e) } } - lv_dropdown_set_selected(objects.settings_ringtone_dropdown, THIS->db.uiConfig.ring_tone_id - 1, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_ringtone_dropdown, THIS->db.uiConfig.ring_tone_id - 1); lv_obj_clear_flag(objects.settings_alert_buzzer_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.settings_alert_buzzer_switch); THIS->disablePanel(objects.controller_panel); @@ -2545,7 +2545,7 @@ void TFTView_320x240::loadMap(void) for (auto it : mapStyles) { lv_dropdown_add_option(objects.map_style_dropdown, it.c_str(), pos); if (it == db.uiConfig.map_data.style) { - lv_dropdown_set_selected(objects.map_style_dropdown, pos, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.map_style_dropdown, pos); MapTileSettings::setTileStyle(db.uiConfig.map_data.style); savedStyleOK = true; } @@ -2554,7 +2554,7 @@ void TFTView_320x240::loadMap(void) if (!savedStyleOK) { // no such style on SD, pick first one we found char style[20]; - lv_dropdown_set_selected(objects.map_style_dropdown, 0, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.map_style_dropdown, 0); lv_dropdown_get_selected_str(objects.map_style_dropdown, style, sizeof(style)); MapTileSettings::setTileStyle(style); } @@ -2699,7 +2699,7 @@ void TFTView_320x240::ui_event_signal_scanner_node(lv_event_t *e) { THIS->chooseNodeSignalScanner = true; THIS->selectedHops = lv_dropdown_get_selected(objects.nodes_filter_hops_dropdown); - lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, 7, LV_ANIM_OFF); // 0 hops away + lv_dropdown_set_selected(objects.nodes_filter_hops_dropdown, 7); // 0 hops away THIS->ui_set_active(objects.nodes_button, objects.nodes_panel, objects.top_nodes_panel); THIS->updateNodesFiltered(true); THIS->updateNodesStatus(); @@ -3230,7 +3230,7 @@ void TFTView_320x240::ui_event_statistics_table(lv_event_t *e) void TFTView_320x240::requestSetup(void) { ui_set_active(objects.settings_button, objects.initial_setup_panel, objects.top_setup_panel); - lv_dropdown_set_selected(objects.setup_region_dropdown, 0, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.setup_region_dropdown, 0); lv_obj_clear_flag(objects.initial_setup_panel, LV_OBJ_FLAG_HIDDEN); lv_group_focus_obj(objects.setup_region_dropdown); THIS->disablePanel(objects.controller_panel); @@ -3524,7 +3524,7 @@ void TFTView_320x240::setLocale(meshtastic_Language lang) void TFTView_320x240::setLanguage(meshtastic_Language lang) { char buf1[20], buf2[40]; - lv_dropdown_set_selected(objects.settings_language_dropdown, language2val(lang), LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_language_dropdown, language2val(lang)); lv_dropdown_get_selected_str(objects.settings_language_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Language: %s"), buf1); lv_label_set_text(objects.basic_settings_language_label, buf2); @@ -3561,7 +3561,7 @@ void TFTView_320x240::setBrightness(uint32_t brightness) void TFTView_320x240::setTheme(uint32_t value) { char buf1[30], buf2[30]; - lv_dropdown_set_selected(objects.settings_theme_dropdown, value, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_theme_dropdown, value); lv_dropdown_get_selected_str(objects.settings_theme_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Theme: %s"), buf1); lv_label_set_text(objects.basic_settings_theme_label, buf2); @@ -3670,7 +3670,7 @@ void TFTView_320x240::ui_event_ok(lv_event_t *e) uint32_t numChannels = LoRaPresets::getNumChannels(region, THIS->db.config.lora.modem_preset); // if (numChannels == 0) { // // region not possible for selected preset, revert - // lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1, LV_ANIM_OFF); + // lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1); // return; // } @@ -3759,7 +3759,7 @@ void TFTView_320x240::ui_event_ok(lv_event_t *e) uint32_t numChannels = LoRaPresets::getNumChannels(region, THIS->db.config.lora.modem_preset); if (numChannels == 0) { // region not possible for selected preset, revert - lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_region_dropdown, THIS->db.config.lora.region - 1); return; } @@ -4246,7 +4246,7 @@ void TFTView_320x240::ui_event_modem_preset_dropdown(lv_event_t *e) uint32_t numChannels = LoRaPresets::getNumChannels(THIS->db.config.lora.region, preset); if (preset == meshtastic_Config_LoRaConfig_ModemPreset_VERY_LONG_SLOW || numChannels == 0) { // preset deprecated or not possible for this region, revert - lv_dropdown_set_selected(dropdown, THIS->db.config.lora.modem_preset, LV_ANIM_OFF); + lv_dropdown_set_selected(dropdown, THIS->db.config.lora.modem_preset); numChannels = LoRaPresets::getNumChannels(THIS->db.config.lora.region, THIS->db.config.lora.modem_preset); return; } @@ -4649,7 +4649,7 @@ void TFTView_320x240::updateNode(uint32_t nodeNum, uint8_t ch, const meshtastic_ char buf1[30], buf2[40]; lv_dropdown_set_selected(objects.settings_device_role_dropdown, - role2val(meshtastic_Config_DeviceConfig_Role(cfg.role)), LV_ANIM_OFF); + role2val(meshtastic_Config_DeviceConfig_Role(cfg.role))); lv_dropdown_get_selected_str(objects.settings_device_role_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Device Role: %s"), buf1); lv_label_set_text(objects.basic_settings_role_label, buf2); @@ -5751,7 +5751,7 @@ void TFTView_320x240::updateDeviceConfig(const meshtastic_Config_DeviceConfig &c db.config.has_device = true; char buf1[30], buf2[40]; - lv_dropdown_set_selected(objects.settings_device_role_dropdown, role2val(cfg.role), LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_device_role_dropdown, role2val(cfg.role)); lv_dropdown_get_selected_str(objects.settings_device_role_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Device Role: %s"), buf1); lv_label_set_text(objects.basic_settings_role_label, buf2); @@ -5809,7 +5809,7 @@ void TFTView_320x240::updateLoRaConfig(const meshtastic_Config_LoRaConfig &cfg) lv_label_set_text(objects.basic_settings_region_label, region); char buf1[20], buf2[32]; - lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, cfg.modem_preset, LV_ANIM_OFF); + lv_dropdown_set_selected(objects.settings_modem_preset_dropdown, cfg.modem_preset); lv_dropdown_get_selected_str(objects.settings_modem_preset_dropdown, buf1, sizeof(buf1)); lv_snprintf(buf2, sizeof(buf2), _("Modem Preset: %s"), buf1); lv_label_set_text(objects.basic_settings_modem_preset_label, buf2);