Use datetime formatter in compact mail header view
authorJose Dapena Paz <jdapena@igalia.com>
Thu, 11 Dec 2008 18:00:33 +0000 (18:00 +0000)
committerJose Dapena Paz <jdapena@igalia.com>
Thu, 11 Dec 2008 18:00:33 +0000 (18:00 +0000)
pmo-drop-split-view-r6785

src/modest-datetime-formatter.c
src/widgets/modest-compact-mail-header-view.c

index 2a4e73b..dd3ee9c 100644 (file)
@@ -124,7 +124,7 @@ static void
 update_format (ModestDatetimeFormatter *obj)
 {
        GConfClient *gconf;
-       GError *error = NULL;
+       GError *err = NULL;
        gboolean gconf_value;
        ModestDatetimeFormatterPrivate *priv;
 
@@ -132,11 +132,11 @@ update_format (ModestDatetimeFormatter *obj)
 
        gconf = gconf_client_get_default ();
        gconf_value = gconf_client_get_bool (gconf, HILDON2_GCONF_FORMAT_KEY,
-                                            &error);
+                                            &err);
 
-       if (error != NULL) {
-               g_warning ("Error reading time format in gconf %s", error->message);
-               g_error_free (error);
+       if (err != NULL) {
+               g_warning ("Error reading time format in gconf %s", err->message);
+               g_error_free (err);
        } else {
                priv->current_format = gconf_value?DATETIME_FORMAT_24H:DATETIME_FORMAT_12H;
        }
@@ -166,16 +166,16 @@ init_format (ModestDatetimeFormatter *obj)
 
 #ifdef MODEST_TOOLKIT_HILDON2
        GConfClient *gconf;
-       GError *error = NULL;
+       GError *err = NULL;
 
        gconf = gconf_client_get_default ();
        priv->gconf_handler = gconf_client_notify_add (gconf, HILDON2_GCONF_FORMAT_KEY,
                                                       clock_format_changed, (gpointer) obj,
-                                                      NULL, &error);
+                                                      NULL, &err);
 
-       if (error != NULL) {
-               g_warning ("Error listening to time format in gconf %s", error->message);
-               g_error_free (error);
+       if (err != NULL) {
+               g_warning ("Error listening to time format in gconf %s", err->message);
+               g_error_free (err);
        }
        update_format (obj);
 #endif
index e86dfac..7a92062 100644 (file)
@@ -37,6 +37,7 @@
 #include <modest-tny-folder.h>
 #include <modest-ui-constants.h>
 #include <modest-icon-names.h>
+#include <modest-datetime-formatter.h>
 #ifdef MODEST_TOOLKIT_HILDON2
 #include <hildon/hildon-gtk.h>
 #endif
@@ -64,6 +65,9 @@ struct _ModestCompactMailHeaderViewPriv
        
        TnyHeader    *header;
        TnyHeaderFlags priority_flags;
+
+       time_t       date_to_show;
+       ModestDatetimeFormatter *datetime_formatter;
 };
 
 #define MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE(o) \
@@ -104,28 +108,29 @@ static const GtkWidget *modest_compact_mail_header_view_add_custom_header_defaul
 static void on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata);
 static void on_details_button_clicked  (GtkButton *button, gpointer userdata);
 static void update_style (ModestCompactMailHeaderView *self);
-static void set_date_time (ModestCompactMailHeaderView *compact_mail_header, time_t date);
+static void set_date_time (ModestCompactMailHeaderView *compact_mail_header);
 static void fill_address (ModestCompactMailHeaderView *self);
 
 static void
