summaryrefslogtreecommitdiff
path: root/src/ui.c
diff options
context:
space:
mode:
authorMole Shang <[email protected]>2023-08-10 14:15:00 +0800
committerMole Shang <[email protected]>2023-08-10 14:15:00 +0800
commit6cbcaba2a80c47714e8aa45d021bdcd4965780b1 (patch)
tree0adcb9b088997689e18fad20a463ea681e4f50b7 /src/ui.c
parentef4918ffeb326751fa17c2c8335963be4e43254f (diff)
downloadhinata-6cbcaba2a80c47714e8aa45d021bdcd4965780b1.tar.gz
hinata-6cbcaba2a80c47714e8aa45d021bdcd4965780b1.tar.bz2
hinata-6cbcaba2a80c47714e8aa45d021bdcd4965780b1.zip
ui: show progress while remuxing
Diffstat (limited to 'src/ui.c')
-rw-r--r--src/ui.c30
1 files changed, 23 insertions, 7 deletions
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 <string.h>
#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);