aboutsummaryrefslogtreecommitdiffstats
path: root/camel/camel-store.c
diff options
context:
space:
mode:
Diffstat (limited to 'camel/camel-store.c')
-rw-r--r--camel/camel-store.c40
1 files changed, 40 insertions, 0 deletions
diff --git a/camel/camel-store.c b/camel/camel-store.c
index d729bf10e7..3be983e081 100644
--- a/camel/camel-store.c
+++ b/camel/camel-store.c
@@ -38,6 +38,8 @@ static CamelFolder *get_folder (CamelStore *store, const char *folder_name,
gboolean create, CamelException *ex);
static void delete_folder (CamelStore *store, const char *folder_name,
CamelException *ex);
+static void rename_folder (CamelStore *store, const char *old_name,
+ const char *new_name, CamelException *ex);
static char *get_folder_name (CamelStore *store, const char *folder_name,
CamelException *ex);
@@ -62,6 +64,7 @@ camel_store_class_init (CamelStoreClass *camel_store_class)
/* virtual method definition */
camel_store_class->get_folder = get_folder;
camel_store_class->delete_folder = delete_folder;
+ camel_store_class->rename_folder = rename_folder;
camel_store_class->get_folder_name = get_folder_name;
camel_store_class->get_root_folder_name = get_root_folder_name;
camel_store_class->get_default_folder_name = get_default_folder_name;
@@ -138,6 +141,16 @@ delete_folder (CamelStore *store, const char *folder_name, CamelException *ex)
gtk_type_name (GTK_OBJECT_TYPE (store)));
}
+static void rename_folder (CamelStore *store, const char *old_name,
+ const char *new_name, CamelException *ex)
+{
+ g_warning ("CamelStore::rename_folder not implemented for `%s'",
+ gtk_type_name (GTK_OBJECT_TYPE (store)));
+ camel_exception_setv(ex, CAMEL_EXCEPTION_SYSTEM,
+ "rename folder unimplemented for: %s",
+ gtk_type_name (GTK_OBJECT_TYPE (store)));
+}
+
/* CamelStore::get_folder_name should:
* a) make sure that the provided name is valid
@@ -287,6 +300,33 @@ camel_store_delete_folder (CamelStore *store, const char *folder_name,
}
}
+/**
+ * camel_store_rename_folder:
+ * @store:
+ * @old_name:
+ * @new_name:
+ * @ex:
+ *
+ * Rename a named folder to a new name.
+ **/
+void camel_store_rename_folder (CamelStore *store,
+ const char *old_name,
+ const char *new_name,
+ CamelException *ex)
+{
+ char *old, *new;
+
+ old = CS_CLASS (store)->get_folder_name(store, old_name, ex);
+ if (old) {
+ new = CS_CLASS (store)->get_folder_name(store, new_name, ex);
+ if (new) {
+ CS_CLASS (store)->rename_folder(store, old, new, ex);
+ g_free(new);
+ }
+ g_free(old);
+ }
+}
+
/**
* camel_store_get_root_folder: return the top-level folder