+const gchar *
+_modest_header_view_get_display_date (ModestHeaderView *self, time_t date)
+{
+ ModestHeaderViewPrivate *priv = NULL;
+
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+ return modest_datetime_formatter_display_datetime (priv->datetime_formatter, date);
+}
+
+void
+modest_header_view_set_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter)
+{
+ ModestHeaderViewPrivate *priv;
+ GtkTreeModel *filter_model;
+
+ g_return_if_fail (MODEST_IS_HEADER_VIEW (self));
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE (self);
+
+ priv->filter |= filter;
+
+ filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
+ if (GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+ }
+}
+
+void
+modest_header_view_unset_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter)
+{
+ ModestHeaderViewPrivate *priv;
+ GtkTreeModel *filter_model;
+
+ g_return_if_fail (MODEST_IS_HEADER_VIEW (self));
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE (self);
+
+ priv->filter &= ~filter;
+
+ filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
+ if (GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+ }
+}
+
+static void
+on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata)
+{
+ if (strcmp ("style", spec->name) == 0) {
+ update_style (MODEST_HEADER_VIEW (obj));
+ gtk_widget_queue_draw (GTK_WIDGET (obj));
+ }
+}
+
+static void
+update_style (ModestHeaderView *self)
+{
+ ModestHeaderViewPrivate *priv;
+ GdkColor style_color;
+ PangoAttrList *attr_list;
+ GtkStyle *style;
+ PangoAttribute *attr;
+
+ g_return_if_fail (MODEST_IS_HEADER_VIEW (self));
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE (self);
+
+ /* Set color */
+
+ attr_list = pango_attr_list_new ();
+ if (!gtk_style_lookup_color (GTK_WIDGET (self)->style, "SecondaryTextColor", &style_color)) {
+ gdk_color_parse ("grey", &style_color);
+ }
+ attr = pango_attr_foreground_new (style_color.red, style_color.green, style_color.blue);
+ pango_attr_list_insert (attr_list, attr);
+
+ /* set font */
+ style = gtk_rc_get_style_by_paths (gtk_widget_get_settings
+ (GTK_WIDGET(self)),
+ "SmallSystemFont", NULL,
+ G_TYPE_NONE);
+ if (style) {
+ attr = pango_attr_font_desc_new (pango_font_description_copy
+ (style->font_desc));
+ pango_attr_list_insert (attr_list, attr);
+
+ g_object_set (G_OBJECT (priv->renderer_address),
+ "foreground-gdk", &style_color,
+ "foreground-set", TRUE,
+ "attributes", attr_list,
+ NULL);
+ g_object_set (G_OBJECT (priv->renderer_date_status),
+ "foreground-gdk", &style_color,
+ "foreground-set", TRUE,
+ "attributes", attr_list,
+ NULL);
+ pango_attr_list_unref (attr_list);
+ } else {
+ g_object_set (G_OBJECT (priv->renderer_address),
+ "foreground-gdk", &style_color,
+ "foreground-set", TRUE,
+ "scale", PANGO_SCALE_SMALL,
+ "scale-set", TRUE,
+ NULL);
+ g_object_set (G_OBJECT (priv->renderer_date_status),
+ "foreground-gdk", &style_color,
+ "foreground-set", TRUE,
+ "scale", PANGO_SCALE_SMALL,
+ "scale-set", TRUE,
+ NULL);
+ }
+}
+