17da5c85dSNamhyung Kim #include "../cache.h" 27da5c85dSNamhyung Kim #include "../progress.h" 37da5c85dSNamhyung Kim #include "../libslang.h" 47da5c85dSNamhyung Kim #include "../ui.h" 57da5c85dSNamhyung Kim #include "../browser.h" 67da5c85dSNamhyung Kim 7688f2f5bSNamhyung Kim static void tui_progress__update(u64 curr, u64 total, const char *title) 87da5c85dSNamhyung Kim { 97da5c85dSNamhyung Kim int bar, y; 107da5c85dSNamhyung Kim /* 117da5c85dSNamhyung Kim * FIXME: We should have a per UI backend way of showing progress, 127da5c85dSNamhyung Kim * stdio will just show a percentage as NN%, etc. 137da5c85dSNamhyung Kim */ 147da5c85dSNamhyung Kim if (use_browser <= 0) 157da5c85dSNamhyung Kim return; 167da5c85dSNamhyung Kim 177da5c85dSNamhyung Kim if (total == 0) 187da5c85dSNamhyung Kim return; 197da5c85dSNamhyung Kim 207da5c85dSNamhyung Kim ui__refresh_dimensions(true); 217da5c85dSNamhyung Kim pthread_mutex_lock(&ui__lock); 227da5c85dSNamhyung Kim y = SLtt_Screen_Rows / 2 - 2; 237da5c85dSNamhyung Kim SLsmg_set_color(0); 247da5c85dSNamhyung Kim SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols); 257da5c85dSNamhyung Kim SLsmg_gotorc(y++, 1); 267da5c85dSNamhyung Kim SLsmg_write_string((char *)title); 277da5c85dSNamhyung Kim SLsmg_set_color(HE_COLORSET_SELECTED); 287da5c85dSNamhyung Kim bar = ((SLtt_Screen_Cols - 2) * curr) / total; 297da5c85dSNamhyung Kim SLsmg_fill_region(y, 1, 1, bar, ' '); 307da5c85dSNamhyung Kim SLsmg_refresh(); 317da5c85dSNamhyung Kim pthread_mutex_unlock(&ui__lock); 327da5c85dSNamhyung Kim } 33688f2f5bSNamhyung Kim 34688f2f5bSNamhyung Kim static struct ui_progress tui_progress_fns = 35688f2f5bSNamhyung Kim { 36688f2f5bSNamhyung Kim .update = tui_progress__update, 37688f2f5bSNamhyung Kim }; 38688f2f5bSNamhyung Kim 39688f2f5bSNamhyung Kim void ui_progress__init(void) 40688f2f5bSNamhyung Kim { 41688f2f5bSNamhyung Kim progress_fns = &tui_progress_fns; 42688f2f5bSNamhyung Kim } 43