Example #1
0
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();
}
Example #2
0
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;
}
Example #3
0
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;
}
Example #4
0
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;
}
Example #5
0
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();
}
Example #6
0
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);
}