1 #include "../cache.h" 2 #include "../progress.h" 3 #include "../libslang.h" 4 #include "../ui.h" 5 #include "tui.h" 6 #include "../browser.h" 7 8 static void tui_progress__update(struct ui_progress *p) 9 { 10 int bar, y; 11 /* 12 * FIXME: We should have a per UI backend way of showing progress, 13 * stdio will just show a percentage as NN%, etc. 14 */ 15 if (use_browser <= 0) 16 return; 17 18 if (p->total == 0) 19 return; 20 21 ui__refresh_dimensions(false); 22 pthread_mutex_lock(&ui__lock); 23 y = SLtt_Screen_Rows / 2 - 2; 24 SLsmg_set_color(0); 25 SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols); 26 SLsmg_gotorc(y++, 1); 27 SLsmg_write_string((char *)p->title); 28 SLsmg_fill_region(y, 1, 1, SLtt_Screen_Cols - 2, ' '); 29 SLsmg_set_color(HE_COLORSET_SELECTED); 30 bar = ((SLtt_Screen_Cols - 2) * p->curr) / p->total; 31 SLsmg_fill_region(y, 1, 1, bar, ' '); 32 SLsmg_refresh(); 33 pthread_mutex_unlock(&ui__lock); 34 } 35 36 static struct ui_progress_ops tui_progress__ops = 37 { 38 .update = tui_progress__update, 39 }; 40 41 void tui_progress__init(void) 42 { 43 ui_progress__ops = &tui_progress__ops; 44 } 45