[evolution] Bug #711658 - Time zone for new events sometimes defaults to UTC



commit 3048de0d913db3a3ca16856e7b0c1e99512b22c5
Author: Milan Crha <mcrha redhat com>
Date:   Thu Mar 6 15:30:55 2014 +0100

    Bug #711658 - Time zone for new events sometimes defaults to UTC

 calendar/alarm-notify/alarm-queue.c        |    2 +-
 calendar/gui/comp-util.c                   |    2 +-
 calendar/gui/itip-utils.c                  |    5 ++-
 e-util/e-client-cache.c                    |   30 +++++++++++++++++++++++++++-
 e-util/e-client-cache.h                    |    3 ++
 modules/settings/e-settings-client-cache.c |    8 +++---
 6 files changed, 41 insertions(+), 9 deletions(-)
---
diff --git a/calendar/alarm-notify/alarm-queue.c b/calendar/alarm-notify/alarm-queue.c
index 011b787..4b51f9e 100644
--- a/calendar/alarm-notify/alarm-queue.c
+++ b/calendar/alarm-notify/alarm-queue.c
@@ -803,7 +803,7 @@ get_alarms_for_object (ECalClient *cal_client,
 
        *alarms = e_cal_util_generate_alarms_for_comp (
                comp, start, end, omit, e_cal_client_resolve_tzid_cb,
-               cal_client, e_cal_client_get_default_timezone (cal_client));
+               cal_client, config_data_get_timezone ());
 
        g_object_unref (comp);
 
diff --git a/calendar/gui/comp-util.c b/calendar/gui/comp-util.c
index a85bc92..16dfd5d 100644
--- a/calendar/gui/comp-util.c
+++ b/calendar/gui/comp-util.c
@@ -384,7 +384,7 @@ cal_comp_event_new_with_current_time (ECalClient *client,
                default_reminder_interval, default_reminder_units);
        g_return_val_if_fail (comp != NULL, NULL);
 
-       zone = e_cal_client_get_default_timezone (client);
+       zone = calendar_config_get_icaltimezone ();
 
        if (all_day) {
                itt = icaltime_from_timet_with_zone (time (NULL), 1, zone);
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c
index 82c0392..7190c05 100644
--- a/calendar/gui/itip-utils.c
+++ b/calendar/gui/itip-utils.c
@@ -32,6 +32,7 @@
 
 #include "itip-utils.h"
 #include "dialogs/comp-editor-util.h"
+#include "calendar-config.h"
 
 #define d(x)
 
@@ -1708,7 +1709,7 @@ itip_send_comp (ESourceRegistry *registry,
 
        g_object_unref (settings);
 
-       default_zone = e_cal_client_get_default_timezone (cal_client);
+       default_zone = calendar_config_get_icaltimezone ();
 
        /* check whether backend could handle auto-saving requests/updates */
        if (method != E_CAL_COMPONENT_METHOD_PUBLISH && e_cal_client_check_save_schedules (cal_client))
@@ -1855,7 +1856,7 @@ reply_to_calendar_comp (ESourceRegistry *registry,
        /* FIXME Pass this in. */
        shell = e_shell_get_default ();
 
-       default_zone = e_cal_client_get_default_timezone (cal_client);
+       default_zone = calendar_config_get_icaltimezone ();
 
        /* Tidy up the comp */
        comp = comp_compliant (
diff --git a/e-util/e-client-cache.c b/e-util/e-client-cache.c
index 9aedf4e..215c470 100644
--- a/e-util/e-client-cache.c
+++ b/e-util/e-client-cache.c
@@ -92,6 +92,7 @@ enum {
 enum {
        BACKEND_DIED,
        BACKEND_ERROR,
+       CLIENT_CONNECTED,
        CLIENT_CREATED,
        CLIENT_NOTIFY,
        LAST_SIGNAL
@@ -572,6 +573,8 @@ client_cache_process_results (ClientData *client_data,
                                0);
                        client_data->notify_handler_id = handler_id;
 
+                       g_signal_emit (client_cache, signals[CLIENT_CONNECTED], 0, client);
+
                        signal_closure = g_slice_new0 (SignalClosure);
                        signal_closure->client_cache =
                                g_object_ref (client_cache);
@@ -886,12 +889,37 @@ e_client_cache_class_init (EClientCacheClass *class)
                E_TYPE_ALERT);
 
        /**
+        * EClientCache::client-connected:
+        * @client_cache: the #EClientCache that received the signal
+        * @client: the newly-created #EClient
+        *
+        * This signal is emitted when a call to e_client_cache_get_client()
+        * triggers the creation of a new #EClient instance, immediately after
+        * the client's opening phase is over.
+        *
+        * See the difference with EClientCache::client-created, which is
+        * called on idle.
+        **/
+       signals[CLIENT_CONNECTED] = g_signal_new (
+               "client-connected",
+               G_TYPE_FROM_CLASS (class),
+               G_SIGNAL_RUN_FIRST,
+               0 /* G_STRUCT_OFFSET (EClientCacheClass, client_connected) */,
+               NULL, NULL, NULL,
+               G_TYPE_NONE, 1,
+               E_TYPE_CLIENT);
+
+       /**
         * EClientCache::client-created:
         * @client_cache: the #EClientCache that received the signal
         * @client: the newly-created #EClient
         *
         * This signal is emitted when a call to e_client_cache_get_client()
-        * triggers the creation of a new #EClient instance.
+        * triggers the creation of a new #EClient instance, invoked in an idle
+        * callback.
+        *
+        * See the difference with EClientCache::client-connected, which is
+        * called immediately.
         **/
        signals[CLIENT_CREATED] = g_signal_new (
                "client-created",
diff --git a/e-util/e-client-cache.h b/e-util/e-client-cache.h
index bcb1e03..c3c45ed 100644
--- a/e-util/e-client-cache.h
+++ b/e-util/e-client-cache.h
@@ -76,6 +76,9 @@ struct _EClientCacheClass {
                                                 GParamSpec *pspec);
        void            (*client_created)       (EClientCache *client_cache,
                                                 EClient *client);
+       /* Do not break ABI right now
+       void            (*client_connected)     (EClientCache *client_cache,
+                                                EClient *client); */
 };
 
 GType          e_client_cache_get_type         (void) G_GNUC_CONST;
diff --git a/modules/settings/e-settings-client-cache.c b/modules/settings/e-settings-client-cache.c
index 487ffe2..419b660 100644
--- a/modules/settings/e-settings-client-cache.c
+++ b/modules/settings/e-settings-client-cache.c
@@ -64,8 +64,8 @@ settings_map_string_to_icaltimezone (GValue *value,
 }
 
 static void
-settings_client_cache_client_created_cb (EClientCache *client_cache,
-                                         EClient *client)
+settings_client_cache_client_connected_cb (EClientCache *client_cache,
+                                          EClient *client)
 {
        if (E_IS_CAL_CLIENT (client)) {
                GSettings *settings;
@@ -94,8 +94,8 @@ settings_client_cache_constructed (GObject *object)
        extensible = e_extension_get_extensible (extension);
 
        g_signal_connect (
-               extensible, "client-created",
-               G_CALLBACK (settings_client_cache_client_created_cb),
+               extensible, "client-connected",
+               G_CALLBACK (settings_client_cache_client_connected_cb),
                NULL);
 }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]