aboutsummaryrefslogtreecommitdiffstats
path: root/modules/calendar/e-cal-shell-backend.c
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-10-29 21:54:19 +0800
committerMilan Crha <mcrha@redhat.com>2010-10-29 21:54:19 +0800
commit475c08d68f1e236b6162fd0d8861c3a7319ddeb5 (patch)
treeabb4ad21e8fa570e9d92cbaeea11b1f446927330 /modules/calendar/e-cal-shell-backend.c
parente3b41081da24d7fb1cc945fd4ab2daef413e66bc (diff)
downloadgsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar.gz
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar.bz2
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar.lz
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar.xz
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.tar.zst
gsoc2013-evolution-475c08d68f1e236b6162fd0d8861c3a7319ddeb5.zip
Bug #632199 - Opening calendar from panel clock goes to previous day
Diffstat (limited to 'modules/calendar/e-cal-shell-backend.c')
-rw-r--r--modules/calendar/e-cal-shell-backend.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/modules/calendar/e-cal-shell-backend.c b/modules/calendar/e-cal-shell-backend.c
index e72626304e..134f706054 100644
--- a/modules/calendar/e-cal-shell-backend.c
+++ b/modules/calendar/e-cal-shell-backend.c
@@ -451,6 +451,18 @@ cal_shell_backend_init_importers (void)
e_import_class_add_importer (import_class, importer, NULL, NULL);
}
+static time_t
+utc_to_user_zone (time_t utc_time)
+{
+ icaltimezone *zone = calendar_config_get_icaltimezone ();
+
+ if (!zone || (int) utc_time == -1)
+ return utc_time;
+
+ return icaltime_as_timet (
+ icaltime_from_timet_with_zone (utc_time, FALSE, zone));
+}
+
static gboolean
cal_shell_backend_handle_uri_cb (EShellBackend *shell_backend,
const gchar *uri)
@@ -510,10 +522,10 @@ cal_shell_backend_handle_uri_cb (EShellBackend *shell_backend,
content = g_strndup (cp, content_len);
if (g_ascii_strcasecmp (header, "startdate") == 0)
g_date_set_time_t (
- &start_date, time_from_isodate (content));
+ &start_date, utc_to_user_zone (time_from_isodate (content)));
else if (g_ascii_strcasecmp (header, "enddate") == 0)
g_date_set_time_t (
- &end_date, time_from_isodate (content));
+ &end_date, utc_to_user_zone (time_from_isodate (content)));
else if (g_ascii_strcasecmp (header, "source-uid") == 0)
source_uid = g_strdup (content);
else if (g_ascii_strcasecmp (header, "comp-uid") == 0)