* modest-header-view-*
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 22 Jan 2007 00:07:10 +0000 (00:07 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Mon, 22 Jan 2007 00:07:10 +0000 (00:07 +0000)
- the display string for dates is const now
- make special display function for dates

pmo-trunk-r682

src/widgets/modest-header-view-priv.h
src/widgets/modest-header-view-render.c
src/widgets/modest-header-view.c
src/widgets/modest-header-view.h

index df1ed9d..7859fa0 100644 (file)
@@ -48,6 +48,8 @@ void _modest_header_view_attach_cell_data (GtkTreeViewColumn *column, GtkCellRen
                                           GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data);
 void _modest_header_view_header_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                                            GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data);
+void _modest_header_view_date_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
+                                         GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data);
 void _modest_header_view_size_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
                                          GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data);
 void _modest_header_view_sender_receiver_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
index fa07fa3..96b12cc 100644 (file)
@@ -90,39 +90,33 @@ _modest_header_view_header_cell_data  (GtkTreeViewColumn *column,  GtkCellRender
 
 
 void
-_modest_header_view_size_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
-                GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data)
+_modest_header_view_date_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
+                                    GtkTreeModel *tree_model,  GtkTreeIter *iter,
+                                    gpointer user_data)
 {
        TnyHeaderFlags flags;
-       guint size;
-       gchar *size_str;
-       const gchar* unit;
+       guint date, date_col;
+       const gchar *date_str;
+       gboolean received = GPOINTER_TO_INT(user_data);
+
+       if (received)
+               date_col = TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN;
+       else
+               date_col = TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_COLUMN;
        
        gtk_tree_model_get (tree_model, iter,
                            TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags,
-                           TNY_GTK_HEADER_LIST_MODEL_MESSAGE_SIZE_COLUMN, &size,
+                           date_col, &date,
                            -1);
-
-       if (size < 1024*1024) {
-               unit = _("Kb");
-               size /= 1024;
-       } else if (size < 1024*1024*1024) {
-               unit = _("Mb");
-               size /= (1024*1024);
-       } else {
-               unit = _("Gb");
-               size /= (1024*1024*1024);
-       }
-
-       size_str = g_strdup_printf ("%d %s", size, unit);
-                               
+       
+       date_str = modest_text_utils_get_display_date (date);
+       
        g_object_set (G_OBJECT(renderer),
                      "weight", (flags & TNY_HEADER_FLAG_SEEN) ? 400: 800,
                      "style",  (flags & TNY_HEADER_FLAG_DELETED) ?
                                 PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL,
-                     "text",    size_str,       
+                     "text",    date_str,       
                      NULL);
-       g_free (size_str);
 }
 
 
