diff --git a/main/ui_screen.c b/main/ui_screen.c index e137f64..96dec80 100644 --- a/main/ui_screen.c +++ b/main/ui_screen.c @@ -15,7 +15,7 @@ #define CODEX_DAILY_BAR_W 8 #define CODEX_DAILY_BAR_GAP 5 #define CODEX_DAILY_BAR_BASE_Y 292 -#define CODEX_DAILY_BAR_MAX_H 40 +#define CODEX_DAILY_BAR_MAX_H 26 typedef enum { CONN_USB = 0, @@ -49,10 +49,13 @@ static lv_obj_t *s_codex_week_value_label; static lv_obj_t *s_codex_5h_reset_label; static lv_obj_t *s_codex_week_reset_label; static lv_obj_t *s_codex_token_label; +static lv_obj_t *s_codex_token_bar; static lv_obj_t *s_codex_5h_bar; static lv_obj_t *s_codex_week_bar; static lv_obj_t *s_codex_daily_bars[UI_CODEX_DAILY_BAR_COUNT]; static lv_obj_t *s_zhipu_status_label; +static lv_obj_t *s_zhipu_token_label; +static lv_obj_t *s_zhipu_token_bar; static lv_obj_t *s_zhipu_5h_label; static lv_obj_t *s_zhipu_week_label; static lv_obj_t *s_zhipu_5h_value_label; @@ -435,8 +438,13 @@ static void update_codex_panel(const ui_metrics_t *metrics) lv_label_set_text(s_codex_week_reset_label, reset_week); format_tokens_m10(metrics->codex_today_tokens_m10, value, sizeof(value)); - snprintf(text, sizeof(text), "TOK %s", value); + snprintf(text, sizeof(text), "%s", value); lv_label_set_text(s_codex_token_label, text); + int today_percent = 0; + if (metrics->codex_daily_count > 0) { + today_percent = metrics->codex_daily_percent[metrics->codex_daily_count - 1]; + } + set_bar_percent(s_codex_token_bar, today_percent); for (int i = 0; i < UI_CODEX_DAILY_BAR_COUNT; i++) { lv_obj_t *bar = s_codex_daily_bars[i]; @@ -468,6 +476,10 @@ static void update_zhipu_panel(const ui_metrics_t *metrics) snprintf(text, sizeof(text), "STAT %s", zhipu_status_text(metrics->zhipu_status)); lv_label_set_text(s_zhipu_status_label, text); + format_percent_compact(metrics->zhipu_5h_percent, value, sizeof(value)); + lv_label_set_text(s_zhipu_token_label, value); + set_bar_percent(s_zhipu_token_bar, metrics->zhipu_5h_percent); + format_percent_compact(metrics->zhipu_5h_percent, value, sizeof(value)); lv_label_set_text(s_zhipu_5h_value_label, value); set_bar_percent(s_zhipu_5h_bar, metrics->zhipu_5h_percent); @@ -595,34 +607,40 @@ void ui_screen_create(void) s_codex_5h_label = make_label(screen, "5H", &lv_font_montserrat_14); lv_obj_set_width(s_codex_5h_label, 28); - lv_obj_align(s_codex_5h_label, LV_ALIGN_TOP_LEFT, 8, 204); - s_codex_5h_bar = make_bar(screen, 76, 8); - lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, 36, 208); + lv_obj_align(s_codex_5h_label, LV_ALIGN_TOP_LEFT, 8, 216); + s_codex_5h_bar = make_bar(screen, 78, 8); + lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, 36, 220); s_codex_5h_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_codex_5h_value_label, 38); - lv_obj_align(s_codex_5h_value_label, LV_ALIGN_TOP_LEFT, 118, 204); + lv_obj_align(s_codex_5h_value_label, LV_ALIGN_TOP_LEFT, 118, 216); 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_align(s_codex_5h_reset_label, LV_ALIGN_TOP_LEFT, 158, 204); + lv_obj_align(s_codex_5h_reset_label, LV_ALIGN_TOP_LEFT, 158, 216); s_codex_week_label = make_label(screen, "WK", &lv_font_montserrat_14); lv_obj_set_width(s_codex_week_label, 28); - lv_obj_align(s_codex_week_label, LV_ALIGN_TOP_LEFT, 8, 224); - s_codex_week_bar = make_bar(screen, 76, 8); - lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, 36, 228); + lv_obj_align(s_codex_week_label, LV_ALIGN_TOP_LEFT, 8, 234); + s_codex_week_bar = make_bar(screen, 78, 8); + lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, 36, 238); s_codex_week_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_codex_week_value_label, 38); - lv_obj_align(s_codex_week_value_label, LV_ALIGN_TOP_LEFT, 118, 224); + lv_obj_align(s_codex_week_value_label, LV_ALIGN_TOP_LEFT, 118, 234); 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_align(s_codex_week_reset_label, LV_ALIGN_TOP_LEFT, 158, 224); + lv_obj_align(s_codex_week_reset_label, LV_ALIGN_TOP_LEFT, 158, 234); - s_codex_token_label = make_label(screen, "TOK --", &lv_font_montserrat_14); - lv_obj_set_width(s_codex_token_label, 96); + lv_obj_t *codex_token_title = make_label(screen, "TOK", &lv_font_montserrat_14); + lv_obj_set_width(codex_token_title, 28); + lv_obj_align(codex_token_title, LV_ALIGN_TOP_LEFT, 8, 198); + s_codex_token_bar = make_bar(screen, 90, 8); + lv_obj_align(s_codex_token_bar, LV_ALIGN_TOP_LEFT, 36, 202); + s_codex_token_label = make_label(screen, "--", &lv_font_montserrat_14); + lv_obj_set_width(s_codex_token_label, 64); + lv_label_set_long_mode(s_codex_token_label, LV_LABEL_LONG_CLIP); lv_obj_set_style_text_align(s_codex_token_label, LV_TEXT_ALIGN_RIGHT, 0); - lv_obj_align(s_codex_token_label, LV_ALIGN_TOP_RIGHT, -204, 184); + lv_obj_align(s_codex_token_label, LV_ALIGN_TOP_LEFT, 132, 198); make_rule(screen, 8, CODEX_DAILY_BAR_BASE_Y, 188, 1); for (int i = 0; i < UI_CODEX_DAILY_BAR_COUNT; i++) { @@ -646,31 +664,43 @@ void ui_screen_create(void) lv_obj_set_width(s_zhipu_status_label, 96); lv_obj_set_style_text_align(s_zhipu_status_label, LV_TEXT_ALIGN_RIGHT, 0); lv_obj_align(s_zhipu_status_label, LV_ALIGN_TOP_RIGHT, -8, 184); + + lv_obj_t *zhipu_token_title = make_label(screen, "TOK", &lv_font_montserrat_14); + lv_obj_set_width(zhipu_token_title, 28); + lv_obj_align(zhipu_token_title, LV_ALIGN_TOP_LEFT, 208, 198); + s_zhipu_token_bar = make_bar(screen, 90, 8); + lv_obj_align(s_zhipu_token_bar, LV_ALIGN_TOP_LEFT, 236, 202); + s_zhipu_token_label = make_label(screen, "--", &lv_font_montserrat_14); + lv_obj_set_width(s_zhipu_token_label, 64); + lv_label_set_long_mode(s_zhipu_token_label, LV_LABEL_LONG_CLIP); + lv_obj_set_style_text_align(s_zhipu_token_label, LV_TEXT_ALIGN_RIGHT, 0); + lv_obj_align(s_zhipu_token_label, LV_ALIGN_TOP_LEFT, 332, 198); + s_zhipu_5h_label = make_label(screen, "5H", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_5h_label, 28); - lv_obj_align(s_zhipu_5h_label, LV_ALIGN_TOP_LEFT, 208, 214); - s_zhipu_5h_bar = make_bar(screen, 74, 9); - lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, 238, 218); + lv_obj_align(s_zhipu_5h_label, LV_ALIGN_TOP_LEFT, 208, 216); + s_zhipu_5h_bar = make_bar(screen, 78, 8); + lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, 236, 220); s_zhipu_5h_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_5h_value_label, 38); - lv_obj_align(s_zhipu_5h_value_label, LV_ALIGN_TOP_LEFT, 318, 214); + lv_obj_align(s_zhipu_5h_value_label, LV_ALIGN_TOP_LEFT, 318, 216); 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_align(s_zhipu_5h_reset_label, LV_ALIGN_TOP_LEFT, 358, 214); + lv_obj_align(s_zhipu_5h_reset_label, LV_ALIGN_TOP_LEFT, 358, 216); s_zhipu_week_label = make_label(screen, "WK", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_week_label, 28); - lv_obj_align(s_zhipu_week_label, LV_ALIGN_TOP_LEFT, 208, 242); - s_zhipu_week_bar = make_bar(screen, 74, 9); - lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, 238, 246); + lv_obj_align(s_zhipu_week_label, LV_ALIGN_TOP_LEFT, 208, 234); + s_zhipu_week_bar = make_bar(screen, 78, 8); + lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, 236, 238); s_zhipu_week_value_label = make_label(screen, "--", &lv_font_montserrat_14); lv_obj_set_width(s_zhipu_week_value_label, 38); - lv_obj_align(s_zhipu_week_value_label, LV_ALIGN_TOP_LEFT, 318, 242); + lv_obj_align(s_zhipu_week_value_label, LV_ALIGN_TOP_LEFT, 318, 234); 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_align(s_zhipu_week_reset_label, LV_ALIGN_TOP_LEFT, 358, 242); + lv_obj_align(s_zhipu_week_reset_label, LV_ALIGN_TOP_LEFT, 358, 234); } void ui_screen_tick(void)