统一左右宫格坐标并右对齐硬盘速率

This commit is contained in:
Codex 2026-06-24 10:47:25 +08:00
parent 0d5d144947
commit b4e55e067e

View File

@ -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);