+gchar *
+modest_account_view_get_path_account (ModestAccountView *self, GtkTreePath *path)
+{
+ gchar *account_name = NULL;
+ GtkTreeModel *model;
+ GtkTreeIter iter;
+
+ g_return_val_if_fail (MODEST_IS_ACCOUNT_VIEW (self), NULL);
+
+ model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
+ if (gtk_tree_model_get_iter (model, &iter, path)) {
+ gtk_tree_model_get (model, &iter,
+ MODEST_ACCOUNT_VIEW_NAME_COLUMN,
+ &account_name, -1);
+ }
+
+ return account_name;
+}
+
+/* This allows us to pass more than one piece of data to the signal handler,
+ * and get a result: */
+typedef struct
+{
+ ModestAccountView* self;
+ const gchar *account_name;
+} ForEachData;
+
+static void
+modest_account_view_select_account (ModestAccountView *account_view,
+ const gchar* account_name)
+{
+ return;
+}
+
+static void
+on_default_account_changed (ModestAccountMgr *mgr,
+ gpointer user_data)
+{
+ GtkTreeIter iter;
+ gchar *default_account_name;
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW (user_data));
+
+ if (!gtk_tree_model_get_iter_first(model, &iter))
+ return;
+
+ default_account_name = modest_account_mgr_get_default_account (mgr);
+
+ do {
+ gboolean is_default;
+ gchar *name;
+
+ gtk_tree_model_get (model, &iter,
+ MODEST_ACCOUNT_VIEW_NAME_COLUMN, &name,
+ MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, &is_default,
+ -1);
+
+ /* Update the default account column */
+ if ((default_account_name != NULL) && (!strcmp (name, default_account_name)))
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, TRUE, -1);
+ else
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, FALSE, -1);
+
+ g_free (name);
+
+ } while (gtk_tree_model_iter_next(model, &iter));
+
+ /* Free and force a redraw */
+ g_free (default_account_name);
+ gtk_widget_queue_draw (GTK_WIDGET (user_data));
+}
+
+static void
+on_display_name_changed (ModestAccountMgr *mgr,
+ const gchar *account,
+ gpointer user_data)
+{
+ /* Update the view */
+ update_account_view (mgr, MODEST_ACCOUNT_VIEW (user_data));
+}
+
+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);
+}