From 66bb1137aaca2c4e98ea45d0279fb92e825784de Mon Sep 17 00:00:00 2001 From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com> Date: Sun, 28 Jan 2024 11:40:25 +0100 Subject: [PATCH] Make generic functions for creating flex parents --- CYD-Klipper/src/ui/nav_buttons.cpp | 6 +--- CYD-Klipper/src/ui/panels/macros_panel.cpp | 31 ++++++++------------ CYD-Klipper/src/ui/panels/settings_panel.cpp | 26 ++++++---------- CYD-Klipper/src/ui/ui_utils.cpp | 16 ++++++++++ CYD-Klipper/src/ui/ui_utils.h | 4 ++- 5 files changed, 41 insertions(+), 42 deletions(-) diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp index 2000911..f305a68 100644 --- a/CYD-Klipper/src/ui/nav_buttons.cpp +++ b/CYD-Klipper/src/ui/nav_buttons.cpp @@ -103,11 +103,7 @@ void nav_buttons_setup(unsigned char active_panel){ lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act()); lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT_PX); lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0); - lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX); - lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN); - lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_set_style_pad_column(root_panel, 0, 0); - lv_obj_set_style_pad_row(root_panel, 0, 0); + lv_layout_flex_column(root_panel, LV_FLEX_ALIGN_START, 0, 0); // Files/Print create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel); diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp index 5b79b93..1f2b731 100644 --- a/CYD-Klipper/src/ui/panels/macros_panel.cpp +++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp @@ -38,40 +38,33 @@ void macros_panel_init(lv_obj_t* panel) { } lv_obj_t * root_panel = lv_create_empty_panel(panel); - lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX); - lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX); - lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX); - lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN); - lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_set_style_pad_column(root_panel, 0, 0); - lv_obj_set_style_pad_row(root_panel, 0, 0); + lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2); + lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2); + lv_layout_flex_column(root_panel); + for (int j = 0; j < 2; j++) for (int i = 0; i < query.count; i++){ const char* macro = query.macros[i]; lv_obj_t * panel = lv_create_empty_panel(root_panel); - lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2); - - lv_obj_t * line = lv_line_create(panel); - lv_line_set_points(line, line_points, 2); - lv_obj_set_style_line_width(line, 1, 0); - lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0); - lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_layout_flex_row(panel, LV_FLEX_ALIGN_END); + lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); lv_obj_t * label = lv_label_create(panel); lv_label_set_text(label, macro); - lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0); lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR); - // TODO: Hack. Needs to be fixed for proper porting - lv_obj_set_width(label, CYD_SCREEN_PANEL_WIDTH * 0.75f); + lv_obj_set_flex_grow(label, 1); lv_obj_t * btn = lv_btn_create(panel); lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); - lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0); - lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro); label = lv_label_create(btn); lv_label_set_text(label, "Run"); lv_obj_center(label); + + lv_obj_t * line = lv_line_create(root_panel); + lv_line_set_points(line, line_points, 2); + lv_obj_set_style_line_width(line, 1, 0); + lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0); } } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp index 9759597..8609833 100644 --- a/CYD-Klipper/src/ui/panels/settings_panel.cpp +++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp @@ -87,17 +87,8 @@ const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){ lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); - lv_obj_t * panel = lv_obj_create(root_panel); - lv_obj_set_style_border_width(panel, 0, 0); - lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0); - lv_obj_set_style_pad_all(panel, 0, 0); - lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2); - - lv_obj_t * line = lv_line_create(panel); - lv_line_set_points(line, line_points, 2); - lv_obj_set_style_line_width(line, 1, 0); - lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0); - lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0); + lv_obj_t * panel = lv_create_empty_panel(root_panel); + lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); lv_obj_t * label = lv_label_create(panel); lv_label_set_text(label, label_text); @@ -105,15 +96,16 @@ void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* lv_obj_set_parent(object, panel); lv_obj_align(object, LV_ALIGN_RIGHT_MID, 0, 0); + + lv_obj_t * line = lv_line_create(root_panel); + lv_line_set_points(line, line_points, 2); + lv_obj_set_style_line_width(line, 1, 0); + lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0); } void settings_panel_init(lv_obj_t* panel){ - - lv_obj_set_layout(panel, LV_LAYOUT_FLEX); - lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_COLUMN); - lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); - lv_obj_set_style_pad_column(panel, 0, 0); - lv_obj_set_style_pad_row(panel, 0, 0); + lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0); + lv_layout_flex_column(panel); lv_obj_t * btn = lv_btn_create(panel); lv_obj_add_event_cb(btn, reset_wifi_click, LV_EVENT_CLICKED, NULL); diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp index 8c1075d..a489d4a 100644 --- a/CYD-Klipper/src/ui/ui_utils.cpp +++ b/CYD-Klipper/src/ui/ui_utils.cpp @@ -7,4 +7,20 @@ lv_obj_t* lv_create_empty_panel(lv_obj_t* root) { lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0); lv_obj_set_style_pad_all(panel, 0, 0); return panel; +} + +void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_column, lv_coord_t pad_row){ + lv_obj_set_layout(obj, LV_LAYOUT_FLEX); + lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN); + lv_obj_set_flex_align(obj, allign, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + lv_obj_set_style_pad_column(obj, pad_column, 0); + lv_obj_set_style_pad_row(obj, pad_row, 0); +} + +void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_column, lv_coord_t pad_row){ + lv_obj_set_layout(obj, LV_LAYOUT_FLEX); + lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW); + lv_obj_set_flex_align(obj, allign, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + lv_obj_set_style_pad_column(obj, pad_column, 0); + lv_obj_set_style_pad_row(obj, pad_row, 0); } \ No newline at end of file diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h index 39effe1..df9a77a 100644 --- a/CYD-Klipper/src/ui/ui_utils.h +++ b/CYD-Klipper/src/ui/ui_utils.h @@ -3,4 +3,6 @@ #define CYD_SCREEN_PANEL_WIDTH \ (CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX) -lv_obj_t* lv_create_empty_panel(lv_obj_t* root); \ No newline at end of file +lv_obj_t* lv_create_empty_panel(lv_obj_t* root); +void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX); +void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX); \ No newline at end of file