+typedef struct {
+ TnyFolderStore *folder;
+ gchar *new_name;
+} RenameFolderInfo;
+
+static void
+on_rename_folder_cb (gboolean canceled, GError *err, GtkWindow *parent_window,
+ TnyAccount *account, gpointer user_data)
+{
+ ModestMailOperation *mail_op = NULL;
+ GtkTreeSelection *sel = NULL;
+ GtkWidget *folder_view = NULL;
+ RenameFolderInfo *data = (RenameFolderInfo*)user_data;
+
+ if (MODEST_IS_MAIN_WINDOW(parent_window)) {
+
+ folder_view = modest_main_window_get_child_widget (
+ MODEST_MAIN_WINDOW (parent_window),
+ MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
+
+ mail_op =
+ modest_mail_operation_new_with_error_handling (G_OBJECT(parent_window),
+ modest_ui_actions_rename_folder_error_handler,
+ parent_window, NULL);
+
+ modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
+ mail_op);
+
+ /* Clear the headers view */
+ sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_view));
+ gtk_tree_selection_unselect_all (sel);
+
+ /* Select *after* the changes */
+ modest_folder_view_select_folder (MODEST_FOLDER_VIEW(folder_view),
+ TNY_FOLDER(data->folder), TRUE);
+
+ /* Actually rename the folder */
+ modest_mail_operation_rename_folder (mail_op,
+ TNY_FOLDER (data->folder),
+ (const gchar *) (data->new_name));
+
+ /* TODO folder view filter refilter */
+ /*
+ GtkTreeModel *tree_model = gtk_tree_view_get_model (GTK_TREE_VIEW (folder_view));
+ if (GTK_IS_TREE_MODEL_FILTER (tree_model))
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (tree_model)); */
+ }
+
+ g_object_unref (mail_op);
+ g_free (data->new_name);
+ g_free (data);
+}
+