Mercurial > hg > forks > geeqie
changeset 2762:735a3fbc4b28
Pan view calendar - show day-of-week legend
author | Colin Clark <colin.clark@cclark.uk> |
---|---|
date | Sun, 27 May 2018 17:57:58 +0100 |
parents | 031705583caf |
children | 5e4e640df4d8 |
files | src/misc.c src/misc.h src/pan-view/pan-calendar.c |
diffstat | 3 files changed, 54 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/misc.c Sun May 27 10:45:10 2018 +0100 +++ b/src/misc.c Sun May 27 17:57:58 2018 +0100 @@ -252,5 +252,46 @@ return nl_langinfo(_NL_TIME_FIRST_WEEKDAY)[0]; } +/** + * @brief Get an abbreviated day name from locale + * @param day Integer in range 1 to 7, representing day of week + * @returns String containing abbreviated day name + * + * Uses current locale to get day name + * + * Sunday == 1 + * Result must be freed + */ +gchar *date_get_abbreviated_day_name(gint day) +{ + gchar *abday = NULL; + + switch (day) + { + case 1: + abday = g_strdup(nl_langinfo(ABDAY_1)); + break; + case 2: + abday = g_strdup(nl_langinfo(ABDAY_2)); + break; + case 3: + abday = g_strdup(nl_langinfo(ABDAY_3)); + break; + case 4: + abday = g_strdup(nl_langinfo(ABDAY_4)); + break; + case 5: + abday = g_strdup(nl_langinfo(ABDAY_5)); + break; + case 6: + abday = g_strdup(nl_langinfo(ABDAY_6)); + break; + case 7: + abday = g_strdup(nl_langinfo(ABDAY_7)); + break; + } + + return abday; +} /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
--- a/src/misc.h Sun May 27 10:45:10 2018 +0100 +++ b/src/misc.h Sun May 27 17:57:58 2018 +0100 @@ -28,5 +28,6 @@ int runcmd(gchar *cmd); gchar *decode_geo_parameters(const gchar *input_text); gint date_get_first_day_of_week(); +gchar *date_get_abbreviated_day_name(gint day); #endif /* MISC_H */ /* vim: set shiftwidth=8 softtabstop=0 cindent cinoptions={1s: */
--- a/src/pan-view/pan-calendar.c Sun May 27 10:45:10 2018 +0100 +++ b/src/pan-view/pan-calendar.c Sun May 27 17:57:58 2018 +0100 @@ -56,6 +56,7 @@ #define PAN_CAL_DOT_COLOR 128, 128, 128 #define PAN_CAL_DOT_ALPHA 128 +#define PAN_CAL_DAY_OF_WEEK_COLOR 128, 128, 128 /* *----------------------------------------------------------------------------- @@ -200,6 +201,7 @@ gint month = 0; gint end_year = 0; gint end_month = 0; + gint day_of_week; list = pan_list_tree(dir_fd, SORT_NONE, TRUE, pw->ignore_symlinks); pan_filter_fd_list(&list, pw->filter_ui->filter_elements); @@ -268,6 +270,7 @@ { PanItem *pi_month; PanItem *pi_text; + PanItem *pi_day_number; gint day; gint days; gint col; @@ -391,11 +394,19 @@ } buf = g_strdup_printf("%d", day); - pan_item_text_new(pw, x + 4, y + 4, buf, PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING, + pi_day_number = pan_item_text_new(pw, x + 4, y + 4, buf, PAN_TEXT_ATTR_BOLD | PAN_TEXT_ATTR_HEADING, PAN_TEXT_BORDER_SIZE, PAN_CAL_DAY_TEXT_COLOR, 255); g_free(buf); + day_of_week = date_get_first_day_of_week() + col; + if (day_of_week > 7) day_of_week = day_of_week - 7; + + buf = date_get_abbreviated_day_name(day_of_week); + pan_item_text_new(pw, x + 4 + pi_day_number->width + 4, y + 4, buf, PAN_TEXT_ATTR_NONE, + PAN_TEXT_BORDER_SIZE, + PAN_CAL_DAY_OF_WEEK_COLOR, 255); + g_free(buf); pan_item_size_coordinates(pi_day, PAN_BOX_BORDER, width, height);