diff options
author | Not Zed <NotZed@Ximian.com> | 2004-06-28 16:36:29 +0800 |
---|---|---|
committer | Michael Zucci <zucchi@src.gnome.org> | 2004-06-28 16:36:29 +0800 |
commit | c096dca1ea011f90aff74b9da99128d93a7fc111 (patch) | |
tree | 87b33bd60e836a44f392051e16b7da568fa16993 | |
parent | 218b162a5dd404672af53d0763def1b037b10535 (diff) | |
download | gsoc2013-evolution-c096dca1ea011f90aff74b9da99128d93a7fc111.tar.gz gsoc2013-evolution-c096dca1ea011f90aff74b9da99128d93a7fc111.tar.zst gsoc2013-evolution-c096dca1ea011f90aff74b9da99128d93a7fc111.zip |
override CAMEL_FOLDER_NAME arg so we can translate "." into "Inbox".
2004-06-28 Not Zed <NotZed@Ximian.com>
* providers/local/camel-maildir-folder.c (maildir_folder_getv):
override CAMEL_FOLDER_NAME arg so we can translate "." into
"Inbox".
svn path=/trunk/; revision=26538
-rw-r--r-- | camel/ChangeLog | 4 | ||||
-rw-r--r-- | camel/providers/local/camel-maildir-folder.c | 31 | ||||
-rw-r--r-- | camel/providers/local/camel-maildir-store.c | 4 |
3 files changed, 37 insertions, 2 deletions
diff --git a/camel/ChangeLog b/camel/ChangeLog index 9ea8900535..d2dc504619 100644 --- a/camel/ChangeLog +++ b/camel/ChangeLog @@ -1,5 +1,9 @@ 2004-06-28 Not Zed <NotZed@Ximian.com> + * providers/local/camel-maildir-folder.c (maildir_folder_getv): + override CAMEL_FOLDER_NAME arg so we can translate "." into + "Inbox". + * providers/local/camel-maildir-store.c (camel_folder_info_new): take url argument directly, fixes a memleak. (camel_folder_info_new): make the toplevel "." into "Inbox" diff --git a/camel/providers/local/camel-maildir-folder.c b/camel/providers/local/camel-maildir-folder.c index 3caa91d771..17bc081f94 100644 --- a/camel/providers/local/camel-maildir-folder.c +++ b/camel/providers/local/camel-maildir-folder.c @@ -56,6 +56,35 @@ static CamelMimeMessage *maildir_get_message(CamelFolder * folder, const gchar * static void maildir_finalize(CamelObject * object); +static int +maildir_folder_getv(CamelObject *object, CamelException *ex, CamelArgGetV *args) +{ + CamelFolder *folder = (CamelFolder *)object; + int i; + guint32 tag; + + for (i=0;i<args->argc;i++) { + CamelArgGet *arg = &args->argv[i]; + + tag = arg->tag; + + switch (tag & CAMEL_ARG_TAG) { + case CAMEL_FOLDER_ARG_NAME: + if (!strcmp(folder->full_name, ".")) + *arg->ca_str = _("Inbox"); + else + *arg->ca_str = folder->name; + break; + default: + continue; + } + + arg->tag = (tag & CAMEL_ARG_TYPE) | CAMEL_ARG_IGNORE; + } + + return ((CamelObjectClass *)parent_class)->getv(object, ex, args); +} + static void camel_maildir_folder_class_init(CamelObjectClass * camel_maildir_folder_class) { CamelFolderClass *camel_folder_class = CAMEL_FOLDER_CLASS(camel_maildir_folder_class); @@ -66,6 +95,8 @@ static void camel_maildir_folder_class_init(CamelObjectClass * camel_maildir_fol /* virtual method definition */ /* virtual method overload */ + ((CamelObjectClass *)camel_folder_class)->getv = maildir_folder_getv; + camel_folder_class->append_message = maildir_append_message; camel_folder_class->get_message = maildir_get_message; diff --git a/camel/providers/local/camel-maildir-store.c b/camel/providers/local/camel-maildir-store.c index 853c02ccac..40cdc07e75 100644 --- a/camel/providers/local/camel-maildir-store.c +++ b/camel/providers/local/camel-maildir-store.c @@ -50,6 +50,7 @@ static CamelLocalStoreClass *parent_class = NULL; static CamelFolder *get_folder(CamelStore * store, const char *folder_name, guint32 flags, CamelException * ex); static CamelFolder *get_inbox (CamelStore *store, CamelException *ex); static void delete_folder(CamelStore * store, const char *folder_name, CamelException * ex); +static void maildir_rename_folder(CamelStore *store, const char *old, const char *new, CamelException *ex); static CamelFolderInfo * get_folder_info (CamelStore *store, const char *top, guint32 flags, CamelException *ex); @@ -64,6 +65,7 @@ static void camel_maildir_store_class_init(CamelObjectClass * camel_maildir_stor camel_store_class->get_folder = get_folder; camel_store_class->get_inbox = get_inbox; camel_store_class->delete_folder = delete_folder; + camel_store_class->rename_folder = maildir_rename_folder; camel_store_class->get_folder_info = get_folder_info; camel_store_class->free_folder_info = camel_store_free_folder_info_full; @@ -225,8 +227,6 @@ static void delete_folder(CamelStore * store, const char *folder_name, CamelExce static void maildir_rename_folder(CamelStore *store, const char *old, const char *new, CamelException *ex) { - CamelFolder *folder; - if (strcmp(old, ".") == 0) { camel_exception_setv(ex, CAMEL_EXCEPTION_STORE_NO_FOLDER, _("Cannot rename folder: %s: Invalid operation"), _("Inbox")); |