From 7fef4ba1e95a25b78600434b2a71ce0762db47f1 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 5 Dec 2007 20:50:15 +0000 Subject: ** Fixes bug #392747 (extra cleanup work) 2007-12-05 Matthew Barnes ** Fixes bug #392747 (extra cleanup work) * calendar/gui/e-day-view.c (e_day_view_style_set): * calendar/gui/e-week-view-titles-item.c (e_week_view_titles_item_draw): * calendar/gui/e-week-view.c (e_week_view_style_set): * calendar/gui/print.c (print_month_summary): * calendar/gui/e-meeting-time-sel.c (e_meeting_time_selector_recalc_date_form): Call e_get_month_name() or e_get_weekday_name() instead of e_utf8_strftime() or g_date_strftime(). e_utf8_strftime() or g_date_strftime(). * widgets/misc/e-calendar-item.c (e_calendar_item_show_popup_menu): Call e_get_month_name() instead of e_utf8_strftime(). svn path=/trunk/; revision=34659 --- calendar/ChangeLog | 12 +++++++ calendar/gui/e-day-view.c | 66 ++++++++++------------------------ calendar/gui/e-meeting-time-sel.c | 18 +++++----- calendar/gui/e-week-view-titles-item.c | 43 +++++++++------------- calendar/gui/e-week-view.c | 26 ++++++-------- calendar/gui/print.c | 22 ++++++------ widgets/misc/ChangeLog | 7 ++++ widgets/misc/e-calendar-item.c | 12 ++----- 8 files changed, 85 insertions(+), 121 deletions(-) diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 7f4035f554..4e801a8f97 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,15 @@ +2007-12-05 Matthew Barnes + + ** Fixes part of bug #392747 (extra cleanup work) + + * gui/e-day-view.c (e_day_view_style_set): + * gui/e-week-view-titles-item.c (e_week_view_titles_item_draw): + * gui/e-week-view.c (e_week_view_style_set): + * gui/print.c (print_month_summary): + * gui/e-meeting-time-sel.c (e_meeting_time_selector_recalc_date_form): + Call e_get_month_name() or e_get_weekday_name() instead of + e_utf8_strftime() or g_date_strftime(). + 2007-12-05 Milan Crha ** Fix for bug #501474 diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 45de0472f5..cb5743e3b3 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -1687,8 +1687,8 @@ e_day_view_style_set (GtkWidget *widget, gint month, day, width; gint longest_month_width, longest_abbreviated_month_width; gint longest_weekday_width, longest_abbreviated_weekday_width; - struct tm date_tm; gchar buffer[128]; + const gchar *name; gint times_width; PangoFontDescription *font_desc; PangoContext *pango_context; @@ -1775,18 +1775,11 @@ e_day_view_style_set (GtkWidget *widget, e_day_view_update_top_scroll (day_view, TRUE); /* Find the longest full & abbreviated month names. */ - memset (&date_tm, 0, sizeof (date_tm)); - date_tm.tm_year = 100; - date_tm.tm_mday = 1; - date_tm.tm_isdst = -1; - longest_month_width = 0; longest_abbreviated_month_width = 0; for (month = 0; month < 12; month++) { - date_tm.tm_mon = month; - - e_utf8_strftime (buffer, sizeof (buffer), "%B", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_month_name (month + 1, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_month_width) { @@ -1794,8 +1787,8 @@ e_day_view_style_set (GtkWidget *widget, day_view->longest_month_name = month; } - e_utf8_strftime (buffer, sizeof (buffer), "%b", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_month_name (month + 1, TRUE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_abbreviated_month_width) { @@ -1805,19 +1798,11 @@ e_day_view_style_set (GtkWidget *widget, } /* Find the longest full & abbreviated weekday names. */ - memset (&date_tm, 0, sizeof (date_tm)); - date_tm.tm_year = 100; - date_tm.tm_mon = 0; - date_tm.tm_isdst = -1; - longest_weekday_width = 0; longest_abbreviated_weekday_width = 0; for (day = 0; day < 7; day++) { - date_tm.tm_mday = 2 + day; - date_tm.tm_wday = day; - - e_utf8_strftime (buffer, sizeof (buffer), "%A", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day + 1, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_weekday_width) { @@ -1825,8 +1810,8 @@ e_day_view_style_set (GtkWidget *widget, day_view->longest_weekday_name = day; } - e_utf8_strftime (buffer, sizeof (buffer), "%a", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day + 1, TRUE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_abbreviated_weekday_width) { @@ -1888,8 +1873,8 @@ e_day_view_style_set (GtkWidget *widget, gint month, day, width; gint longest_month_width, longest_abbreviated_month_width; gint longest_weekday_width, longest_abbreviated_weekday_width; - struct tm date_tm; gchar buffer[128]; + const gchar *name; gint times_width; PangoFontDescription *font_desc; PangoContext *pango_context; @@ -1969,18 +1954,11 @@ e_day_view_style_set (GtkWidget *widget, e_day_view_update_top_scroll (day_view, TRUE); /* Find the longest full & abbreviated month names. */ - memset (&date_tm, 0, sizeof (date_tm)); - date_tm.tm_year = 100; - date_tm.tm_mday = 1; - date_tm.tm_isdst = -1; - longest_month_width = 0; longest_abbreviated_month_width = 0; for (month = 0; month < 12; month++) { - date_tm.tm_mon = month; - - e_utf8_strftime (buffer, sizeof (buffer), "%B", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_month_name (month + 1, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_month_width) { @@ -1988,8 +1966,8 @@ e_day_view_style_set (GtkWidget *widget, day_view->longest_month_name = month; } - e_utf8_strftime (buffer, sizeof (buffer), "%b", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_month_name (month + 1, TRUE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_abbreviated_month_width) { @@ -1999,19 +1977,11 @@ e_day_view_style_set (GtkWidget *widget, } /* Find the longest full & abbreviated weekday names. */ - memset (&date_tm, 0, sizeof (date_tm)); - date_tm.tm_year = 100; - date_tm.tm_mon = 0; - date_tm.tm_isdst = -1; - longest_weekday_width = 0; longest_abbreviated_weekday_width = 0; for (day = 0; day < 7; day++) { - date_tm.tm_mday = 2 + day; - date_tm.tm_wday = day; - - e_utf8_strftime (buffer, sizeof (buffer), "%A", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day + 1, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_weekday_width) { @@ -2019,8 +1989,8 @@ e_day_view_style_set (GtkWidget *widget, day_view->longest_weekday_name = day; } - e_utf8_strftime (buffer, sizeof (buffer), "%a", &date_tm); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day + 1, TRUE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_abbreviated_weekday_width) { diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c index 5367cd3335..013fa338f9 100644 --- a/calendar/gui/e-meeting-time-sel.c +++ b/calendar/gui/e-meeting-time-sel.c @@ -60,6 +60,7 @@ #include #include #include +#include #include "calendar-component.h" #include "calendar-config.h" @@ -2064,6 +2065,7 @@ e_meeting_time_selector_recalc_date_format (EMeetingTimeSelector *mts) gint max_date_width, longest_weekday_width, longest_month_width, width; gint day, longest_weekday, month, longest_month; gchar buffer[128]; + const gchar *name; PangoContext *pango_context; PangoLayout *layout; @@ -2081,23 +2083,21 @@ e_meeting_time_selector_recalc_date_format (EMeetingTimeSelector *mts) longest_weekday_width = 0; longest_weekday = G_DATE_MONDAY; for (day = G_DATE_MONDAY; day <= G_DATE_SUNDAY; day++) { - g_date_strftime (buffer, sizeof (buffer), "%A", &date); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_weekday_width) { longest_weekday = day; longest_weekday_width = width; } - g_date_add_days (&date, 1); } /* Now find the biggest month name. */ longest_month_width = 0; longest_month = G_DATE_JANUARY; for (month = G_DATE_JANUARY; month <= G_DATE_DECEMBER; month++) { - g_date_set_month (&date, month); - g_date_strftime (buffer, sizeof (buffer), "%B", &date); - pango_layout_set_text (layout, buffer, -1); + name = e_get_month_name (month, FALSE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_month_width) { longest_month = month; @@ -2130,16 +2130,14 @@ e_meeting_time_selector_recalc_date_format (EMeetingTimeSelector *mts) /* Now try it with abbreviated weekday names. */ longest_weekday_width = 0; longest_weekday = G_DATE_MONDAY; - g_date_set_dmy (&date, 3, 1, 2000); /* Monday 3rd Jan 2000. */ for (day = G_DATE_MONDAY; day <= G_DATE_SUNDAY; day++) { - g_date_strftime (buffer, sizeof (buffer), "%a", &date); - pango_layout_set_text (layout, buffer, -1); + name = e_get_weekday_name (day, TRUE); + pango_layout_set_text (layout, name, -1); pango_layout_get_pixel_size (layout, &width, NULL); if (width > longest_weekday_width) { longest_weekday = day; longest_weekday_width = width; } - g_date_add_days (&date, 1); } g_date_set_dmy (&date, days[longest_month - 1] + longest_weekday, diff --git a/calendar/gui/e-week-view-titles-item.c b/calendar/gui/e-week-view-titles-item.c index 08f401e599..ec8edcc780 100644 --- a/calendar/gui/e-week-view-titles-item.c +++ b/calendar/gui/e-week-view-titles-item.c @@ -31,6 +31,7 @@ #endif #include +#include #include "e-week-view-titles-item.h" static void e_week_view_titles_item_set_arg (GtkObject *o, @@ -139,10 +140,9 @@ e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item, GtkStyle *style; GdkGC *fg_gc, *light_gc, *dark_gc; gint canvas_width, canvas_height, col_width, col, date_width, date_x; - gchar buffer[128], *date_format; - GDate date; + gchar buffer[128]; GdkRectangle clip_rect; - gboolean long_format; + gboolean abbreviated; gint weekday; PangoLayout *layout; @@ -177,13 +177,7 @@ e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item, /* Determine the format to use. */ col_width = canvas_width / week_view->columns; - if (col_width > week_view->max_day_width + 2) { - date_format = "%A"; - long_format = TRUE; - } else { - date_format = "%a"; - long_format = FALSE; - } + abbreviated = (week_view->max_day_width + 2 >= col_width); /* Shift right one pixel to account for the shadow around the main canvas. */ @@ -191,20 +185,17 @@ e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item, /* Draw the date. Set a clipping rectangle so we don't draw over the next day. */ - g_date_clear (&date, 1); - /* Note that 20th March 2000 is a Monday. We only care about the - weekday. */ weekday = week_view->display_start_day; - g_date_set_dmy (&date, 20 + weekday, 3, 2000); for (col = 0; col < week_view->columns; col++) { - if (weekday == 5 && week_view->compress_weekend) { - g_date_strftime (buffer, 128, "%a/", &date); - g_date_add_days (&date, 1); - g_date_strftime (buffer + strlen (buffer), 100, - "%a", &date); - } else { - g_date_strftime (buffer, 128, date_format, &date); - } + if (weekday == 5 && week_view->compress_weekend) + g_snprintf ( + buffer, sizeof (buffer), "%s/%s", + e_get_weekday_name (G_DATE_SATURDAY, TRUE), + e_get_weekday_name (G_DATE_SUNDAY, TRUE)); + else + g_snprintf ( + buffer, sizeof (buffer), "%s", + e_get_weekday_name (weekday + 1, abbreviated)); clip_rect.x = week_view->col_offsets[col] - x; clip_rect.y = 2 - y; @@ -216,10 +207,10 @@ e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item, date_width = week_view->abbr_day_widths[5] + week_view->slash_width + week_view->abbr_day_widths[6]; - else if (long_format) - date_width = week_view->day_widths[weekday]; - else + else if (abbreviated) date_width = week_view->abbr_day_widths[weekday]; + else + date_width = week_view->day_widths[weekday]; date_x = week_view->col_offsets[col] + (week_view->col_widths[col] - date_width) / 2; @@ -263,8 +254,6 @@ e_week_view_titles_item_draw (GnomeCanvasItem *canvas_item, weekday++; weekday = weekday % 7; - - g_date_add_days (&date, 1); } g_object_unref (layout); diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c index 47a939a4de..0c3ca360ad 100644 --- a/calendar/gui/e-week-view.c +++ b/calendar/gui/e-week-view.c @@ -52,6 +52,7 @@ #include #include #include +#include #include "dialogs/delete-comp.h" #include "dialogs/delete-error.h" #include "dialogs/send-comp.h" @@ -815,8 +816,7 @@ e_week_view_style_set (GtkWidget *widget, gint day, day_width, max_day_width, max_abbr_day_width; gint month, month_width, max_month_width, max_abbr_month_width; gint span_num; - GDate date; - gchar buffer[128]; + const gchar *name; PangoFontDescription *font_desc; PangoContext *pango_context; PangoFontMetrics *font_metrics; @@ -873,37 +873,31 @@ e_week_view_style_set (GtkWidget *widget, /* Save the sizes of various strings in the font, so we can quickly decide which date formats to use. */ - g_date_clear (&date, 1); - g_date_set_dmy (&date, 27, 3, 2000); /* Must be a Monday. */ max_day_width = 0; max_abbr_day_width = 0; for (day = 0; day < 7; day++) { - g_date_strftime (buffer, 128, "%A", &date); - day_width = get_string_width (layout, buffer); + name = e_get_weekday_name (day + 1, FALSE); + day_width = get_string_width (layout, name); week_view->day_widths[day] = day_width; max_day_width = MAX (max_day_width, day_width); - g_date_strftime (buffer, 128, "%a", &date); - day_width = get_string_width (layout, buffer); + name = e_get_weekday_name (day + 1, TRUE); + day_width = get_string_width (layout, name); week_view->abbr_day_widths[day] = day_width; max_abbr_day_width = MAX (max_abbr_day_width, day_width); - - g_date_add_days (&date, 1); } max_month_width = 0; max_abbr_month_width = 0; for (month = 0; month < 12; month++) { - g_date_set_month (&date, month + 1); - - g_date_strftime (buffer, 128, "%B", &date); - month_width = get_string_width (layout, buffer); + name = e_get_month_name (month + 1, FALSE); + month_width = get_string_width (layout, name); week_view->month_widths[month] = month_width; max_month_width = MAX (max_month_width, month_width); - g_date_strftime (buffer, 128, "%b", &date); - month_width = get_string_width (layout, buffer); + name = e_get_month_name (month + 1, TRUE); + month_width = get_string_width (layout, name); week_view->abbr_month_widths[month] = month_width; max_abbr_month_width = MAX (max_abbr_month_width, month_width); } diff --git a/calendar/gui/print.c b/calendar/gui/print.c index 855271bb57..1fde0e3495 100644 --- a/calendar/gui/print.c +++ b/calendar/gui/print.c @@ -1778,7 +1778,7 @@ print_month_summary (GtkPrintContext *context, GnomeCalendar *gcal, time_t whenc char buffer[100]; PangoFontDescription *font; gboolean compress_weekend; - int columns, col, weekday, len, month; + int columns, col, weekday, month; double font_size, cell_width, x1, x2, y1, y2; weekday = calendar_config_get_week_start_day (); @@ -1815,16 +1815,16 @@ print_month_summary (GtkPrintContext *context, GnomeCalendar *gcal, time_t whenc y2 = top + font_size * 1.5; for (col = 0; col < columns; col++) { - if (tm.tm_wday == 6 && compress_weekend) { - e_utf8_strftime (buffer, sizeof (buffer), "%a/", &tm); - len = strlen (buffer); - tm.tm_mday++; - tm.tm_wday = (tm.tm_wday + 1) % 7; - e_utf8_strftime (buffer + len, sizeof (buffer) - len, - "%a", &tm); - } else { - e_utf8_strftime (buffer, sizeof (buffer), "%A", &tm); - } + if (tm.tm_wday == 6 && compress_weekend) + g_snprintf ( + buffer, sizeof (buffer), "%s/%s", + e_get_weekday_name (G_DATE_SATURDAY, TRUE), + e_get_weekday_name (G_DATE_SUNDAY, TRUE)); + else + g_snprintf ( + buffer, sizeof (buffer), "%s", + e_get_weekday_name ( + tm.tm_wday ? tm.tm_wday : 7, FALSE)); x1 = left + cell_width * col; x2 = x1 + cell_width; diff --git a/widgets/misc/ChangeLog b/widgets/misc/ChangeLog index a4b449c7d9..78e8a29da4 100644 --- a/widgets/misc/ChangeLog +++ b/widgets/misc/ChangeLog @@ -1,3 +1,10 @@ +2007-12-05 Matthew Barnes + + ** Fixes part of bug #392747 (extra cleanup work) + + * e-calendar-item.c (e_calendar_item_show_popup_menu): + Call e_get_month_name() instead of e_utf8_strftime(). + 2007-12-03 Matthew Barnes ** Fixes part of bug #392747 diff --git a/widgets/misc/e-calendar-item.c b/widgets/misc/e-calendar-item.c index f023e89850..4e8fb50a18 100644 --- a/widgets/misc/e-calendar-item.c +++ b/widgets/misc/e-calendar-item.c @@ -3724,8 +3724,8 @@ e_calendar_item_show_popup_menu (ECalendarItem *calitem, { GtkWidget *menu, *submenu, *menuitem, *label; gint year, month; + const gchar *name; gchar buffer[64]; - struct tm tmp_tm; menu = gtk_menu_new (); @@ -3744,19 +3744,13 @@ e_calendar_item_show_popup_menu (ECalendarItem *calitem, GINT_TO_POINTER (month_offset)); for (month = 0; month < 12; month++) { - memset (&tmp_tm, 0, sizeof (tmp_tm)); - tmp_tm.tm_year = year - 1900; - tmp_tm.tm_mon = month; - tmp_tm.tm_mday = 1; - tmp_tm.tm_isdst = -1; - mktime (&tmp_tm); - e_utf8_strftime (buffer, sizeof (buffer), "%B", &tmp_tm); + name = e_get_month_name (month + 1, FALSE); menuitem = gtk_menu_item_new (); gtk_widget_show (menuitem); gtk_container_add (GTK_CONTAINER (submenu), menuitem); - label = gtk_label_new (buffer); + label = gtk_label_new (name); gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5); gtk_widget_show (label); gtk_container_add (GTK_CONTAINER (menuitem), label); -- cgit