1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0 27da5c85dSNamhyung Kim #include "../cache.h" 37da5c85dSNamhyung Kim #include "../progress.h" 47da5c85dSNamhyung Kim #include "../libslang.h" 57da5c85dSNamhyung Kim #include "../ui.h" 64779a2e9SArnaldo Carvalho de Melo #include "tui.h" 77da5c85dSNamhyung Kim #include "../browser.h" 87da5c85dSNamhyung Kim 94d3001fdSArnaldo Carvalho de Melo static void tui_progress__update(struct ui_progress *p) 107da5c85dSNamhyung Kim { 117da5c85dSNamhyung Kim int bar, y; 127da5c85dSNamhyung Kim /* 137da5c85dSNamhyung Kim * FIXME: We should have a per UI backend way of showing progress, 147da5c85dSNamhyung Kim * stdio will just show a percentage as NN%, etc. 157da5c85dSNamhyung Kim */ 167da5c85dSNamhyung Kim if (use_browser <= 0) 177da5c85dSNamhyung Kim return; 187da5c85dSNamhyung Kim 194d3001fdSArnaldo Carvalho de Melo if (p->total == 0) 207da5c85dSNamhyung Kim return; 217da5c85dSNamhyung Kim 22d53e57d0SPatrick Palka ui__refresh_dimensions(false); 237da5c85dSNamhyung Kim pthread_mutex_lock(&ui__lock); 247da5c85dSNamhyung Kim y = SLtt_Screen_Rows / 2 - 2; 257da5c85dSNamhyung Kim SLsmg_set_color(0); 267da5c85dSNamhyung Kim SLsmg_draw_box(y, 0, 3, SLtt_Screen_Cols); 277da5c85dSNamhyung Kim SLsmg_gotorc(y++, 1); 284d3001fdSArnaldo Carvalho de Melo SLsmg_write_string((char *)p->title); 29d53e57d0SPatrick Palka SLsmg_fill_region(y, 1, 1, SLtt_Screen_Cols - 2, ' '); 307da5c85dSNamhyung Kim SLsmg_set_color(HE_COLORSET_SELECTED); 314d3001fdSArnaldo Carvalho de Melo bar = ((SLtt_Screen_Cols - 2) * p->curr) / p->total; 327da5c85dSNamhyung Kim SLsmg_fill_region(y, 1, 1, bar, ' '); 337da5c85dSNamhyung Kim SLsmg_refresh(); 347da5c85dSNamhyung Kim pthread_mutex_unlock(&ui__lock); 357da5c85dSNamhyung Kim } 36688f2f5bSNamhyung Kim 371e259ad4SArnaldo Carvalho de Melo static void tui_progress__finish(void) 381e259ad4SArnaldo Carvalho de Melo { 391e259ad4SArnaldo Carvalho de Melo int y; 401e259ad4SArnaldo Carvalho de Melo 411e259ad4SArnaldo Carvalho de Melo if (use_browser <= 0) 421e259ad4SArnaldo Carvalho de Melo return; 431e259ad4SArnaldo Carvalho de Melo 441e259ad4SArnaldo Carvalho de Melo ui__refresh_dimensions(false); 451e259ad4SArnaldo Carvalho de Melo pthread_mutex_lock(&ui__lock); 461e259ad4SArnaldo Carvalho de Melo y = SLtt_Screen_Rows / 2 - 2; 471e259ad4SArnaldo Carvalho de Melo SLsmg_set_color(0); 481e259ad4SArnaldo Carvalho de Melo SLsmg_fill_region(y, 0, 3, SLtt_Screen_Cols, ' '); 491e259ad4SArnaldo Carvalho de Melo SLsmg_refresh(); 501e259ad4SArnaldo Carvalho de Melo pthread_mutex_unlock(&ui__lock); 511e259ad4SArnaldo Carvalho de Melo } 521e259ad4SArnaldo Carvalho de Melo 534779a2e9SArnaldo Carvalho de Melo static struct ui_progress_ops tui_progress__ops = 54688f2f5bSNamhyung Kim { 55688f2f5bSNamhyung Kim .update = tui_progress__update, 561e259ad4SArnaldo Carvalho de Melo .finish = tui_progress__finish, 57688f2f5bSNamhyung Kim }; 58688f2f5bSNamhyung Kim 594779a2e9SArnaldo Carvalho de Melo void tui_progress__init(void) 60688f2f5bSNamhyung Kim { 614779a2e9SArnaldo Carvalho de Melo ui_progress__ops = &tui_progress__ops; 62688f2f5bSNamhyung Kim } 63