+ return FALSE;
+}
+
+static void
+on_account_default_toggled (GtkCellRendererToggle *cell_renderer, gchar *path,
+ ModestAccountView *self)
+{
+ gboolean is_default = gtk_cell_renderer_toggle_get_active (cell_renderer);
+ if (is_default) {
+ /* Do not allow an account to be marked non-default.
+ * Only allow this to be changed by setting another account to default: */
+ gtk_cell_renderer_toggle_set_active (cell_renderer, TRUE);
+ return;
+ }
+
+ ModestAccountViewPrivate *priv = MODEST_ACCOUNT_VIEW_GET_PRIVATE(self);
+ GtkTreeModel *model = gtk_tree_view_get_model (GTK_TREE_VIEW(self));
+
+ GtkTreeIter iter;
+ if (!gtk_tree_model_get_iter_from_string (model, &iter, path)) {
+ g_printerr ("modest: cannot find iterator\n");
+ return;
+ }
+
+ gchar *account_name = NULL;
+ gtk_tree_model_get (model, &iter, MODEST_ACCOUNT_VIEW_NAME_COLUMN, &account_name,
+ -1);
+
+ /* Set this previously-non-default account as the default: */
+ if (modest_account_mgr_set_default_account (priv->account_mgr, account_name))
+ {
+ /* Explicitely set default column because we are ignoring gconf changes */
+ GtkTreeIter old_default_iter;
+ if (find_default_account (self, &old_default_iter)) {
+ gtk_list_store_set (GTK_LIST_STORE (model), &old_default_iter,
+ MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, FALSE, -1);
+ } else {
+ g_warning ("%s: Did not find old default account in view", __FUNCTION__);
+ }
+
+ gtk_list_store_set (GTK_LIST_STORE (model), &iter,
+ MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN, TRUE, -1);
+ }
+
+ g_free (account_name);
+}
+
+void
+bold_if_default_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
+ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer user_data)
+{
+ gboolean is_default;
+ gtk_tree_model_get (tree_model, iter, MODEST_ACCOUNT_VIEW_IS_DEFAULT_COLUMN,
+ &is_default, -1);
+ g_object_set (G_OBJECT(renderer),
+ "weight", is_default ? 800: 400,
+ NULL);
+}