From 6cbcaba2a80c47714e8aa45d021bdcd4965780b1 Mon Sep 17 00:00:00 2001 From: Mole Shang <135e2@135e2.dev> Date: Thu, 10 Aug 2023 14:15:00 +0800 Subject: ui: show progress while remuxing --- src/ui.c | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) (limited to 'src/ui.c') diff --git a/src/ui.c b/src/ui.c index a54c9aa..a36bb8e 100644 --- a/src/ui.c +++ b/src/ui.c @@ -5,12 +5,14 @@ #include #include "nuklear.h" +#include "process_url.h" #include "tinyfiledialogs.h" #include "constants.h" #include "logger.h" #include "ui.h" #include "utils/size_info.h" +#include "utils/time_info.h" static nk_size pct; static bool show_app_about; @@ -27,14 +29,27 @@ void load_ui(struct ui_struct *ui) { poll_status(ui->stat); if (ui->stat->total) { pct = (ui->stat->cur) * 100 / (ui->stat->total); - size_info_t info_cur = num2sizeinfo((unsigned long)ui->stat->cur); - size_info_t info_total = num2sizeinfo((unsigned long)ui->stat->total); - sprintf(status_string, "%.2Lf%s/%.2Lf%s, %hhu%%", info_cur.n, - info_cur.unit_str, info_total.n, info_total.unit_str, - (unsigned char)pct); + if (ui->stat->type == SIZE_BYTES) { + size_info_t info_cur = num2sizeinfo(ui->stat->cur); + size_info_t info_total = num2sizeinfo(ui->stat->total); + sprintf(status_string, "%.2Lf%s/%.2Lf%s, %hhu%%", info_cur.n, + info_cur.unit_str, info_total.n, info_total.unit_str, + (unsigned char)pct); + } else if (ui->stat->type == TIME_SECS) { + char *cur_ts = malloc(9), *total_ts = malloc(9); + sec2timestamp(ui->stat->cur, (char **)&cur_ts); + sec2timestamp(ui->stat->total, (char **)&total_ts); + + sprintf(status_string, "%s/%s, %hhu%%", cur_ts, total_ts, + (unsigned char)pct); + free_and_nullify((void **)&cur_ts); + free_and_nullify((void **)&total_ts); + } } if (ui->stat->is_done) { - (ui->stat->total) = 0; // To prevent nuklear further updating status_string + // (ui->stat->total) = 0; // To prevent nuklear further updating + // status_string + ui->stat->type = TIME_SECS; // Set for the callback stat } nk_menubar_begin(ui->ctx); @@ -56,7 +71,8 @@ void load_ui(struct ui_struct *ui) { if (nk_popup_begin(ui->ctx, NK_POPUP_STATIC, "About", NK_WINDOW_CLOSABLE, s)) { nk_layout_row_dynamic(ui->ctx, 30, 1); - nk_label(ui->ctx, "A cross-platform multi-thread downloader", NK_TEXT_LEFT); + nk_label(ui->ctx, "A cross-platform multi-thread downloader", + NK_TEXT_LEFT); nk_label(ui->ctx, "By Mole Shang", NK_TEXT_LEFT); SPACER; nk_label(ui->ctx, "hinata is licensed under LGPL-3.0.", NK_TEXT_LEFT); -- cgit v1.2.3