diff --git a/main/ui_screen.c b/main/ui_screen.c index 875af68..4da9360 100644 --- a/main/ui_screen.c +++ b/main/ui_screen.c @@ -13,11 +13,26 @@ #define CPU_TOP_CORE_COUNT 4 #define HALO_LABEL_COUNT 8 #define DISK_ROW_COUNT 4 +#define SCREEN_W 400 +#define PANEL_W (SCREEN_W / 2) +#define PANEL_PAD_X 8 +#define PANEL_EDGE_GAP 4 +#define MID_X PANEL_W +#define LEFT_X PANEL_PAD_X +#define RIGHT_X (PANEL_W + PANEL_PAD_X) +#define PANEL_CONTENT_W (PANEL_W - PANEL_PAD_X - PANEL_EDGE_GAP) +#define PANEL_H_RULE_X (PANEL_PAD_X - 2) +#define PANEL_H_RULE_W (SCREEN_W - 2 * PANEL_H_RULE_X) +#define PANEL_TODAY_X_OFFSET 118 +#define QUOTA_BAR_X_OFFSET 30 +#define QUOTA_VALUE_X_OFFSET 114 +#define QUOTA_RESET_X_OFFSET 150 #define CODEX_DAILY_BAR_W 8 #define CODEX_DAILY_BAR_GAP 5 +#define CODEX_DAILY_BAR_BASE_X (LEFT_X + 2) +#define ZHIPU_DAILY_BAR_BASE_X (RIGHT_X + 2) #define CODEX_DAILY_BAR_BASE_Y 292 #define CODEX_DAILY_BAR_MAX_H 46 -#define ZHIPU_DAILY_BAR_BASE_X 210 typedef enum { CONN_USB = 0, @@ -513,7 +528,7 @@ static void update_codex_panel(const ui_metrics_t *metrics) int percent = clamp_percent(metrics->codex_daily_percent[i]); int height = percent <= 0 ? 1 : 1 + ((percent * (CODEX_DAILY_BAR_MAX_H - 1)) + 50) / 100; - int x = 10 + i * (CODEX_DAILY_BAR_W + CODEX_DAILY_BAR_GAP); + int x = CODEX_DAILY_BAR_BASE_X + i * (CODEX_DAILY_BAR_W + CODEX_DAILY_BAR_GAP); int y = CODEX_DAILY_BAR_BASE_Y - height; lv_obj_set_size(bar, CODEX_DAILY_BAR_W, height); lv_obj_align(bar, LV_ALIGN_TOP_LEFT, x, y); @@ -616,8 +631,8 @@ void ui_screen_create(void) lv_obj_clear_flag(screen, LV_OBJ_FLAG_SCROLLABLE); lv_obj_clean(screen); - make_rule(screen, 200, 6, 1, 288); - make_rule(screen, 6, 174, 388, 1); + make_rule(screen, MID_X, 6, 1, 288); + make_rule(screen, PANEL_H_RULE_X, 174, PANEL_H_RULE_W, 1); s_status_label = make_label(screen, "WAITING", &lv_font_montserrat_14); lv_obj_add_flag(s_status_label, LV_OBJ_FLAG_HIDDEN); @@ -675,7 +690,7 @@ void ui_screen_create(void) } lv_obj_t *memory_title = make_label(screen, "MEM", &lv_font_montserrat_14); - lv_obj_align(memory_title, LV_ALIGN_TOP_LEFT, 208, 8); + lv_obj_align(memory_title, LV_ALIGN_TOP_LEFT, RIGHT_X, 8); make_label_halo(screen, s_memory_value_halo, "--%", &lv_font_montserrat_20, 50, LV_ALIGN_TOP_RIGHT, -8, 8, 2, LV_TEXT_ALIGN_RIGHT); s_memory_value_label = make_label(screen, "--%", &lv_font_montserrat_20); @@ -684,90 +699,91 @@ void ui_screen_create(void) lv_obj_align(s_memory_value_label, LV_ALIGN_TOP_RIGHT, -8, 8); s_memory_detail_label = make_label(screen, "--/--", &lv_font_montserrat_14); lv_obj_set_width(s_memory_detail_label, 178); - lv_obj_align(s_memory_detail_label, LV_ALIGN_TOP_LEFT, 208, 24); + lv_obj_align(s_memory_detail_label, LV_ALIGN_TOP_LEFT, RIGHT_X, 24); s_memory_bar = make_bar(screen, 180, 10); - lv_obj_align(s_memory_bar, LV_ALIGN_TOP_LEFT, 208, 46); + lv_obj_align(s_memory_bar, LV_ALIGN_TOP_LEFT, RIGHT_X, 46); lv_obj_t *disk_title = make_label(screen, "DSK", &lv_font_montserrat_14); - lv_obj_align(disk_title, LV_ALIGN_TOP_LEFT, 208, 64); + lv_obj_align(disk_title, LV_ALIGN_TOP_LEFT, RIGHT_X, 64); for (int i = 0; i < DISK_ROW_COUNT; i++) { int y = 80 + i * 16; s_disk_name_labels[i] = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_disk_name_labels[i], 14); - lv_obj_align(s_disk_name_labels[i], LV_ALIGN_TOP_LEFT, 208, y); + lv_obj_align(s_disk_name_labels[i], LV_ALIGN_TOP_LEFT, RIGHT_X, y); s_disk_bars[i] = make_bar(screen, 84, 8); - lv_obj_align(s_disk_bars[i], LV_ALIGN_TOP_LEFT, 224, y + 4); + lv_obj_align(s_disk_bars[i], LV_ALIGN_TOP_LEFT, RIGHT_X + 16, y + 4); s_disk_rate_labels[i] = make_label(screen, "--/--", &lv_font_montserrat_14); lv_label_set_long_mode(s_disk_rate_labels[i], LV_LABEL_LONG_CLIP); - lv_obj_set_width(s_disk_rate_labels[i], 80); - lv_obj_align(s_disk_rate_labels[i], LV_ALIGN_TOP_LEFT, 312, y); + lv_obj_set_width(s_disk_rate_labels[i], PANEL_CONTENT_W - 104); + lv_obj_set_style_text_align(s_disk_rate_labels[i], LV_TEXT_ALIGN_RIGHT, 0); + lv_obj_align(s_disk_rate_labels[i], LV_ALIGN_TOP_LEFT, RIGHT_X + 104, y); } lv_obj_t *net_down_icon = make_net_arrow(screen, s_net_down_icon_points, sizeof(s_net_down_icon_points) / sizeof(s_net_down_icon_points[0])); - lv_obj_align(net_down_icon, LV_ALIGN_TOP_LEFT, 208, 152); + lv_obj_align(net_down_icon, LV_ALIGN_TOP_LEFT, RIGHT_X, 152); s_net_rx_label = make_label(screen, "--", &lv_font_montserrat_20); lv_label_set_long_mode(s_net_rx_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_net_rx_label, 62); lv_obj_set_height(s_net_rx_label, 24); - lv_obj_align(s_net_rx_label, LV_ALIGN_TOP_LEFT, 224, 146); + lv_obj_align(s_net_rx_label, LV_ALIGN_TOP_LEFT, RIGHT_X + 16, 146); lv_obj_t *net_up_icon = make_net_arrow(screen, s_net_up_icon_points, sizeof(s_net_up_icon_points) / sizeof(s_net_up_icon_points[0])); - lv_obj_align(net_up_icon, LV_ALIGN_TOP_LEFT, 300, 152); + lv_obj_align(net_up_icon, LV_ALIGN_TOP_LEFT, RIGHT_X + 92, 152); s_net_tx_label = make_label(screen, "--", &lv_font_montserrat_20); lv_label_set_long_mode(s_net_tx_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_net_tx_label, 76); lv_obj_set_height(s_net_tx_label, 24); - lv_obj_align(s_net_tx_label, LV_ALIGN_TOP_LEFT, 316, 146); + lv_obj_align(s_net_tx_label, LV_ALIGN_TOP_LEFT, RIGHT_X + 108, 146); lv_obj_t *codex_title = make_label(screen, "CODEX", &lv_font_montserrat_14); - lv_obj_align(codex_title, LV_ALIGN_TOP_LEFT, 8, 184); + lv_obj_align(codex_title, LV_ALIGN_TOP_LEFT, LEFT_X, 184); s_codex_today_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_codex_today_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_codex_today_label, 70); lv_obj_set_style_text_align(s_codex_today_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_today_label, LV_ALIGN_TOP_LEFT, 126, 184); + lv_obj_align(s_codex_today_label, LV_ALIGN_TOP_LEFT, LEFT_X + PANEL_TODAY_X_OFFSET, 184); s_codex_5h_label = make_label(screen, "5H", &lv_font_montserrat_14); lv_label_set_long_mode(s_codex_5h_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_codex_5h_label, 30); - lv_obj_align(s_codex_5h_label, LV_ALIGN_TOP_LEFT, 8, 204); + lv_obj_align(s_codex_5h_label, LV_ALIGN_TOP_LEFT, LEFT_X, 204); s_codex_5h_bar = make_quota_bar(screen, 80, 8); - lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, 38, 208); + lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_BAR_X_OFFSET, 208); s_codex_5h_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_codex_5h_value_label, 34); lv_obj_set_style_text_align(s_codex_5h_value_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_5h_value_label, LV_ALIGN_TOP_LEFT, 122, 204); + lv_obj_align(s_codex_5h_value_label, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_VALUE_X_OFFSET, 204); s_codex_5h_reset_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_codex_5h_reset_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_codex_5h_reset_label, 38); lv_obj_set_style_text_align(s_codex_5h_reset_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_5h_reset_label, LV_ALIGN_TOP_LEFT, 158, 204); + lv_obj_align(s_codex_5h_reset_label, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_RESET_X_OFFSET, 204); s_codex_week_label = make_label(screen, "WK", &lv_font_montserrat_14); lv_label_set_long_mode(s_codex_week_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_codex_week_label, 30); - lv_obj_align(s_codex_week_label, LV_ALIGN_TOP_LEFT, 8, 224); + lv_obj_align(s_codex_week_label, LV_ALIGN_TOP_LEFT, LEFT_X, 224); s_codex_week_bar = make_quota_bar(screen, 80, 8); - lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, 38, 228); + lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_BAR_X_OFFSET, 228); s_codex_week_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_codex_week_value_label, 34); lv_obj_set_style_text_align(s_codex_week_value_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_week_value_label, LV_ALIGN_TOP_LEFT, 122, 224); + lv_obj_align(s_codex_week_value_label, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_VALUE_X_OFFSET, 224); s_codex_week_reset_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_codex_week_reset_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_codex_week_reset_label, 38); lv_obj_set_style_text_align(s_codex_week_reset_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_week_reset_label, LV_ALIGN_TOP_LEFT, 158, 224); + lv_obj_align(s_codex_week_reset_label, LV_ALIGN_TOP_LEFT, LEFT_X + QUOTA_RESET_X_OFFSET, 224); - make_rule(screen, 8, CODEX_DAILY_BAR_BASE_Y, 188, 1); + make_rule(screen, LEFT_X, CODEX_DAILY_BAR_BASE_Y, PANEL_CONTENT_W, 1); for (int i = 0; i < UI_CODEX_DAILY_BAR_COUNT; i++) { s_codex_daily_bars[i] = lv_obj_create(screen); lv_obj_set_size(s_codex_daily_bars[i], CODEX_DAILY_BAR_W, 1); lv_obj_align(s_codex_daily_bars[i], LV_ALIGN_TOP_LEFT, - 10 + i * (CODEX_DAILY_BAR_W + CODEX_DAILY_BAR_GAP), + CODEX_DAILY_BAR_BASE_X + i * (CODEX_DAILY_BAR_W + CODEX_DAILY_BAR_GAP), CODEX_DAILY_BAR_BASE_Y - 1); lv_obj_set_style_bg_color(s_codex_daily_bars[i], ink(), 0); lv_obj_set_style_bg_opa(s_codex_daily_bars[i], LV_OPA_COVER, 0); @@ -779,46 +795,46 @@ void ui_screen_create(void) } lv_obj_t *zhipu_title = make_label(screen, "ZHIPU", &lv_font_montserrat_14); - lv_obj_align(zhipu_title, LV_ALIGN_TOP_LEFT, 208, 184); + lv_obj_align(zhipu_title, LV_ALIGN_TOP_LEFT, RIGHT_X, 184); s_zhipu_today_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_zhipu_today_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_zhipu_today_label, 70); lv_obj_set_style_text_align(s_zhipu_today_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_zhipu_today_label, LV_ALIGN_TOP_LEFT, 326, 184); + lv_obj_align(s_zhipu_today_label, LV_ALIGN_TOP_LEFT, RIGHT_X + PANEL_TODAY_X_OFFSET, 184); s_zhipu_5h_label = make_label(screen, "5H", &lv_font_montserrat_14); lv_label_set_long_mode(s_zhipu_5h_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_zhipu_5h_label, 30); - lv_obj_align(s_zhipu_5h_label, LV_ALIGN_TOP_LEFT, 208, 204); + lv_obj_align(s_zhipu_5h_label, LV_ALIGN_TOP_LEFT, RIGHT_X, 204); s_zhipu_5h_bar = make_quota_bar(screen, 80, 8); - lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, 238, 208); + lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_BAR_X_OFFSET, 208); s_zhipu_5h_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_5h_value_label, 34); lv_obj_set_style_text_align(s_zhipu_5h_value_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_zhipu_5h_value_label, LV_ALIGN_TOP_LEFT, 322, 204); + lv_obj_align(s_zhipu_5h_value_label, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_VALUE_X_OFFSET, 204); s_zhipu_5h_reset_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_zhipu_5h_reset_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_zhipu_5h_reset_label, 38); lv_obj_set_style_text_align(s_zhipu_5h_reset_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_zhipu_5h_reset_label, LV_ALIGN_TOP_LEFT, 358, 204); + lv_obj_align(s_zhipu_5h_reset_label, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_RESET_X_OFFSET, 204); s_zhipu_week_label = make_label(screen, "WK", &lv_font_montserrat_14); lv_label_set_long_mode(s_zhipu_week_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_zhipu_week_label, 30); - lv_obj_align(s_zhipu_week_label, LV_ALIGN_TOP_LEFT, 208, 224); + lv_obj_align(s_zhipu_week_label, LV_ALIGN_TOP_LEFT, RIGHT_X, 224); s_zhipu_week_bar = make_quota_bar(screen, 80, 8); - lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, 238, 228); + lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_BAR_X_OFFSET, 228); s_zhipu_week_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_week_value_label, 34); lv_obj_set_style_text_align(s_zhipu_week_value_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_zhipu_week_value_label, LV_ALIGN_TOP_LEFT, 322, 224); + lv_obj_align(s_zhipu_week_value_label, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_VALUE_X_OFFSET, 224); s_zhipu_week_reset_label = make_label(screen, "--", &lv_font_montserrat_14); lv_label_set_long_mode(s_zhipu_week_reset_label, LV_LABEL_LONG_CLIP); lv_obj_set_width(s_zhipu_week_reset_label, 38); lv_obj_set_style_text_align(s_zhipu_week_reset_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_zhipu_week_reset_label, LV_ALIGN_TOP_LEFT, 358, 224); + lv_obj_align(s_zhipu_week_reset_label, LV_ALIGN_TOP_LEFT, RIGHT_X + QUOTA_RESET_X_OFFSET, 224); - make_rule(screen, 208, CODEX_DAILY_BAR_BASE_Y, 188, 1); + make_rule(screen, RIGHT_X, CODEX_DAILY_BAR_BASE_Y, PANEL_CONTENT_W, 1); for (int i = 0; i < UI_ZHIPU_DAILY_BAR_COUNT; i++) { s_zhipu_daily_bars[i] = lv_obj_create(screen); lv_obj_set_size(s_zhipu_daily_bars[i], CODEX_DAILY_BAR_W, 1);