# HG changeset patch # User Colin Clark # Date 1527440278 -3600 # Node ID 735a3fbc4b2838160c434559dd8f951859cd4fb8 # Parent 031705583cafb72094d650f597f578d168854465 Pan view calendar - show day-of-week legend diff -r 031705583caf -r 735a3fbc4b28 src/misc.c --- 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: */ diff -r 031705583caf -r 735a3fbc4b28 src/misc.h --- 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: */ diff -r 031705583caf -r 735a3fbc4b28 src/pan-view/pan-calendar.c --- 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);