From 10d9a80d698479d8c96f0ba46a64a9fb5521edff Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Sep 2011 12:42:47 +0200 Subject: Bug #659568 - One day delay in calendar view --- calendar/gui/e-cal-model.c | 18 ++++++++++------- calendar/gui/gnome-cal.c | 40 ++++++++++++++++++++++++------------- modules/calendar/e-cal-shell-view.c | 16 +++++++++------ 3 files changed, 47 insertions(+), 27 deletions(-) diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c index f177913ca2..1ab56926cd 100644 --- a/calendar/gui/e-cal-model.c +++ b/calendar/gui/e-cal-model.c @@ -3160,20 +3160,24 @@ redo_queries (ECalModel *model) if (priv->start != -1 && priv->end != -1) { gchar *iso_start, *iso_end; + const gchar *default_tzloc = NULL; iso_start = isodate_from_time_t (priv->start); iso_end = isodate_from_time_t (priv->end); + if (priv->zone && priv->zone != icaltimezone_get_utc_timezone ()) + default_tzloc = icaltimezone_get_location (priv->zone); + if (!default_tzloc) + default_tzloc = ""; + if (priv->search_sexp) { - priv->full_sexp = g_strdup_printf ("(and (occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))" - " %s)", - iso_start, iso_end, + priv->full_sexp = g_strdup_printf ( + "(and (occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\") %s)", + iso_start, iso_end, default_tzloc, priv->search_sexp ? priv->search_sexp : ""); } else { - priv->full_sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))", - iso_start, iso_end); + priv->full_sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\")", + iso_start, iso_end, default_tzloc); } g_free (iso_start); diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c index cf1a12deab..654eb1898a 100644 --- a/calendar/gui/gnome-cal.c +++ b/calendar/gui/gnome-cal.c @@ -1016,6 +1016,24 @@ get_date_navigator_range (GnomeCalendar *gcal, *end_time = icaltime_as_timet_with_zone (end_tt, timezone); } +static const gchar * +gcal_get_default_tzloc (GnomeCalendar *gcal) +{ + ECalModel *model; + icaltimezone *timezone; + const gchar *tzloc = NULL; + + g_return_val_if_fail (gcal != NULL, ""); + + model = gnome_calendar_get_model (gcal); + timezone = e_cal_model_get_timezone (model); + + if (timezone && timezone != icaltimezone_get_utc_timezone ()) + tzloc = icaltimezone_get_location (timezone); + + return tzloc ? tzloc : ""; +} + /* Adjusts a given query sexp with the time range of the date navigator */ static gchar * adjust_client_view_sexp (GnomeCalendar *gcal, @@ -1033,15 +1051,12 @@ adjust_client_view_sexp (GnomeCalendar *gcal, end = isodate_from_time_t (end_time); if (sexp) { - new_sexp = g_strdup_printf ("(and (occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))" - " %s)", - start, end, + new_sexp = g_strdup_printf ("(and (occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\") %s)", + start, end, gcal_get_default_tzloc (gcal), sexp); } else { - new_sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))", - start, end); + new_sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\")", + start, end, gcal_get_default_tzloc (gcal)); } g_free (start); @@ -1366,10 +1381,8 @@ update_memo_view (GnomeCalendar *gcal) g_free (priv->memo_sexp); priv->memo_sexp = g_strdup_printf ( - "(and (or (not (has-start?)) " - "(occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))) %s)", - iso_start, iso_end, + "(and (or (not (has-start?)) (occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\")) %s)", + iso_start, iso_end, gcal_get_default_tzloc (gcal), priv->sexp ? priv->sexp : ""); e_cal_model_set_search_query (model, priv->memo_sexp); @@ -2243,9 +2256,8 @@ gnome_calendar_purge (GnomeCalendar *gcal, start = isodate_from_time_t (0); end = isodate_from_time_t (older_than); - sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\")" - " (make-time \"%s\"))", - start, end); + sexp = g_strdup_printf ("(occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\")", + start, end, gcal_get_default_tzloc (gcal)); gcal_update_status_message (gcal, _("Purging"), -1); diff --git a/modules/calendar/e-cal-shell-view.c b/modules/calendar/e-cal-shell-view.c index 61a2d9c27a..0a9b7701f8 100644 --- a/modules/calendar/e-cal-shell-view.c +++ b/modules/calendar/e-cal-shell-view.c @@ -70,6 +70,7 @@ cal_shell_view_execute_search (EShellView *shell_view) ECalModel *model; GtkRadioAction *action; icaltimezone *timezone; + const gchar *default_tzloc = NULL; struct icaltimetype current_time; time_t start_range; time_t end_range; @@ -95,6 +96,11 @@ cal_shell_view_execute_search (EShellView *shell_view) current_time = icaltime_current_time_with_zone (timezone); now_time = time_day_begin (icaltime_as_timet (current_time)); + if (timezone && timezone != icaltimezone_get_utc_timezone ()) + default_tzloc = icaltimezone_get_location (timezone); + if (!default_tzloc) + default_tzloc = ""; + action = GTK_RADIO_ACTION (ACTION (CALENDAR_SEARCH_ANY_FIELD_CONTAINS)); value = gtk_radio_action_get_current_value (action); @@ -165,9 +171,8 @@ cal_shell_view_execute_search (EShellView *shell_view) end = isodate_from_time_t (end_range); temp = g_strdup_printf ( - "(and %s (occur-in-time-range? " - "(make-time \"%s\") (make-time \"%s\")))", - query, start, end); + "(and %s (occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\"))", + query, start, end, default_tzloc); g_free (query); query = temp; @@ -181,9 +186,8 @@ cal_shell_view_execute_search (EShellView *shell_view) end = isodate_from_time_t (end_range); temp = g_strdup_printf ( - "(and %s (occur-in-time-range? " - "(make-time \"%s\") (make-time \"%s\")))", - query, start, end); + "(and %s (occur-in-time-range? (make-time \"%s\") (make-time \"%s\") \"%s\"))", + query, start, end, default_tzloc); g_free (query); query = temp; -- cgit v1.2.3