@@ -162,12 +156,12 @@ _modest_header_view_sender_receiver_cell_data  (GtkTreeViewColumn *column,  GtkC
  */
 void
 _modest_header_view_compact_header_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
-                          GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data)
+                                              GtkTreeModel *tree_model,  GtkTreeIter *iter,  gpointer user_data)
 {
        GObject *rendobj;
        TnyHeaderFlags flags;
-       gchar *address, *subject;
-       gchar *header;
+       gchar *address, *subject, *header;
+       const gchar *date_str;
        time_t date;
        gboolean is_incoming;
 
@@ -191,10 +185,13 @@ _modest_header_view_compact_header_cell_data  (GtkTreeViewColumn *column,  GtkCe
        
        rendobj = G_OBJECT(renderer);           
 
+       date_str = modest_text_utils_get_display_date (date);
        header = g_strdup_printf ("%s %s\n%s",
                                  modest_text_utils_get_display_address (address),
-                                 modest_text_utils_get_display_date (date),
+                                 date_str,
                                  subject);
+       g_free (address);
+       g_free (subject);
        
        g_object_set (G_OBJECT(renderer),
                      "text",  header,
@@ -202,8 +199,44 @@ _modest_header_view_compact_header_cell_data  (GtkTreeViewColumn *column,  GtkCe
                      "style",  (flags & TNY_HEADER_FLAG_DELETED) ?
                                 PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL,
                      NULL);    
-
        g_free (header);
-       g_free (address);
-       g_free (subject);
 }
+
+
+void
+_modest_header_view_size_cell_data  (GtkTreeViewColumn *column,  GtkCellRenderer *renderer,
+                                    GtkTreeModel *tree_model,  GtkTreeIter *iter,
+                                    gpointer user_data)
+{
+        TnyHeaderFlags flags;
+       guint size;
+       gchar *size_str;
+       const gchar* unit;
+
+       gtk_tree_model_get (tree_model, iter,
+                          TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags,
+                          TNY_GTK_HEADER_LIST_MODEL_MESSAGE_SIZE_COLUMN, &size,
+                          -1);
+       
+       if (size < 1024*1024) {
+               unit = _("Kb");
+               size /= 1024;
+       } else if (size < 1024*1024*1024) {
+               unit = _("Mb");
+               size /= (1024*1024);
+       } else {
+               unit = _("Gb");
+               size /= (1024*1024*1024);
+       }
+
+       size_str = g_strdup_printf ("%d %s", size, unit);
+
+       g_object_set (G_OBJECT(renderer),
+                    "weight", (flags & TNY_HEADER_FLAG_SEEN) ? 400: 800,
+                    "style",  (flags & TNY_HEADER_FLAG_DELETED) ?
+                    PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL,
+                    "text",    size_str,       
+                      NULL);
+       g_free (size_str);
+
+ }
index 5c787b6..2103ac8 100644 (file)
@@ -314,16 +314,16 @@ modest_header_view_set_columns (ModestHeaderView *self, const GList *columns)
                        column = get_new_column (_("Received"), renderer_header, TRUE,
                                                 TNY_GTK_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN,
                                                 TRUE,
-                                                (GtkTreeCellDataFunc)_modest_header_view_header_cell_data,
-                                                NULL);
+                                                (GtkTreeCellDataFunc)_modest_header_view_date_cell_data,
+                                                GINT_TO_POINTER(TRUE));
                        break;
                        
                case MODEST_HEADER_VIEW_COLUMN_SENT_DATE:
                        column = get_new_column (_("Sent"), renderer_header, TRUE,
                                                 TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_COLUMN,
                                                 TRUE,
-                                                (GtkTreeCellDataFunc)_modest_header_view_header_cell_data,
-                                                NULL);
+                                                (GtkTreeCellDataFunc)_modest_header_view_date_cell_data,
+                                                GINT_TO_POINTER(FALSE));
                        break;
                        
                case MODEST_HEADER_VIEW_COLUMN_SIZE:
@@ -402,10 +402,13 @@ modest_header_view_new (TnyFolder *folder, const GList *columns,
        ModestHeaderView *self;
        ModestHeaderViewPrivate *priv;
        
+       g_return_val_if_fail (style >= 0 && style < MODEST_HEADER_VIEW_STYLE_NUM,
+                             NULL);
+       
        obj  = G_OBJECT(g_object_new(MODEST_TYPE_HEADER_VIEW, NULL));
        self = MODEST_HEADER_VIEW(obj);
        priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
-
+       
        modest_header_view_set_style   (self, style);
        modest_header_view_set_columns (self, columns);
 
index 2e8aeab..3de807f 100644 (file)
@@ -83,6 +83,7 @@ typedef enum _ModestHeaderViewColumn {
 typedef enum _ModestHeaderViewStyle {
        MODEST_HEADER_VIEW_STYLE_DETAILS, /* many columns, single line, col headers visible */
        MODEST_HEADER_VIEW_STYLE_TWOLINES, /* two-line headers, col headers invisible */
+
        MODEST_HEADER_VIEW_STYLE_NUM    
 } ModestHeaderViewStyle;