Make progress panel responsive

This commit is contained in:
suchmememanyskill
2024-01-28 12:54:18 +01:00
parent b3c60e4442
commit 6750c8f572
2 changed files with 31 additions and 22 deletions

View File

@@ -46,6 +46,8 @@ static void btn_print_back(lv_event_t * e){
} }
static void btn_print_file_verify(lv_event_t * e){ static void btn_print_file_verify(lv_event_t * e){
const auto button_size_mult = 1.3f;
lv_obj_t * btn = lv_event_get_target(e); lv_obj_t * btn = lv_event_get_target(e);
selected_file = (FILESYSTEM_FILE*)lv_event_get_user_data(e); selected_file = (FILESYSTEM_FILE*)lv_event_get_user_data(e);
@@ -66,7 +68,7 @@ static void btn_print_file_verify(lv_event_t * e){
btn = lv_btn_create(panel); btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 0, 0); lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 0, 0);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_print_back, LV_EVENT_CLICKED, panel); lv_obj_add_event_cb(btn, btn_print_back, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn); label = lv_label_create(btn);
@@ -75,7 +77,7 @@ static void btn_print_file_verify(lv_event_t * e){
btn = lv_btn_create(panel); btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, 0, 0); lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX); lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_print_file, LV_EVENT_CLICKED, panel); lv_obj_add_event_cb(btn, btn_print_file, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn); label = lv_label_create(btn);

View File

@@ -1,6 +1,7 @@
#include "panel.h" #include "panel.h"
#include "../../core/data_setup.h" #include "../../core/data_setup.h"
#include <stdio.h> #include <stdio.h>
#include "../ui_utils.h"
char time_buffer[12]; char time_buffer[12];
@@ -47,48 +48,55 @@ static void btn_click_resume(lv_event_t * e){
} }
void progress_panel_init(lv_obj_t* panel){ void progress_panel_init(lv_obj_t* panel){
auto panel_width = TFT_HEIGHT - 40; auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3;
auto panel_width_margin = panel_width - 30; const auto button_size_mult = 1.3f;
lv_obj_t * center_panel = lv_create_empty_panel(panel);
lv_obj_align(center_panel, LV_ALIGN_CENTER, 0, 0);
lv_obj_set_size(center_panel, panel_width, LV_SIZE_CONTENT);
lv_layout_flex_column(center_panel);
// Filename // Filename
lv_obj_t * label = lv_label_create(panel); lv_obj_t * label = lv_label_create(center_panel);
lv_label_set_text(label, printer.print_filename); lv_label_set_text(label, printer.print_filename);
lv_obj_align(label, LV_ALIGN_CENTER, 0, -40);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR); lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_width(label, panel_width_margin); lv_obj_set_width(label, panel_width);
// Progress Bar // Progress Bar
lv_obj_t * bar = lv_bar_create(panel); lv_obj_t * bar = lv_bar_create(center_panel);
lv_obj_align(bar, LV_ALIGN_CENTER, 0, 0); lv_obj_set_size(bar, panel_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * 0.75f);
lv_obj_set_size(bar, panel_width_margin, 20);
lv_obj_add_event_cb(bar, progress_bar_update, LV_EVENT_MSG_RECEIVED, NULL); lv_obj_add_event_cb(bar, progress_bar_update, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, bar, NULL); lv_msg_subsribe_obj(DATA_PRINTER_DATA, bar, NULL);
// Time
lv_obj_t * time_est_panel = lv_create_empty_panel(center_panel);
lv_obj_set_size(time_est_panel, panel_width, LV_SIZE_CONTENT);
// Elapsed Time // Elapsed Time
label = lv_label_create(panel); label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???"); lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_LEFT_MID, 10, 20); lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_elapsed_time, LV_EVENT_MSG_RECEIVED, NULL); lv_obj_add_event_cb(label, update_printer_data_elapsed_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL); lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Remaining Time // Remaining Time
label = lv_label_create(panel); label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???"); lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_RIGHT_MID, -10, 20); lv_obj_align(label, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_remaining_time, LV_EVENT_MSG_RECEIVED, NULL); lv_obj_add_event_cb(label, update_printer_data_remaining_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL); lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Percentage // Percentage
label = lv_label_create(panel); label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???"); lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 20); lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_percentage, LV_EVENT_MSG_RECEIVED, NULL); lv_obj_add_event_cb(label, update_printer_data_percentage, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL); lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Stop Button // Stop Button
lv_obj_t * btn = lv_btn_create(panel); lv_obj_t * btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10); lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -1 * CYD_SCREEN_BIG_GAP_PX, -1 * CYD_SCREEN_BIG_GAP_PX);
lv_obj_set_size(btn, 40, 40); lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_click_stop, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(btn, btn_click_stop, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn); label = lv_label_create(btn);
@@ -98,8 +106,6 @@ void progress_panel_init(lv_obj_t* panel){
// Resume Button // Resume Button
if (printer.state == PRINTER_STATE_PAUSED){ if (printer.state == PRINTER_STATE_PAUSED){
btn = lv_btn_create(panel); btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -60, -10);
lv_obj_set_size(btn, 40, 40);
lv_obj_add_event_cb(btn, btn_click_resume, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(btn, btn_click_resume, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn); label = lv_label_create(btn);
@@ -109,12 +115,13 @@ void progress_panel_init(lv_obj_t* panel){
// Pause Button // Pause Button
else { else {
btn = lv_btn_create(panel); btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -60, -10);
lv_obj_set_size(btn, 40, 40);
lv_obj_add_event_cb(btn, btn_click_pause, LV_EVENT_CLICKED, NULL); lv_obj_add_event_cb(btn, btn_click_pause, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn); label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_PAUSE); lv_label_set_text(label, LV_SYMBOL_PAUSE);
lv_obj_center(label); lv_obj_center(label);
} }
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -2 * CYD_SCREEN_BIG_GAP_PX - CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, -1 * CYD_SCREEN_BIG_GAP_PX);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
} }