-set_date_time (ModestCompactMailHeaderView *compact_mail_header, time_t date)
+set_date_time (ModestCompactMailHeaderView *compact_mail_header)
 {
        const guint BUF_SIZE = 64; 
-       gchar date_buf [BUF_SIZE];
+       const gchar *date_str;
+       gchar date_buf[BUF_SIZE];
        GString *buffer = g_string_new ("");
 
        ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (compact_mail_header);
 
-       modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_week"), date);
-       buffer = g_string_append (buffer, date_buf);
+       date_str = modest_datetime_formatter_format_date (priv->datetime_formatter, priv->date_to_show);
+       buffer = g_string_append (buffer, date_str);
        buffer = g_string_append_c (buffer, ' ');
        buffer = g_string_append_unichar (buffer, 0x2015);
        buffer = g_string_append_c (buffer, ' ');
        /* TODO: 24h/12h */
-       modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_24h_time"), date);
-       buffer = g_string_append (buffer, date_buf);
+       date_str = modest_datetime_formatter_format_time (priv->datetime_formatter, priv->date_to_show);
+       buffer = g_string_append (buffer, date_str);
        buffer = g_string_append (buffer, "\n");
-       modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_date_long"), date);
+       modest_text_utils_strftime (date_buf, BUF_SIZE, _HL("wdgt_va_date_long"), priv->date_to_show);
        buffer = g_string_append (buffer, date_buf);
 
        gtk_label_set_text (GTK_LABEL (priv->date_label), buffer->str);
@@ -195,7 +200,6 @@ modest_compact_mail_header_view_set_header_default (TnyHeaderView *self, TnyHead
        if (header && G_IS_OBJECT (header))
        {
                gchar *subject;
-               time_t date_to_show;
 
                g_object_ref (G_OBJECT (header)); 
                priv->header = header;
@@ -210,11 +214,11 @@ modest_compact_mail_header_view_set_header_default (TnyHeaderView *self, TnyHead
                        gtk_label_set_text (GTK_LABEL (priv->subject_label), _("mail_va_no_subject"));
 
                if (priv->is_outgoing && priv->is_draft) {
-                       date_to_show = tny_header_get_date_sent (header);
+                       priv->date_to_show = tny_header_get_date_sent (header);
                } else {
-                       date_to_show = tny_header_get_date_received (header);
+                       priv->date_to_show = tny_header_get_date_received (header);
                }
-               set_date_time (MODEST_COMPACT_MAIL_HEADER_VIEW (self), date_to_show);
+               set_date_time (MODEST_COMPACT_MAIL_HEADER_VIEW (self));
 
                fill_address (MODEST_COMPACT_MAIL_HEADER_VIEW (self));
 
@@ -310,6 +314,13 @@ modest_compact_mail_header_view_new ()
 }
 
 static void
+datetime_format_changed (ModestDatetimeFormatter *formatter,
+                        ModestCompactMailHeaderView *self)
+{
+       set_date_time (self);
+}
+
+static void
 modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer g_class)
 {
        ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)instance;
@@ -376,6 +387,10 @@ modest_compact_mail_header_view_instance_init (GTypeInstance *instance, gpointer
 
        g_signal_connect (G_OBJECT (details_button), "clicked", G_CALLBACK (on_details_button_clicked), instance);
 
+       priv->datetime_formatter = modest_datetime_formatter_new ();
+       g_signal_connect (G_OBJECT (priv->datetime_formatter), "format-changed", 
+                         G_CALLBACK (datetime_format_changed), (gpointer) self);
+
        priv->headers_vbox = gtk_vbox_new (FALSE, 0);
        gtk_container_set_focus_chain (GTK_CONTAINER (priv->headers_vbox), NULL);
        g_object_ref (priv->headers_vbox);
@@ -400,6 +415,11 @@ modest_compact_mail_header_view_finalize (GObject *object)
        ModestCompactMailHeaderView *self = (ModestCompactMailHeaderView *)object;      
        ModestCompactMailHeaderViewPriv *priv = MODEST_COMPACT_MAIL_HEADER_VIEW_GET_PRIVATE (self);
 
+       if (priv->datetime_formatter) {
+               g_object_unref (priv->datetime_formatter);
+               priv->datetime_formatter = NULL;
+       }
+
        if (priv->custom_labels) {
                g_slist_free (priv->custom_labels);
                priv->custom_labels = NULL;