+
+static void
+on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata)
+{
+ if (strcmp ("style", spec->name) == 0) {
+ update_style (MODEST_ACCOUNT_VIEW (obj));
+ gtk_widget_queue_draw (GTK_WIDGET (obj));
+ }
+}
+
+static void
+update_display_mode (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+ GtkTreeViewColumn *column;
+ GList *renderers;
+ GtkCellRenderer *renderer;
+
+ g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self));
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+
+ /* Last updated column */
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (self), 2);
+ gtk_tree_view_column_set_visible (column, !priv->picker_mode);
+
+ /* Name column */
+ column = gtk_tree_view_get_column (GTK_TREE_VIEW (self), 1);
+ renderers = gtk_cell_layout_get_cells (GTK_CELL_LAYOUT (column));
+ renderer = (GtkCellRenderer *) renderers->data;
+ g_object_set (renderer,
+ "align-set", TRUE,
+ "alignment", priv->picker_mode?PANGO_ALIGN_CENTER:PANGO_ALIGN_LEFT,
+ NULL);
+ g_list_free (renderers);
+}
+
+void
+modest_account_view_set_picker_mode (ModestAccountView *self, gboolean enable)
+{
+ ModestAccountViewPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self));
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+
+ priv->picker_mode = enable;
+ update_display_mode (self);
+}
+
+gboolean
+modest_account_view_get_picker_mode (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_ACCOUNT_VIEW (self), FALSE);
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+
+ return priv->picker_mode;
+}
+
+void
+modest_account_view_set_show_last_update (ModestAccountView *self,
+ gboolean show)
+{
+ ModestAccountViewPrivate *priv;
+
+ g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self));
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+
+ priv->show_last_updated = show;
+ update_account_view (priv->account_mgr, self);
+}
+
+gboolean
+modest_account_view_get_show_last_updated (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+
+ g_return_val_if_fail (MODEST_IS_ACCOUNT_VIEW (self), FALSE);
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+
+ return priv->show_last_updated;
+}
+
+GtkTreeModel *
+modest_account_view_get_model (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self);
+
+ return priv->model;
+}
+
+GtkTreeModel *
+modest_account_view_get_filter (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self);
+
+ return priv->filter;
+}
+
+#ifdef MODEST_TOOLKIT_HILDON2
+static gboolean
+live_search_visible_func (GtkTreeModel *model,
+ GtkTreeIter *iter,
+ gchar *text,
+ gpointer data)
+{
+ gchar *display_name;
+ gboolean result;
+ gtk_tree_model_get(model, iter,
+ MODEST_ACCOUNT_VIEW_DISPLAY_NAME_COLUMN,
+ &display_name, -1);
+
+ result = modest_text_utils_live_search_find (display_name, text);
+
+ g_free (display_name);
+
+ return result;
+}
+
+GtkWidget *
+modest_account_view_setup_live_search (ModestAccountView *self)
+{
+ GtkWidget *live_search;
+ live_search = hildon_live_search_new ();
+ hildon_live_search_set_filter (HILDON_LIVE_SEARCH (live_search),
+ GTK_TREE_MODEL_FILTER (modest_account_view_get_filter (MODEST_ACCOUNT_VIEW (self))));
+ hildon_live_search_set_visible_func (HILDON_LIVE_SEARCH (live_search), live_search_visible_func, self, NULL);
+ hildon_live_search_set_text_column (HILDON_LIVE_SEARCH (live_search),
+ MODEST_ACCOUNT_VIEW_DISPLAY_NAME_COLUMN);
+
+ return live_search;
+}
+#endif
+
+static void
+update_style (ModestAccountView *self)
+{
+ ModestAccountViewPrivate *priv;
+ GdkColor style_active_color;
+
+ g_return_if_fail (MODEST_IS_ACCOUNT_VIEW (self));
+ priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE (self);
+
+ if (gtk_style_lookup_color (GTK_WIDGET (self)->style, "ActiveTextColor", &style_active_color)) {
+ g_object_set (G_OBJECT (priv->account_name_renderer),
+ "foreground-gdk", &style_active_color,
+ NULL);
+ gtk_tree_view_column_set_attributes (priv->account_name_column, priv->account_name_renderer,
+ "text", MODEST_ACCOUNT_VIEW_DISPLAY_NAME_COLUMN,
+ "foreground-set", MODEST_ACCOUNT_VIEW_HAS_NEW_MAILS_COLUMN,
+ NULL);
+ } else {
+ g_object_set (G_OBJECT (priv->account_name_renderer),
+ "foreground-set", FALSE,
+ "foreground-gdk", NULL,
+ NULL);
+ gtk_tree_view_column_set_attributes (priv->account_name_column, priv->account_name_renderer,
+ "text", MODEST_ACCOUNT_VIEW_DISPLAY_NAME_COLUMN,
+ NULL);
+ }
+
+ update_account_view (priv->account_mgr, self);
+}
+