static void _status_bar_draw(void) { if (last_time) { g_date_time_unref(last_time); } last_time = g_date_time_new_now_local(); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); char *time_pref = prefs_get_string(PREF_TIME_STATUSBAR); if (g_strcmp0(time_pref, "off") != 0) { gchar *date_fmt = g_date_time_format(last_time, time_pref); assert(date_fmt != NULL); size_t len = strlen(date_fmt); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 1, '['); wattroff(status_bar, bracket_attrs); mvwprintw(status_bar, 0, 2, date_fmt); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 2 + len, ']'); wattroff(status_bar, bracket_attrs); g_free(date_fmt); } prefs_free_string(time_pref); _update_win_statuses(); wnoutrefresh(status_bar); inp_put_back(); }
static void _status_bar_resize(void) { int rows, cols; getmaxyx(stdscr, rows, cols); mvwin(status_bar, rows-2, 0); wresize(status_bar, 1, cols); wbkgd(status_bar, COLOUR_STATUS_TEXT); werase(status_bar); wattron(status_bar, COLOUR_STATUS_BRACKET); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, COLOUR_STATUS_BRACKET); _update_win_statuses(); if (message != NULL) mvwprintw(status_bar, 0, 10, message); if (last_time != NULL) g_date_time_unref(last_time); last_time = g_date_time_new_now_local(); dirty = TRUE; }
static void _status_bar_clear_message(void) { if (message != NULL) { free(message); message = NULL; } werase(status_bar); int cols = getmaxx(stdscr); wattron(status_bar, COLOUR_STATUS_BRACKET); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, COLOUR_STATUS_BRACKET); _update_win_statuses(); dirty = TRUE; }
static void _status_bar_print_message(const char * const msg) { werase(status_bar); if (message != NULL) { free(message); } message = strdup(msg); mvwprintw(status_bar, 0, 10, message); int cols = getmaxx(stdscr); wattron(status_bar, COLOUR_STATUS_BRACKET); mvwprintw(status_bar, 0, cols - 34, _active); mvwprintw(status_bar, 0, cols - 34 + ((current - 1) * 3), bracket); wattroff(status_bar, COLOUR_STATUS_BRACKET); _update_win_statuses(); dirty = TRUE; }
static void _status_bar_draw(void) { if (last_time) { g_date_time_unref(last_time); } last_time = g_date_time_new_now_local(); int bracket_attrs = theme_attrs(THEME_STATUS_BRACKET); char *time_pref = prefs_get_string(PREF_TIME_STATUSBAR); if (g_strcmp0(time_pref, "minutes") == 0) { gchar *date_fmt = g_date_time_format(last_time, "%H:%M"); assert(date_fmt != NULL); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 1, '['); wattroff(status_bar, bracket_attrs); mvwprintw(status_bar, 0, 2, date_fmt); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 7, ']'); wattroff(status_bar, bracket_attrs); g_free(date_fmt); } else if (g_strcmp0(time_pref, "seconds") == 0) { gchar *date_fmt = g_date_time_format(last_time, "%H:%M:%S"); assert(date_fmt != NULL); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 1, '['); wattroff(status_bar, bracket_attrs); mvwprintw(status_bar, 0, 2, date_fmt); wattron(status_bar, bracket_attrs); mvwaddch(status_bar, 0, 10, ']'); wattroff(status_bar, bracket_attrs); g_free(date_fmt); } _update_win_statuses(); wnoutrefresh(status_bar); inp_put_back(); }
static void _status_bar_refresh(void) { GDateTime *now_time = g_date_time_new_now_local(); GTimeSpan elapsed = g_date_time_difference(now_time, last_time); if (elapsed >= 60000000) { dirty = TRUE; if (last_time != NULL) g_date_time_unref(last_time); last_time = g_date_time_new_now_local(); } if (dirty) { _status_bar_update_time(); _update_win_statuses(); wrefresh(status_bar); inp_put_back(); dirty = FALSE; } g_date_time_unref(now_time); }