调整额度条为剩余百分比显示
This commit is contained in:
parent
c0295302e4
commit
26365ec0e0
@ -112,6 +112,11 @@ static lv_color_t paper(void)
|
||||
return lv_color_white();
|
||||
}
|
||||
|
||||
static lv_color_t soft_fill(void)
|
||||
{
|
||||
return lv_color_hex(0xe6e6e6);
|
||||
}
|
||||
|
||||
static int clamp_percent(int value)
|
||||
{
|
||||
if (value < 0) {
|
||||
@ -123,6 +128,8 @@ static int clamp_percent(int value)
|
||||
return value;
|
||||
}
|
||||
|
||||
static void format_percent_compact(int percent, char *out, size_t out_size);
|
||||
|
||||
static lv_obj_t *make_colored_label(lv_obj_t *parent, const char *text, const lv_font_t *font, lv_color_t color)
|
||||
{
|
||||
lv_obj_t *label = lv_label_create(parent);
|
||||
@ -176,6 +183,24 @@ static void set_bar_percent(lv_obj_t *bar, int percent)
|
||||
lv_bar_set_value(bar, percent >= 0 ? clamp_percent(percent) : 0, LV_ANIM_OFF);
|
||||
}
|
||||
|
||||
static int remaining_percent_from_used(int used_percent)
|
||||
{
|
||||
if (used_percent < 0) {
|
||||
return -1;
|
||||
}
|
||||
return 100 - clamp_percent(used_percent);
|
||||
}
|
||||
|
||||
static void set_remaining_bar(lv_obj_t *bar, lv_obj_t *label, int used_percent)
|
||||
{
|
||||
int remaining = remaining_percent_from_used(used_percent);
|
||||
char value[12];
|
||||
|
||||
format_percent_compact(remaining, value, sizeof(value));
|
||||
lv_label_set_text(label, value);
|
||||
set_bar_percent(bar, remaining);
|
||||
}
|
||||
|
||||
static lv_obj_t *make_rule(lv_obj_t *parent, int x, int y, int w, int h)
|
||||
{
|
||||
lv_obj_t *rule = lv_obj_create(parent);
|
||||
@ -205,6 +230,17 @@ static lv_obj_t *make_bar(lv_obj_t *parent, int w, int h)
|
||||
return bar;
|
||||
}
|
||||
|
||||
static lv_obj_t *make_quota_bar(lv_obj_t *parent, int w, int h)
|
||||
{
|
||||
lv_obj_t *bar = make_bar(parent, w, h);
|
||||
lv_obj_set_style_bg_color(bar, soft_fill(), 0);
|
||||
lv_obj_set_style_border_width(bar, 0, 0);
|
||||
lv_obj_set_style_radius(bar, 1, 0);
|
||||
lv_obj_set_style_pad_all(bar, 0, 0);
|
||||
lv_obj_set_style_radius(bar, 1, LV_PART_INDICATOR);
|
||||
return bar;
|
||||
}
|
||||
|
||||
static lv_obj_t *make_net_arrow(lv_obj_t *parent, const lv_point_precise_t *points, uint32_t count)
|
||||
{
|
||||
lv_obj_t *line = lv_line_create(parent);
|
||||
@ -454,13 +490,8 @@ static void update_codex_panel(const ui_metrics_t *metrics)
|
||||
char reset_5h[12];
|
||||
char reset_week[12];
|
||||
|
||||
format_percent_compact(metrics->codex_5h_percent, value, sizeof(value));
|
||||
lv_label_set_text(s_codex_5h_value_label, value);
|
||||
set_bar_percent(s_codex_5h_bar, metrics->codex_5h_percent);
|
||||
|
||||
format_percent_compact(metrics->codex_week_percent, value, sizeof(value));
|
||||
lv_label_set_text(s_codex_week_value_label, value);
|
||||
set_bar_percent(s_codex_week_bar, metrics->codex_week_percent);
|
||||
set_remaining_bar(s_codex_5h_bar, s_codex_5h_value_label, metrics->codex_5h_percent);
|
||||
set_remaining_bar(s_codex_week_bar, s_codex_week_value_label, metrics->codex_week_percent);
|
||||
|
||||
format_reset_mins(metrics->codex_5h_reset_mins, reset_5h, sizeof(reset_5h));
|
||||
format_reset_mins(metrics->codex_week_reset_mins, reset_week, sizeof(reset_week));
|
||||
@ -493,7 +524,6 @@ static void update_codex_panel(const ui_metrics_t *metrics)
|
||||
|
||||
static void update_zhipu_panel(const ui_metrics_t *metrics)
|
||||
{
|
||||
char value[12];
|
||||
char reset[12];
|
||||
char text[24];
|
||||
|
||||
@ -504,15 +534,11 @@ static void update_zhipu_panel(const ui_metrics_t *metrics)
|
||||
}
|
||||
lv_label_set_text(s_zhipu_today_label, text);
|
||||
|
||||
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);
|
||||
set_remaining_bar(s_zhipu_5h_bar, s_zhipu_5h_value_label, metrics->zhipu_5h_percent);
|
||||
format_reset_mins(metrics->zhipu_5h_reset_mins, reset, sizeof(reset));
|
||||
lv_label_set_text(s_zhipu_5h_reset_label, reset);
|
||||
|
||||
format_percent_compact(metrics->zhipu_week_percent, value, sizeof(value));
|
||||
lv_label_set_text(s_zhipu_week_value_label, value);
|
||||
set_bar_percent(s_zhipu_week_bar, metrics->zhipu_week_percent);
|
||||
set_remaining_bar(s_zhipu_week_bar, s_zhipu_week_value_label, metrics->zhipu_week_percent);
|
||||
format_reset_mins(metrics->zhipu_week_reset_mins, reset, sizeof(reset));
|
||||
lv_label_set_text(s_zhipu_week_reset_label, reset);
|
||||
|
||||
@ -706,26 +732,28 @@ void ui_screen_create(void)
|
||||
lv_obj_align(s_codex_today_label, LV_ALIGN_TOP_LEFT, 126, 184);
|
||||
|
||||
s_codex_5h_label = make_label(screen, "5H", &lv_font_montserrat_14);
|
||||
lv_obj_set_width(s_codex_5h_label, 28);
|
||||
lv_obj_set_width(s_codex_5h_label, 24);
|
||||
lv_obj_align(s_codex_5h_label, LV_ALIGN_TOP_LEFT, 8, 204);
|
||||
s_codex_5h_bar = make_bar(screen, 78, 8);
|
||||
lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, 36, 208);
|
||||
s_codex_5h_bar = make_quota_bar(screen, 84, 7);
|
||||
lv_obj_align(s_codex_5h_bar, LV_ALIGN_TOP_LEFT, 34, 209);
|
||||
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_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);
|
||||
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);
|
||||
|
||||
s_codex_week_label = make_label(screen, "WK", &lv_font_montserrat_14);
|
||||
lv_obj_set_width(s_codex_week_label, 28);
|
||||
lv_obj_set_width(s_codex_week_label, 24);
|
||||
lv_obj_align(s_codex_week_label, LV_ALIGN_TOP_LEFT, 8, 224);
|
||||
s_codex_week_bar = make_bar(screen, 78, 8);
|
||||
lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, 36, 228);
|
||||
s_codex_week_bar = make_quota_bar(screen, 84, 7);
|
||||
lv_obj_align(s_codex_week_bar, LV_ALIGN_TOP_LEFT, 34, 229);
|
||||
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_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);
|
||||
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);
|
||||
@ -756,26 +784,28 @@ void ui_screen_create(void)
|
||||
lv_obj_align(s_zhipu_today_label, LV_ALIGN_TOP_LEFT, 326, 184);
|
||||
|
||||
s_zhipu_5h_label = make_label(screen, "5H", &lv_font_montserrat_14);
|
||||
lv_obj_set_width(s_zhipu_5h_label, 28);
|
||||
lv_obj_set_width(s_zhipu_5h_label, 24);
|
||||
lv_obj_align(s_zhipu_5h_label, LV_ALIGN_TOP_LEFT, 208, 204);
|
||||
s_zhipu_5h_bar = make_bar(screen, 78, 8);
|
||||
lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, 236, 208);
|
||||
s_zhipu_5h_bar = make_quota_bar(screen, 84, 7);
|
||||
lv_obj_align(s_zhipu_5h_bar, LV_ALIGN_TOP_LEFT, 234, 209);
|
||||
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, 204);
|
||||
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);
|
||||
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, 204);
|
||||
|
||||
s_zhipu_week_label = make_label(screen, "WK", &lv_font_montserrat_14);
|
||||
lv_obj_set_width(s_zhipu_week_label, 28);
|
||||
lv_obj_set_width(s_zhipu_week_label, 24);
|
||||
lv_obj_align(s_zhipu_week_label, LV_ALIGN_TOP_LEFT, 208, 224);
|
||||
s_zhipu_week_bar = make_bar(screen, 78, 8);
|
||||
lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, 236, 228);
|
||||
s_zhipu_week_bar = make_quota_bar(screen, 84, 7);
|
||||
lv_obj_align(s_zhipu_week_bar, LV_ALIGN_TOP_LEFT, 234, 229);
|
||||
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, 224);
|
||||
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);
|
||||
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);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user