17da5c85dSNamhyung Kim #include "../cache.h" 27da5c85dSNamhyung Kim #include "../progress.h" 37da5c85dSNamhyung Kim #include "../libslang.h" 47da5c85dSNamhyung Kim #include "../ui.h" 54779a2e9SArnaldo Carvalho de Melo #include "tui.h" 67da5c85dSNamhyung Kim #include "../browser.h" 77da5c85dSNamhyung Kim 84d3001fdSArnaldo Carvalho de Melo static void tui_progress__update(struct ui_progress *p) 97da5c85dSNamhyung Kim { 107da5c85dSNamhyung Kim int bar, y; 117da5c85dSNamhyung Kim /* 127da5c85dSNamhyung Kim * FIXME: We should have a per UI backend way of showing progress, 137da5c85dSNamhyung Kim * stdio will just show a percentage as NN%, etc. 147da5c85dSNamhyung Kim */ 157da5c85dSNamhyung Kim if (use_browser <= 0) 167da5c85dSNamhyung Kim return; 177da5c85dSNamhyung Kim 184d3001fdSArnaldo Carvalho de Melo if (p->total == 0) 197da5c85dSNamhyung Kim return; 207da5c85dSNamhyung Kim 21d53e57d0SPatrick Palka ui__refresh_dimensions(false); 227da5c85dSNamhyung Kim pthread_mutex_lock(&ui__lock); 237da5c85dSNamhyung Kim y = SLtt_Screen_Rows / 2 - 2; 247da5c85dSNamhyung Kim SLsmg_set_color(0); 257da5c85dSNamhyung Kim SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols); 267da5c85dSNamhyung Kim SLsmg_gotorc(y++, 1); 274d3001fdSArnaldo Carvalho de Melo SLsmg_write_string((char *)p->title); 28d53e57d0SPatrick Palka SLsmg_fill_region(y, 1, 1, SLtt_Screen_Cols - 2, ' '); 297da5c85dSNamhyung Kim SLsmg_set_color(HE_COLORSET_SELECTED); 304d3001fdSArnaldo Carvalho de Melo bar = ((SLtt_Screen_Cols - 2) * p->curr) / p->total; 317da5c85dSNamhyung Kim SLsmg_fill_region(y, 1, 1, bar, ' '); 327da5c85dSNamhyung Kim SLsmg_refresh(); 337da5c85dSNamhyung Kim pthread_mutex_unlock(&ui__lock); 347da5c85dSNamhyung Kim } 35688f2f5bSNamhyung Kim 361e259ad4SArnaldo Carvalho de Melo static void tui_progress__finish(void) 371e259ad4SArnaldo Carvalho de Melo { 381e259ad4SArnaldo Carvalho de Melo int y; 391e259ad4SArnaldo Carvalho de Melo 401e259ad4SArnaldo Carvalho de Melo if (use_browser <= 0) 411e259ad4SArnaldo Carvalho de Melo return; 421e259ad4SArnaldo Carvalho de Melo 431e259ad4SArnaldo Carvalho de Melo ui__refresh_dimensions(false); 441e259ad4SArnaldo Carvalho de Melo pthread_mutex_lock(&ui__lock); 451e259ad4SArnaldo Carvalho de Melo y = SLtt_Screen_Rows / 2 - 2; 461e259ad4SArnaldo Carvalho de Melo SLsmg_set_color(0); 471e259ad4SArnaldo Carvalho de Melo SLsmg_fill_region(y, 0, 3, SLtt_Screen_Cols, ' '); 481e259ad4SArnaldo Carvalho de Melo SLsmg_refresh(); 491e259ad4SArnaldo Carvalho de Melo pthread_mutex_unlock(&ui__lock); 501e259ad4SArnaldo Carvalho de Melo } 511e259ad4SArnaldo Carvalho de Melo 524779a2e9SArnaldo Carvalho de Melo static struct ui_progress_ops tui_progress__ops = 53688f2f5bSNamhyung Kim { 54688f2f5bSNamhyung Kim .update = tui_progress__update, 551e259ad4SArnaldo Carvalho de Melo .finish = tui_progress__finish, 56688f2f5bSNamhyung Kim }; 57688f2f5bSNamhyung Kim 584779a2e9SArnaldo Carvalho de Melo void tui_progress__init(void) 59688f2f5bSNamhyung Kim { 604779a2e9SArnaldo Carvalho de Melo ui_progress__ops = &tui_progress__ops; 61688f2f5bSNamhyung Kim } 62