From 2642d07a2f8a426d9ec5a2d8fda44ceb29caf93d Mon Sep 17 00:00:00 2001 From: Manuel <71137295+mverch67@users.noreply.github.com> Date: Sat, 29 Mar 2025 14:52:40 +0100 Subject: [PATCH] customizable boot logo (#108) --- README.md | 3 +- generated/ui_320x240/screens.c | 180 +-- generated/ui_320x240/screens.h | 6 +- include/util/FileLoader.h | 30 + source/graphics/TFT/TFTView_320x240.cpp | 13 +- source/util/FileLoader.cpp | 106 ++ studio/320x240/TFT320x240.eez-project | 1377 ++++++++++++----------- 7 files changed, 968 insertions(+), 747 deletions(-) create mode 100644 include/util/FileLoader.h create mode 100644 source/util/FileLoader.cpp diff --git a/README.md b/README.md index 6aa2f46..9245a9d 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Graphics using LVGL library - [x] Slovenian translation - [x] Turkish translation - [x] Greek translation + - [x] Ukrainian translation - [ ] Support dynamic OLED / Color(TFT) selection - [x] Add support for UI scaling and try eliminate fixed positioning (lvgl v9) - [x] Allow co-existence of generated files/views by different eez-studio projects @@ -101,7 +102,7 @@ Graphics using LVGL library ### Meshtastic UI (general) - [x] Boot screen - - [ ] Customizable boot screen + - [x] Customizable boot screen - [x] Home Screen - [x] Messages info - [x] Nodes info diff --git a/generated/ui_320x240/screens.c b/generated/ui_320x240/screens.c index 8878b31..f694589 100644 --- a/generated/ui_320x240/screens.c +++ b/generated/ui_320x240/screens.c @@ -32,7 +32,9 @@ void create_screen_boot_screen() { lv_arc_set_range(obj, 0, 360); lv_arc_set_value(obj, 360); lv_arc_set_bg_start_angle(obj, 0); + lv_arc_set_bg_end_angle(obj, 0); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_style_arc_color(obj, lv_color_hex(0xff000000), LV_PART_INDICATOR | LV_STATE_DEFAULT); lv_obj_set_style_arc_width(obj, 8, LV_PART_INDICATOR | LV_STATE_DEFAULT); lv_obj_set_style_arc_color(obj, lv_color_hex(0xff67ea94), LV_PART_MAIN | LV_STATE_DEFAULT); @@ -47,12 +49,10 @@ void create_screen_boot_screen() { lv_obj_set_pos(obj, 0, LV_PCT(-10)); lv_obj_set_size(obj, 100, 50); lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_image_src(obj, &img_meshtastic_boot_logo_image, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_max_width(obj, 210, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_max_height(obj, 120, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_shadow_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - lv_obj_set_style_bg_image_recolor_opa(obj, 255, LV_PART_MAIN | LV_STATE_DEFAULT); } { // MeshtasticUrl @@ -73,6 +73,15 @@ void create_screen_boot_screen() { lv_label_set_text(obj, ""); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } + { + // bootLogo + lv_obj_t *obj = lv_img_create(parent_obj); + objects.boot_logo = obj; + lv_obj_set_pos(obj, 0, -24); + lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT); + lv_img_set_src(obj, &img_meshtastic_boot_logo_image); + lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); + } { // bluetoothButton lv_obj_t *obj = lv_btn_create(parent_obj); @@ -190,6 +199,8 @@ void create_screen_boot_screen() { } } } + + tick_screen_boot_screen(); } void tick_screen_boot_screen() { @@ -713,7 +724,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_AUTO); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); add_style_panel_style(obj); lv_obj_set_style_pad_top(obj, 5, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_left(obj, 8, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -886,7 +897,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_AUTO); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); add_style_panel_style(obj); lv_obj_set_style_layout(obj, LV_LAYOUT_FLEX, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_flex_flow(obj, LV_FLEX_FLOW_COLUMN, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1120,7 +1131,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_SCROLLABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_ACTIVE); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); add_style_panel_style(obj); lv_obj_set_style_pad_top(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1164,7 +1175,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_HOR); + lv_obj_set_scroll_dir(obj, LV_DIR_HOR); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_align(obj, LV_TEXT_ALIGN_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1573,7 +1584,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_layout(obj, LV_LAYOUT_NONE, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1591,7 +1602,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, 0, 0); lv_obj_set_size(obj, LV_PCT(100), LV_PCT(100)); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_tab_view_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_align(obj, LV_TEXT_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -1602,7 +1613,7 @@ void create_screen_main_screen() { lv_obj_t *obj = lv_tabview_add_tab(parent_obj, _("Settings")); objects.tab_page_basic_settings = obj; lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_ACTIVE); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); lv_obj_set_style_layout(obj, LV_LAYOUT_FLEX, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_flex_flow(obj, LV_FLEX_FLOW_COLUMN, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 10, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2082,7 +2093,7 @@ void create_screen_main_screen() { lv_obj_t *obj = lv_tabview_add_tab(parent_obj, _("Tools")); objects.tab_page_tools = obj; lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_ACTIVE); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); lv_obj_set_style_layout(obj, LV_LAYOUT_FLEX, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_flex_flow(obj, LV_FLEX_FLOW_COLUMN, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 10, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2279,8 +2290,8 @@ void create_screen_main_screen() { objects.top_panel = obj; lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); add_style_top_panel_style(obj); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); { @@ -2319,7 +2330,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2356,7 +2367,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2393,7 +2404,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2430,7 +2441,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2466,7 +2477,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -2501,7 +2512,7 @@ void create_screen_main_screen() { lv_obj_set_pos(obj, LV_PCT(12), 0); lv_obj_set_size(obj, LV_PCT(80), LV_PCT(10)); lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); - lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); + lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICK_FOCUSABLE|LV_OBJ_FLAG_GESTURE_BUBBLE|LV_OBJ_FLAG_PRESS_LOCK|LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW|LV_OBJ_FLAG_SNAPPABLE); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); add_style_top_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_TOP_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -3076,7 +3087,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 227); + create_user_widget_ok_cancel_widget(obj, 228); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3090,7 +3101,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_CLICKABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_AUTO); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); add_style_settings_panel_style(obj); lv_obj_set_style_border_width(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_radius(obj, 12, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -3388,7 +3399,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 248); + create_user_widget_ok_cancel_widget(obj, 249); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3433,7 +3444,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 254); + create_user_widget_ok_cancel_widget(obj, 255); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3511,7 +3522,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 262); + create_user_widget_ok_cancel_widget(obj, 263); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3557,7 +3568,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 268); + create_user_widget_ok_cancel_widget(obj, 269); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3668,7 +3679,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 277); + create_user_widget_ok_cancel_widget(obj, 278); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3732,7 +3743,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 284); + create_user_widget_ok_cancel_widget(obj, 285); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3777,7 +3788,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 290); + create_user_widget_ok_cancel_widget(obj, 291); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3842,7 +3853,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 297); + create_user_widget_ok_cancel_widget(obj, 298); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -3948,7 +3959,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 305); + create_user_widget_ok_cancel_widget(obj, 306); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } { @@ -4033,7 +4044,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 313); + create_user_widget_ok_cancel_widget(obj, 314); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4108,7 +4119,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 320); + create_user_widget_ok_cancel_widget(obj, 321); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4153,7 +4164,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 326); + create_user_widget_ok_cancel_widget(obj, 327); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4228,7 +4239,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 333); + create_user_widget_ok_cancel_widget(obj, 334); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4258,7 +4269,7 @@ void create_screen_main_screen() { objects.settings_backup_checkbox = obj; lv_obj_set_pos(obj, 5, -1); lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT); - lv_checkbox_set_text(obj, "Backup"); + lv_checkbox_set_text(obj, _("Backup")); lv_obj_set_style_bg_color(obj, lv_color_hex(0xff67ea94), LV_PART_INDICATOR | LV_STATE_CHECKED); } { @@ -4267,7 +4278,7 @@ void create_screen_main_screen() { objects.settings_restore_checkbox = obj; lv_obj_set_pos(obj, 5, 25); lv_obj_set_size(obj, LV_SIZE_CONTENT, LV_SIZE_CONTENT); - lv_checkbox_set_text(obj, "Restore"); + lv_checkbox_set_text(obj, _("Restore")); lv_obj_set_style_bg_color(obj, lv_color_hex(0xff67ea94), LV_PART_INDICATOR | LV_STATE_CHECKED); } { @@ -4293,7 +4304,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 341); + create_user_widget_ok_cancel_widget(obj, 342); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4337,7 +4348,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 347); + create_user_widget_ok_cancel_widget(obj, 348); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -4482,7 +4493,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 360); + create_user_widget_ok_cancel_widget(obj, 361); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } { @@ -4808,7 +4819,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_HOR); + lv_obj_set_scroll_dir(obj, LV_DIR_HOR); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_align(obj, LV_TEXT_ALIGN_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5000,7 +5011,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_HOR); + lv_obj_set_scroll_dir(obj, LV_DIR_HOR); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_RIGHT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_align(obj, LV_TEXT_ALIGN_LEFT, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5039,7 +5050,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_left(obj, 8, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5062,7 +5073,7 @@ void create_screen_main_screen() { lv_obj_set_size(obj, 202, 202); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_bg_opa(obj, 200, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5318,7 +5329,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_CENTER, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -5852,7 +5863,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_ACTIVE); - lv_obj_set_scroll_snap_x(obj, LV_DIR_VER); + lv_obj_set_scroll_dir(obj, LV_DIR_VER); add_style_panel_style(obj); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_left(obj, 4, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -6011,7 +6022,7 @@ void create_screen_main_screen() { lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_CHAIN|LV_OBJ_FLAG_HIDDEN); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_pad_left(obj, 14, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_pad_top(obj, 1, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -6027,7 +6038,7 @@ void create_screen_main_screen() { lv_obj_set_size(obj, 240, 206); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_CHAIN_HOR|LV_OBJ_FLAG_SCROLL_CHAIN_VER|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_MOMENTUM|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_settings_panel_style(obj); lv_obj_set_style_border_width(obj, 2, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_radius(obj, 12, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -6155,7 +6166,7 @@ void create_screen_main_screen() { lv_obj_set_style_pad_bottom(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); - create_user_widget_ok_cancel_widget(obj, 466); + create_user_widget_ok_cancel_widget(obj, 467); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); } } @@ -6212,27 +6223,29 @@ void create_screen_main_screen() { lv_obj_set_style_max_width(obj, 600, LV_PART_MAIN | LV_STATE_DEFAULT); } } + + tick_screen_main_screen(); } void tick_screen_main_screen() { - tick_user_widget_ok_cancel_widget(227); - tick_user_widget_ok_cancel_widget(248); - tick_user_widget_ok_cancel_widget(254); - tick_user_widget_ok_cancel_widget(262); - tick_user_widget_ok_cancel_widget(268); - tick_user_widget_ok_cancel_widget(277); - tick_user_widget_ok_cancel_widget(284); - tick_user_widget_ok_cancel_widget(290); - tick_user_widget_ok_cancel_widget(297); - tick_user_widget_ok_cancel_widget(305); - tick_user_widget_ok_cancel_widget(313); - tick_user_widget_ok_cancel_widget(320); - tick_user_widget_ok_cancel_widget(326); - tick_user_widget_ok_cancel_widget(333); - tick_user_widget_ok_cancel_widget(341); - tick_user_widget_ok_cancel_widget(347); - tick_user_widget_ok_cancel_widget(360); - tick_user_widget_ok_cancel_widget(466); + tick_user_widget_ok_cancel_widget(228); + tick_user_widget_ok_cancel_widget(249); + tick_user_widget_ok_cancel_widget(255); + tick_user_widget_ok_cancel_widget(263); + tick_user_widget_ok_cancel_widget(269); + tick_user_widget_ok_cancel_widget(278); + tick_user_widget_ok_cancel_widget(285); + tick_user_widget_ok_cancel_widget(291); + tick_user_widget_ok_cancel_widget(298); + tick_user_widget_ok_cancel_widget(306); + tick_user_widget_ok_cancel_widget(314); + tick_user_widget_ok_cancel_widget(321); + tick_user_widget_ok_cancel_widget(327); + tick_user_widget_ok_cancel_widget(334); + tick_user_widget_ok_cancel_widget(342); + tick_user_widget_ok_cancel_widget(348); + tick_user_widget_ok_cancel_widget(361); + tick_user_widget_ok_cancel_widget(467); } void create_screen_blank_screen() { @@ -6258,6 +6271,8 @@ void create_screen_blank_screen() { lv_obj_set_style_radius(obj, 0, LV_PART_MAIN | LV_STATE_PRESSED); } } + + tick_screen_blank_screen(); } void tick_screen_blank_screen() { @@ -6335,6 +6350,8 @@ void create_screen_lock_screen() { lv_obj_set_style_text_color(obj, lv_color_hex(0xffe0e0e0), LV_PART_MAIN | LV_STATE_DEFAULT); } } + + tick_screen_lock_screen(); } void tick_screen_lock_screen() { @@ -6347,6 +6364,8 @@ void create_screen_calibration_screen() { lv_obj_set_size(obj, 320, 240); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE); lv_obj_set_style_bg_color(obj, lv_color_hex(0xff67ea94), LV_PART_MAIN | LV_STATE_DEFAULT); + + tick_screen_calibration_screen(); } void tick_screen_calibration_screen() { @@ -6365,7 +6384,7 @@ void create_user_widget_ok_cancel_widget(lv_obj_t *parent_obj, int startWidgetIn lv_obj_add_flag(obj, LV_OBJ_FLAG_SCROLL_ONE); lv_obj_clear_flag(obj, LV_OBJ_FLAG_SCROLLABLE|LV_OBJ_FLAG_SCROLL_ELASTIC|LV_OBJ_FLAG_SCROLL_WITH_ARROW); lv_obj_set_scrollbar_mode(obj, LV_SCROLLBAR_MODE_OFF); - lv_obj_set_scroll_snap_x(obj, LV_DIR_NONE); + lv_obj_set_scroll_dir(obj, LV_DIR_NONE); add_style_panel_style(obj); lv_obj_set_style_align(obj, LV_ALIGN_BOTTOM_MID, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_border_width(obj, 0, LV_PART_MAIN | LV_STATE_DEFAULT); @@ -6430,6 +6449,22 @@ void tick_user_widget_ok_cancel_widget(int startWidgetIndex) { } + +typedef void (*tick_screen_func_t)(); +tick_screen_func_t tick_screen_funcs[] = { + tick_screen_boot_screen, + tick_screen_main_screen, + tick_screen_blank_screen, + tick_screen_lock_screen, + tick_screen_calibration_screen, +}; +void tick_screen(int screen_index) { + tick_screen_funcs[screen_index](); +} +void tick_screen_by_id(enum ScreensEnum screenId) { + tick_screen_funcs[screenId - 1](); +} + void create_screens() { lv_disp_t *dispp = lv_disp_get_default(); lv_theme_t *theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED), false, LV_FONT_DEFAULT); @@ -6441,18 +6476,3 @@ void create_screens() { create_screen_lock_screen(); create_screen_calibration_screen(); } - -typedef void (*tick_screen_func_t)(); - -tick_screen_func_t tick_screen_funcs[] = { - tick_screen_boot_screen, - tick_screen_main_screen, - tick_screen_blank_screen, - tick_screen_lock_screen, - tick_screen_calibration_screen, - 0, -}; - -void tick_screen(int screen_index) { - tick_screen_funcs[screen_index](); -} diff --git a/generated/ui_320x240/screens.h b/generated/ui_320x240/screens.h index b6a5def..833f648 100644 --- a/generated/ui_320x240/screens.h +++ b/generated/ui_320x240/screens.h @@ -75,6 +75,7 @@ typedef struct _objects_t { lv_obj_t *boot_logo_button; lv_obj_t *meshtastic_url; lv_obj_t *firmware_label; + lv_obj_t *boot_logo; lv_obj_t *bluetooth_button; lv_obj_t *reboot_panel; lv_obj_t *cancel_reboot_button; @@ -551,7 +552,6 @@ enum ScreensEnum { SCREEN_ID_BLANK_SCREEN = 3, SCREEN_ID_LOCK_SCREEN = 4, SCREEN_ID_CALIBRATION_SCREEN = 5, - SCREEN_ID_OK_CANCEL_WIDGET = 6, }; void create_screen_boot_screen(); @@ -572,8 +572,10 @@ void tick_screen_calibration_screen(); void create_user_widget_ok_cancel_widget(lv_obj_t *parent_obj, int startWidgetIndex); void tick_user_widget_ok_cancel_widget(int startWidgetIndex); -void create_screens(); +void tick_screen_by_id(enum ScreensEnum screenId); void tick_screen(int screen_index); + +void create_screens(); #ifdef __cplusplus diff --git a/include/util/FileLoader.h b/include/util/FileLoader.h new file mode 100644 index 0000000..e83afd5 --- /dev/null +++ b/include/util/FileLoader.h @@ -0,0 +1,30 @@ +#pragma once + +#include "FS.h" +#include "lvgl.h" + +#define FL_DRIVE_LETTER "L:" + +class FileLoader +{ + public: + FileLoader(){}; + static void init(fs::FS *fs); + static bool loadImage(lv_obj_t *img, const char *path); + static bool loadBootImage(lv_obj_t *img); + + private: + static void *fs_open(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode); + static lv_fs_res_t fs_close(lv_fs_drv_t *drv, void *file_p); + static lv_fs_res_t fs_read(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br); + static lv_fs_res_t fs_write(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw); + static lv_fs_res_t fs_seek(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence); + static lv_fs_res_t fs_size(lv_fs_drv_t *drv, void *file_p, uint32_t *size_p); + static lv_fs_res_t fs_tell(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p); + + typedef struct FileHandle { + File file; + } FileHandle; + + static fs::FS *_fs; +}; diff --git a/source/graphics/TFT/TFTView_320x240.cpp b/source/graphics/TFT/TFTView_320x240.cpp index 8c55878..0740eba 100644 --- a/source/graphics/TFT/TFTView_320x240.cpp +++ b/source/graphics/TFT/TFTView_320x240.cpp @@ -16,6 +16,7 @@ #include "lvgl_private.h" #include "styles.h" #include "ui.h" +#include "util/FileLoader.h" #include "util/ILog.h" #include #include @@ -28,7 +29,15 @@ #include #include -#ifdef ARCH_PORTDUINO +#if defined(ARCH_PORTDUINO) +#include "PortduinoFS.h" +fs::FS &fileSystem = PortduinoFS; +#else +#include "LittleFS.h" +fs::FS &fileSystem = LittleFS; +#endif + +#if defined(ARCH_PORTDUINO) #include "util/LinuxHelper.h" // #include "graphics/map/LinuxFileSystemService.h" #include "graphics/map/SDCardService.h" @@ -159,6 +168,8 @@ void TFTView_320x240::init(IClientBase *client) MeshtasticView::init(client); ui_init_boot(); + FileLoader::init(&fileSystem); + FileLoader::loadBootImage(objects.boot_logo); lv_label_set_text(objects.firmware_label, firmware_version); time(&lastrun60); diff --git a/source/util/FileLoader.cpp b/source/util/FileLoader.cpp new file mode 100644 index 0000000..9e2f771 --- /dev/null +++ b/source/util/FileLoader.cpp @@ -0,0 +1,106 @@ +#include "util/FileLoader.h" +#include "lvgl_private.h" +#include "util/ILog.h" + +fs::FS *FileLoader::_fs = nullptr; + +void FileLoader::init(fs::FS *fs) +{ + _fs = fs; + static lv_fs_drv_t drv; + lv_fs_drv_init(&drv); + + drv.letter = FL_DRIVE_LETTER[0]; + drv.cache_size = 32768; + drv.ready_cb = nullptr; + drv.open_cb = fs_open; + drv.close_cb = fs_close; + drv.read_cb = fs_read; + drv.write_cb = fs_write; + drv.seek_cb = fs_seek; + drv.tell_cb = fs_tell; + drv.dir_open_cb = nullptr; + drv.dir_read_cb = nullptr; + drv.dir_close_cb = nullptr; + lv_fs_drv_register(&drv); +} + +void *FileLoader::fs_open(lv_fs_drv_t *drv, const char *path, lv_fs_mode_t mode) +{ + File file = _fs->open(path, mode == LV_FS_MODE_RD ? FILE_READ : FILE_WRITE); + if (!file) { + return nullptr; + } else { + FileHandle *lf = new FileHandle{file}; + return static_cast(lf); + } +} + +lv_fs_res_t FileLoader::fs_close(lv_fs_drv_t *drv, void *file_p) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + FileHandle *lf = static_cast(file_p); + if (lf->file) { + lf->file.close(); + delete lf; + } + return LV_FS_RES_OK; +} + +lv_fs_res_t FileLoader::fs_read(lv_fs_drv_t *drv, void *file_p, void *buf, uint32_t btr, uint32_t *br) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + *br = static_cast(file_p)->file.read((uint8_t *)buf, btr); + return (*br <= 0) ? LV_FS_RES_UNKNOWN : LV_FS_RES_OK; +} + +lv_fs_res_t FileLoader::fs_write(lv_fs_drv_t *drv, void *file_p, const void *buf, uint32_t btw, uint32_t *bw) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + *bw = static_cast(file_p)->file.write((uint8_t *)buf, btw); + return (*bw <= 0) ? LV_FS_RES_UNKNOWN : LV_FS_RES_OK; +} + +lv_fs_res_t FileLoader::fs_seek(lv_fs_drv_t *drv, void *file_p, uint32_t pos, lv_fs_whence_t whence) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + return static_cast(file_p)->file.seek(pos, (SeekMode)whence) ? LV_FS_RES_OK : LV_FS_RES_UNKNOWN; +} + +lv_fs_res_t FileLoader::fs_size(lv_fs_drv_t *drv, void *file_p, uint32_t *size_p) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + *size_p = static_cast(file_p)->file.size(); + return LV_FS_RES_OK; +} + +lv_fs_res_t FileLoader::fs_tell(lv_fs_drv_t *drv, void *file_p, uint32_t *pos_p) +{ + if (file_p == nullptr) { + return LV_FS_RES_INV_PARAM; + } + *pos_p = static_cast(file_p)->file.position(); + return (int32_t)(*pos_p) < 0 ? LV_FS_RES_UNKNOWN : LV_FS_RES_OK; +} + +bool FileLoader::loadImage(lv_obj_t *img, const char *path) +{ + lv_image_set_src(img, path); + return lv_image_get_src((lv_obj_t *)img) != nullptr; +} + +bool FileLoader::loadBootImage(lv_obj_t *img) +{ + lv_image_set_src(img, FL_DRIVE_LETTER "/boot/logo.png"); + return lv_image_get_src((lv_obj_t *)img) != nullptr; +} diff --git a/studio/320x240/TFT320x240.eez-project b/studio/320x240/TFT320x240.eez-project index 32ec0ee..8044b4f 100644 --- a/studio/320x240/TFT320x240.eez-project +++ b/studio/320x240/TFT320x240.eez-project @@ -116,6 +116,709 @@ } ], "userPages": [ + { + "objID": "3cc480fa-19db-4465-a060-8b648dd7e6e2", + "components": [ + { + "objID": "f90b60d0-0665-1f2d-d7bb-8672ca4b6e2e", + "type": "LVGLScreenWidget", + "left": 0, + "top": 0, + "width": 320, + "height": 240, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "fb6a8ebf-ffb2-c572-e37b-06078605c72c", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "timeline": [], + "eventHandlers": [], + "leftUnit": "px", + "topUnit": "px", + "widthUnit": "px", + "heightUnit": "px", + "children": [ + { + "objID": "0c995f56-29c7-4e0a-d405-ad351a9942d9", + "type": "LVGLArcWidget", + "left": 1, + "top": -8, + "width": 140, + "height": 140, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "8e670374-907b-4f45-e03e-95841a5e632c", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "bootLogoArc", + "leftUnit": "px", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "", + "hiddenFlag": true, + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "flagScrollbarMode": "", + "flagScrollDirection": "", + "scrollSnapX": "", + "scrollSnapY": "", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "6aaaed9e-e19f-4da2-9a5e-147b76aa9bb8", + "definition": { + "INDICATOR": { + "DEFAULT": { + "arc_color": "#000000", + "arc_width": 8 + } + }, + "MAIN": { + "DEFAULT": { + "arc_color": "#67EA94", + "arc_width": 8, + "align": "CENTER" + } + }, + "KNOB": { + "DEFAULT": { + "bg_opa": 0 + } + } + } + }, + "group": "", + "groupIndex": 0, + "rangeMin": 0, + "rangeMinType": "literal", + "rangeMax": 360, + "rangeMaxType": "literal", + "value": 360, + "valueType": "literal", + "bgStartAngle": 0, + "bgEndAngle": 0, + "mode": "NORMAL", + "rotation": 0 + }, + { + "objID": "ae9500a6-9493-4bd8-fe5e-443bcfdd7cc4", + "type": "LVGLButtonWidget", + "left": 0, + "top": -10, + "width": 100, + "height": 50, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "a2f83895-943b-443f-e949-46b6c3b80e5c", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "bootLogoButton", + "leftUnit": "px", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "flagScrollbarMode": "", + "flagScrollDirection": "", + "scrollSnapX": "", + "scrollSnapY": "", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "ae47e8e1-9236-42ca-8458-e873a2d5bc68", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "CENTER", + "max_width": 210, + "max_height": 120, + "shadow_width": 0, + "bg_opa": 0 + } + } + } + }, + "group": "", + "groupIndex": 0 + }, + { + "objID": "fdb8c13a-ee32-4840-92ce-77569803ee6a", + "type": "LVGLLabelWidget", + "left": 0, + "top": -15, + "width": 213, + "height": 26, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "b05d105d-10b8-4b56-df9a-e72c35c9bca4", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "timeline": [], + "eventHandlers": [], + "identifier": "MeshtasticUrl", + "leftUnit": "px", + "topUnit": "%", + "widthUnit": "content", + "heightUnit": "content", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "361f13db-4093-4fb2-ddef-675b661cc144", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "BOTTOM_MID", + "text_font": "montserrat_20" + } + } + } + }, + "groupIndex": 0, + "text": "www.meshtastic.org", + "textType": "literal", + "longMode": "WRAP", + "recolor": false + }, + { + "objID": "7d5fe9ac-02c0-4118-8efd-f0cf42aa3260", + "type": "LVGLLabelWidget", + "left": 0, + "top": -15, + "width": 0, + "height": 19, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "b1de63a5-ab3c-4540-e6cc-385f4d3cbe0d", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "timeline": [], + "eventHandlers": [], + "identifier": "FirmwareLabel", + "leftUnit": "px", + "topUnit": "px", + "widthUnit": "content", + "heightUnit": "content", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "0c98aadc-0b69-4275-ac79-1dbf59f3a150", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "BOTTOM_MID" + } + } + } + }, + "groupIndex": 0, + "text": "", + "textType": "literal", + "longMode": "WRAP", + "recolor": false + }, + { + "objID": "fbf231f4-2f31-443e-f3f7-9c0ebc3b80cc", + "type": "LVGLImageWidget", + "left": 0, + "top": -24, + "width": 99, + "height": 52, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "7499af2d-bb26-4fc5-ce1a-27b3e2b65e42", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "timeline": [], + "eventHandlers": [], + "identifier": "bootLogo", + "leftUnit": "px", + "topUnit": "px", + "widthUnit": "content", + "heightUnit": "content", + "children": [], + "widgetFlags": "ADV_HITTEST|CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlagType": "literal", + "flagScrollbarMode": "", + "flagScrollDirection": "", + "scrollSnapX": "", + "scrollSnapY": "", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "d91af209-e841-47e2-f813-97d259d6ad7c", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "CENTER" + } + } + } + }, + "group": "", + "groupIndex": 0, + "image": "meshtastic_boot_logo_image", + "setPivot": false, + "pivotX": 0, + "pivotY": 0, + "zoom": 256, + "angle": 0, + "innerAlign": "CENTER" + }, + { + "objID": "ccd9162a-e384-4ebf-9127-496e13fa3aaf", + "type": "LVGLButtonWidget", + "left": 0, + "top": -10, + "width": 80, + "height": 80, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "8a4c93fc-f9fe-4d6a-bc76-b522ecf2b4b5", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "timeline": [], + "eventHandlers": [], + "identifier": "bluetoothButton", + "leftUnit": "px", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlag": true, + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "flagScrollbarMode": "", + "flagScrollDirection": "", + "scrollSnapX": "", + "scrollSnapY": "", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "c2be567d-cb41-4eaf-bccf-d4299f574acc", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "CENTER", + "bg_img_src": "bluetooth_on_image", + "shadow_width": 0, + "bg_opa": 0, + "bg_img_recolor_opa": 255, + "bg_img_recolor": "#172ef8" + } + } + } + }, + "group": "", + "groupIndex": 0 + }, + { + "objID": "67614f32-6ae3-428c-906a-ca80e810e6c6", + "type": "LVGLPanelWidget", + "left": 0, + "top": 0, + "width": 100, + "height": 100, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "be20787a-7a0b-4ed5-c132-24be8baa51d1", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "RebootPanel", + "leftUnit": "%", + "topUnit": "%", + "widthUnit": "%", + "heightUnit": "%", + "children": [ + { + "objID": "57afcacb-beb8-4b44-f46f-9f057e865800", + "type": "LVGLButtonWidget", + "left": 0, + "top": 0, + "width": 100, + "height": 100, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "4aa6c41e-f4f5-4c70-fdae-ce35719d0c46", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "CancelRebootButton", + "leftUnit": "px", + "topUnit": "px", + "widthUnit": "%", + "heightUnit": "%", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "698ce875-a086-4a42-be4f-081095112c24", + "definition": { + "MAIN": { + "DEFAULT": { + "bg_color": "#67EA94", + "shadow_width": 0, + "shadow_ofs_y": 0, + "align": "CENTER", + "radius": 0 + }, + "PRESSED": { + "bg_color": "#000000" + } + } + } + }, + "groupIndex": 0 + }, + { + "objID": "1eb78964-e019-489a-d2c9-827201580c85", + "type": "LVGLButtonWidget", + "left": 18, + "top": -10, + "width": 55, + "height": 55, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "ef3fb65c-148d-4fb4-b3f5-7cf8dcb2e299", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "RebootButton", + "leftUnit": "%", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "994fddb3-c909-4ce9-bd08-fbc1bbedcae2", + "definition": { + "MAIN": { + "CHECKED": { + "bg_color": "#229c00" + }, + "DEFAULT": { + "bg_img_src": "reboot_image", + "bg_color": "#e0e0e0", + "radius": 12, + "align": "LEFT_MID", + "shadow_width": 3, + "shadow_ofs_x": 1, + "shadow_ofs_y": 3, + "shadow_color": "#606060" + } + } + } + }, + "groupIndex": 0 + }, + { + "objID": "f9e5310c-8dd4-4046-fa39-b9c0171cf973", + "type": "LVGLButtonWidget", + "left": 0, + "top": -10, + "width": 55, + "height": 55, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "ec707b23-08c6-4da3-d6c2-eea535f4a710", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "progmodeButton", + "leftUnit": "%", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "e6cc7081-85ea-4922-b951-745e618460b8", + "definition": { + "MAIN": { + "CHECKED": { + "bg_color": "#229c00" + }, + "DEFAULT": { + "bg_img_src": "reboot_BT_on_image", + "bg_color": "#e0e0e0", + "radius": 12, + "align": "CENTER", + "shadow_width": 3, + "shadow_ofs_x": 1, + "shadow_ofs_y": 3, + "shadow_color": "#606060", + "bg_img_recolor": "#2d2ff5", + "bg_img_recolor_opa": 255 + } + } + } + }, + "groupIndex": 0 + }, + { + "objID": "186dae5a-17ed-45f2-bb92-32fdd255c74c", + "type": "LVGLButtonWidget", + "left": -18, + "top": -10, + "width": 55, + "height": 55, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "f6900311-7ba0-4ee2-fa5b-5439c5de001a", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "ShutdownButton", + "leftUnit": "%", + "topUnit": "%", + "widthUnit": "px", + "heightUnit": "px", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "abfb9ebc-5f5b-45be-cdfb-f4482dadcd73", + "definition": { + "MAIN": { + "CHECKED": { + "align": "LEFT_MID" + }, + "DEFAULT": { + "bg_img_src": "shutdown_image", + "bg_color": "#e0e0e0", + "shadow_width": 3, + "shadow_ofs_y": 3, + "radius": 12, + "align": "RIGHT_MID", + "shadow_ofs_x": 1, + "shadow_color": "#606060" + } + } + } + }, + "groupIndex": 0 + }, + { + "objID": "dad949a0-3e96-445c-e9b6-8adc3635c92d", + "type": "LVGLLabelWidget", + "left": 0, + "top": -25, + "width": 218, + "height": 26, + "customInputs": [], + "customOutputs": [], + "style": { + "objID": "232ef011-e268-43fe-d2cb-60c126faf10f", + "useStyle": "default", + "conditionalStyles": [], + "childStyles": [] + }, + "hiddenInEditor": false, + "timeline": [], + "eventHandlers": [], + "identifier": "", + "leftUnit": "px", + "topUnit": "%", + "widthUnit": "content", + "heightUnit": "content", + "children": [], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlagType": "literal", + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "81603f9f-1dee-48e5-c121-15e600dc3eb6", + "definition": { + "MAIN": { + "DEFAULT": { + "align": "BOTTOM_MID", + "text_font": "montserrat_20", + "text_color": "#000000" + } + } + } + }, + "groupIndex": 0, + "text": " www.meshtastic.org", + "textType": "literal", + "longMode": "WRAP", + "recolor": false + } + ], + "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "hiddenFlag": true, + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "6017d46b-563c-4b03-840a-f452b65adfd2", + "definition": { + "MAIN": { + "DEFAULT": { + "bg_color": "#000000", + "border_width": 0, + "radius": 12, + "align": "TOP_MID", + "bg_opa": 255, + "text_color": "#ffffff", + "layout": "NONE", + "pad_top": 0, + "pad_bottom": 0, + "pad_left": 0, + "pad_right": 0 + }, + "PRESSED": { + "bg_color": "#000000", + "pad_top": 0, + "pad_bottom": 0, + "pad_left": 0, + "pad_right": 0, + "pad_row": 0, + "pad_column": 0 + } + } + } + }, + "groupIndex": 0 + } + ], + "widgetFlags": "PRESS_LOCK|CLICK_FOCUSABLE|GESTURE_BUBBLE|SNAPPABLE|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER", + "hiddenFlagType": "literal", + "clickableFlag": true, + "clickableFlagType": "literal", + "checkedStateType": "literal", + "disabledStateType": "literal", + "states": "", + "localStyles": { + "objID": "8eb86917-c831-b762-5685-8d01972e8a22", + "definition": { + "MAIN": { + "DEFAULT": { + "text_font": "montserrat_14", + "bg_color": "#67ea94" + } + } + } + }, + "groupIndex": 0 + } + ], + "connectionLines": [], + "localVariables": [], + "userProperties": [], + "name": "BootScreen", + "left": 0, + "top": 0, + "width": 320, + "height": 240, + "isUsedAsUserWidget": false, + "createAtStart": true, + "deleteOnScreenUnload": false + }, { "objID": "4b40eba7-b31a-468a-b887-11dfd0b6637f", "components": [ @@ -7686,13 +8389,12 @@ "recolor": false } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": false, "hiddenFlagType": "literal", "clickableFlag": true, "clickableFlagType": "literal", "flagScrollbarMode": "off", - "flagScrollDirection": "none", "checkedStateType": "literal", "disabledStateType": "literal", "states": "", @@ -7831,7 +8533,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -7975,7 +8677,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -8119,7 +8821,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -8156,7 +8858,7 @@ "conditionalStyles": [], "childStyles": [] }, - "hiddenInEditor": false, + "hiddenInEditor": true, "timeline": [], "eventHandlers": [], "identifier": "TopSettingsPanel", @@ -8180,7 +8882,7 @@ "conditionalStyles": [], "childStyles": [] }, - "hiddenInEditor": false, + "hiddenInEditor": true, "timeline": [], "eventHandlers": [], "identifier": "TopBasicSettingsLabel", @@ -8226,7 +8928,7 @@ "conditionalStyles": [], "childStyles": [] }, - "hiddenInEditor": false, + "hiddenInEditor": true, "timeline": [], "eventHandlers": [], "identifier": "TopBasicSettingsImage", @@ -8262,7 +8964,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "CLICK_FOCUSABLE", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -8405,7 +9107,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -8548,7 +9250,7 @@ "innerAlign": "CENTER" } ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", + "widgetFlags": "", "hiddenFlag": true, "hiddenFlagType": "literal", "clickableFlag": true, @@ -14434,7 +15136,7 @@ } }, "groupIndex": 0, - "options": "English\nDeutsch\nΕλληνικά\nEspañol\nFrançais\nItaliano\nNederlands\nNorsk\nPolski\nPortuguês\nРусский\nSlovenščina\nSrpski\nSuomalainen\nSvenska\nTürkçe", + "options": "English\nDeutsch\nΕλληνικά\nEspañol\nFrançais\nItaliano\nNederlands\nNorsk\nPolski\nPortuguês\nРусский\nSlovenščina\nSrpski\nSuomalainen\nSvenska\nTürkçe\nУкраїнська", "optionsType": "literal", "selected": 0, "selectedType": "literal", @@ -21515,657 +22217,6 @@ "createAtStart": true, "deleteOnScreenUnload": false }, - { - "objID": "3cc480fa-19db-4465-a060-8b648dd7e6e2", - "components": [ - { - "objID": "f90b60d0-0665-1f2d-d7bb-8672ca4b6e2e", - "type": "LVGLScreenWidget", - "left": 0, - "top": 0, - "width": 320, - "height": 240, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "fb6a8ebf-ffb2-c572-e37b-06078605c72c", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "timeline": [], - "eventHandlers": [], - "leftUnit": "px", - "topUnit": "px", - "widthUnit": "px", - "heightUnit": "px", - "children": [ - { - "objID": "0c995f56-29c7-4e0a-d405-ad351a9942d9", - "type": "LVGLArcWidget", - "left": 1, - "top": -8, - "width": 140, - "height": 140, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "8e670374-907b-4f45-e03e-95841a5e632c", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "timeline": [], - "eventHandlers": [], - "identifier": "bootLogoArc", - "leftUnit": "px", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlag": false, - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "flagScrollbarMode": "", - "flagScrollDirection": "", - "scrollSnapX": "", - "scrollSnapY": "", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "6aaaed9e-e19f-4da2-9a5e-147b76aa9bb8", - "definition": { - "INDICATOR": { - "DEFAULT": { - "arc_color": "#000000", - "arc_width": 8 - } - }, - "MAIN": { - "DEFAULT": { - "arc_color": "#67EA94", - "arc_width": 8, - "align": "CENTER" - } - }, - "KNOB": { - "DEFAULT": { - "bg_opa": 0 - } - } - } - }, - "group": "", - "groupIndex": 0, - "rangeMin": 0, - "rangeMinType": "literal", - "rangeMax": 360, - "rangeMaxType": "literal", - "value": 360, - "valueType": "literal", - "bgStartAngle": 0, - "bgEndAngle": 0, - "mode": "NORMAL", - "rotation": 0 - }, - { - "objID": "ae9500a6-9493-4bd8-fe5e-443bcfdd7cc4", - "type": "LVGLButtonWidget", - "left": 0, - "top": -10, - "width": 100, - "height": 50, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "a2f83895-943b-443f-e949-46b6c3b80e5c", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "bootLogoButton", - "leftUnit": "px", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "flagScrollbarMode": "", - "flagScrollDirection": "", - "scrollSnapX": "", - "scrollSnapY": "", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "ae47e8e1-9236-42ca-8458-e873a2d5bc68", - "definition": { - "MAIN": { - "DEFAULT": { - "align": "CENTER", - "bg_img_src": "meshtastic_boot_logo_image", - "max_width": 210, - "max_height": 120, - "shadow_width": 0, - "bg_opa": 0, - "bg_img_recolor_opa": 255 - } - } - } - }, - "group": "", - "groupIndex": 0 - }, - { - "objID": "fdb8c13a-ee32-4840-92ce-77569803ee6a", - "type": "LVGLLabelWidget", - "left": 0, - "top": -15, - "width": 213, - "height": 26, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "b05d105d-10b8-4b56-df9a-e72c35c9bca4", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "timeline": [], - "eventHandlers": [], - "identifier": "MeshtasticUrl", - "leftUnit": "px", - "topUnit": "%", - "widthUnit": "content", - "heightUnit": "content", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "361f13db-4093-4fb2-ddef-675b661cc144", - "definition": { - "MAIN": { - "DEFAULT": { - "align": "BOTTOM_MID", - "text_font": "montserrat_20" - } - } - } - }, - "groupIndex": 0, - "text": "www.meshtastic.org", - "textType": "literal", - "longMode": "WRAP", - "recolor": false - }, - { - "objID": "7d5fe9ac-02c0-4118-8efd-f0cf42aa3260", - "type": "LVGLLabelWidget", - "left": 0, - "top": -15, - "width": 0, - "height": 19, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "b1de63a5-ab3c-4540-e6cc-385f4d3cbe0d", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "timeline": [], - "eventHandlers": [], - "identifier": "FirmwareLabel", - "leftUnit": "px", - "topUnit": "px", - "widthUnit": "content", - "heightUnit": "content", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "0c98aadc-0b69-4275-ac79-1dbf59f3a150", - "definition": { - "MAIN": { - "DEFAULT": { - "align": "BOTTOM_MID" - } - } - } - }, - "groupIndex": 0, - "text": "", - "textType": "literal", - "longMode": "WRAP", - "recolor": false - }, - { - "objID": "ccd9162a-e384-4ebf-9127-496e13fa3aaf", - "type": "LVGLButtonWidget", - "left": 0, - "top": -10, - "width": 80, - "height": 80, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "8a4c93fc-f9fe-4d6a-bc76-b522ecf2b4b5", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "timeline": [], - "eventHandlers": [], - "identifier": "bluetoothButton", - "leftUnit": "px", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlag": true, - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "flagScrollbarMode": "", - "flagScrollDirection": "", - "scrollSnapX": "", - "scrollSnapY": "", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "c2be567d-cb41-4eaf-bccf-d4299f574acc", - "definition": { - "MAIN": { - "DEFAULT": { - "align": "CENTER", - "bg_img_src": "bluetooth_on_image", - "shadow_width": 0, - "bg_opa": 0, - "bg_img_recolor_opa": 255, - "bg_img_recolor": "#172ef8" - } - } - } - }, - "group": "", - "groupIndex": 0 - }, - { - "objID": "67614f32-6ae3-428c-906a-ca80e810e6c6", - "type": "LVGLPanelWidget", - "left": 0, - "top": 0, - "width": 100, - "height": 100, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "be20787a-7a0b-4ed5-c132-24be8baa51d1", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "RebootPanel", - "leftUnit": "%", - "topUnit": "%", - "widthUnit": "%", - "heightUnit": "%", - "children": [ - { - "objID": "57afcacb-beb8-4b44-f46f-9f057e865800", - "type": "LVGLButtonWidget", - "left": 0, - "top": 0, - "width": 100, - "height": 100, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "4aa6c41e-f4f5-4c70-fdae-ce35719d0c46", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "CancelRebootButton", - "leftUnit": "px", - "topUnit": "px", - "widthUnit": "%", - "heightUnit": "%", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "698ce875-a086-4a42-be4f-081095112c24", - "definition": { - "MAIN": { - "DEFAULT": { - "bg_color": "#67EA94", - "shadow_width": 0, - "shadow_ofs_y": 0, - "align": "CENTER", - "radius": 0 - }, - "PRESSED": { - "bg_color": "#000000" - } - } - } - }, - "groupIndex": 0 - }, - { - "objID": "1eb78964-e019-489a-d2c9-827201580c85", - "type": "LVGLButtonWidget", - "left": 18, - "top": -10, - "width": 55, - "height": 55, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "ef3fb65c-148d-4fb4-b3f5-7cf8dcb2e299", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "RebootButton", - "leftUnit": "%", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "994fddb3-c909-4ce9-bd08-fbc1bbedcae2", - "definition": { - "MAIN": { - "CHECKED": { - "bg_color": "#229c00" - }, - "DEFAULT": { - "bg_img_src": "reboot_image", - "bg_color": "#e0e0e0", - "radius": 12, - "align": "LEFT_MID", - "shadow_width": 3, - "shadow_ofs_x": 1, - "shadow_ofs_y": 3, - "shadow_color": "#606060" - } - } - } - }, - "groupIndex": 0 - }, - { - "objID": "f9e5310c-8dd4-4046-fa39-b9c0171cf973", - "type": "LVGLButtonWidget", - "left": 0, - "top": -10, - "width": 55, - "height": 55, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "ec707b23-08c6-4da3-d6c2-eea535f4a710", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "progmodeButton", - "leftUnit": "%", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "e6cc7081-85ea-4922-b951-745e618460b8", - "definition": { - "MAIN": { - "CHECKED": { - "bg_color": "#229c00" - }, - "DEFAULT": { - "bg_img_src": "reboot_BT_on_image", - "bg_color": "#e0e0e0", - "radius": 12, - "align": "CENTER", - "shadow_width": 3, - "shadow_ofs_x": 1, - "shadow_ofs_y": 3, - "shadow_color": "#606060", - "bg_img_recolor": "#2d2ff5", - "bg_img_recolor_opa": 255 - } - } - } - }, - "groupIndex": 0 - }, - { - "objID": "186dae5a-17ed-45f2-bb92-32fdd255c74c", - "type": "LVGLButtonWidget", - "left": -18, - "top": -10, - "width": 55, - "height": 55, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "f6900311-7ba0-4ee2-fa5b-5439c5de001a", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "ShutdownButton", - "leftUnit": "%", - "topUnit": "%", - "widthUnit": "px", - "heightUnit": "px", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_ON_FOCUS|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "abfb9ebc-5f5b-45be-cdfb-f4482dadcd73", - "definition": { - "MAIN": { - "CHECKED": { - "align": "LEFT_MID" - }, - "DEFAULT": { - "bg_img_src": "shutdown_image", - "bg_color": "#e0e0e0", - "shadow_width": 3, - "shadow_ofs_y": 3, - "radius": 12, - "align": "RIGHT_MID", - "shadow_ofs_x": 1, - "shadow_color": "#606060" - } - } - } - }, - "groupIndex": 0 - }, - { - "objID": "dad949a0-3e96-445c-e9b6-8adc3635c92d", - "type": "LVGLLabelWidget", - "left": 0, - "top": -25, - "width": 218, - "height": 26, - "customInputs": [], - "customOutputs": [], - "style": { - "objID": "232ef011-e268-43fe-d2cb-60c126faf10f", - "useStyle": "default", - "conditionalStyles": [], - "childStyles": [] - }, - "hiddenInEditor": false, - "timeline": [], - "eventHandlers": [], - "identifier": "", - "leftUnit": "px", - "topUnit": "%", - "widthUnit": "content", - "heightUnit": "content", - "children": [], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlagType": "literal", - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "81603f9f-1dee-48e5-c121-15e600dc3eb6", - "definition": { - "MAIN": { - "DEFAULT": { - "align": "BOTTOM_MID", - "text_font": "montserrat_20", - "text_color": "#000000" - } - } - } - }, - "groupIndex": 0, - "text": " www.meshtastic.org", - "textType": "literal", - "longMode": "WRAP", - "recolor": false - } - ], - "widgetFlags": "CLICK_FOCUSABLE|GESTURE_BUBBLE|PRESS_LOCK|SCROLLABLE|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_WITH_ARROW|SNAPPABLE", - "hiddenFlag": true, - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "6017d46b-563c-4b03-840a-f452b65adfd2", - "definition": { - "MAIN": { - "DEFAULT": { - "bg_color": "#000000", - "border_width": 0, - "radius": 12, - "align": "TOP_MID", - "bg_opa": 255, - "text_color": "#ffffff", - "layout": "NONE", - "pad_top": 0, - "pad_bottom": 0, - "pad_left": 0, - "pad_right": 0 - }, - "PRESSED": { - "bg_color": "#000000", - "pad_top": 0, - "pad_bottom": 0, - "pad_left": 0, - "pad_right": 0, - "pad_row": 0, - "pad_column": 0 - } - } - } - }, - "groupIndex": 0 - } - ], - "widgetFlags": "PRESS_LOCK|CLICK_FOCUSABLE|GESTURE_BUBBLE|SNAPPABLE|SCROLL_ELASTIC|SCROLL_MOMENTUM|SCROLL_CHAIN_HOR|SCROLL_CHAIN_VER", - "hiddenFlagType": "literal", - "clickableFlag": true, - "clickableFlagType": "literal", - "checkedStateType": "literal", - "disabledStateType": "literal", - "states": "", - "localStyles": { - "objID": "8eb86917-c831-b762-5685-8d01972e8a22", - "definition": { - "MAIN": { - "DEFAULT": { - "text_font": "montserrat_14", - "bg_color": "#67ea94" - } - } - } - }, - "groupIndex": 0 - } - ], - "connectionLines": [], - "localVariables": [], - "userProperties": [], - "name": "BootScreen", - "left": 0, - "top": 0, - "width": 320, - "height": 240, - "isUsedAsUserWidget": false, - "createAtStart": true, - "deleteOnScreenUnload": false - }, { "objID": "cf258ce5-f401-44ea-a356-6dfb27edc1ca", "components": [