* modest-text-utils.c:
[modest] / src / modest-tny-folder.c
index 9f6f290..720e659 100644 (file)
 #include <glib/gi18n.h>
 #include <string.h>
 #include <modest-tny-folder.h>
-
-
-typedef struct {
-       ModestLocalFolderType   type;
-       const gchar             *name;
-       const gchar             *display_name;
-} ModestLocalFolder;
-
-const ModestLocalFolder ModestLocalFolderMap[] = {
-       { MODEST_LOCAL_FOLDER_TYPE_JUNK,    "junk",    N_("junk")},
-       { MODEST_LOCAL_FOLDER_TYPE_TRASH,   "trash",   N_("trash")},
-       { MODEST_LOCAL_FOLDER_TYPE_DRAFTS,  "drafts",  N_("drafts")},
-       { MODEST_LOCAL_FOLDER_TYPE_SENT,    "sent",    N_("sent")},
-       { MODEST_LOCAL_FOLDER_TYPE_OUTBOX,  "outbox",  N_("outbox")},
-       { MODEST_LOCAL_FOLDER_TYPE_ARCHIVE, "archive", N_("archive")}
-};
-
-
-ModestLocalFolderType
-modest_tny_folder_get_local_folder_type (const gchar *name)
-{
-       int i;
-
-       g_return_val_if_fail (name, MODEST_LOCAL_FOLDER_TYPE_UNKNOWN);
-
-       for (i = 0; i != G_N_ELEMENTS(ModestLocalFolderMap); ++i) {
-               if (strcmp (ModestLocalFolderMap[i].name, name) == 0)
-                       return ModestLocalFolderMap[i].type;
-       }
-       return MODEST_LOCAL_FOLDER_TYPE_UNKNOWN;
-}
-
-const gchar*
-modest_tny_folder_get_local_folder_type_name (ModestLocalFolderType type)
-{
-       int i = 0;
-       g_return_val_if_fail (type > MODEST_LOCAL_FOLDER_TYPE_UNKNOWN &&
-                             type < MODEST_LOCAL_FOLDER_TYPE_NUM, NULL);
-       
-       for (i = 0; i != G_N_ELEMENTS(ModestLocalFolderMap); ++i) {
-               if (ModestLocalFolderMap[i].type == type)
-                       return ModestLocalFolderMap[i].name;
-       }
-       return NULL;    
-}
-
-
-const gchar*
-modest_tny_folder_get_local_folder_type_display_name (ModestLocalFolderType type)
-{
-       int i = 0;
-       g_return_val_if_fail (type > MODEST_LOCAL_FOLDER_TYPE_UNKNOWN &&
-                             type < MODEST_LOCAL_FOLDER_TYPE_NUM, NULL);
-       
-       for (i = 0; i != G_N_ELEMENTS(ModestLocalFolderMap); ++i) {
-               if (ModestLocalFolderMap[i].type == type)
-                       return ModestLocalFolderMap[i].display_name;
-       }
-       return NULL;    
-}
-
-
-
+#include <tny-camel-folder.h>
+#include <camel/camel-folder.h>
 
 TnyFolderType
 modest_tny_folder_guess_folder_type_from_name (const gchar* name)
@@ -168,3 +107,45 @@ modest_tny_folder_get_folder_rules   (const TnyFolder *folder)
        /* FIXME -- implement this */
        return 0;
 }
+
+
+gboolean
+modest_tny_folder_is_local_folder   (const TnyFolder *folder)
+{
+       TnyAccount*  account;
+       const gchar* account_name;
+       
+       g_return_val_if_fail (folder, FALSE);
+       
+       account = tny_folder_get_account ((TnyFolder*)folder);
+       if (!account)
+               return FALSE;
+
+       account_name = tny_account_get_id (account);
+       if (!account_name)
+               return FALSE;
+
+       return (strcmp (account_name, MODEST_LOCAL_FOLDERS_ACCOUNT_NAME) == 0);
+}      
+
+
+TnyFolderType
+modest_tny_folder_get_local_folder_type  (const TnyFolder *folder)
+{
+       CamelFolder *camel_folder;
+       const gchar *full_name;
+       
+       g_return_val_if_fail (folder, TNY_FOLDER_TYPE_UNKNOWN);
+       g_return_val_if_fail (modest_tny_folder_is_local_folder(folder),
+                             TNY_FOLDER_TYPE_UNKNOWN);
+
+       camel_folder = tny_camel_folder_get_folder (TNY_CAMEL_FOLDER(folder));
+       if (!camel_folder)
+               return TNY_FOLDER_TYPE_UNKNOWN;
+
+       full_name = camel_folder_get_full_name (camel_folder);
+       if (!full_name)
+               return TNY_FOLDER_TYPE_UNKNOWN;
+
+       return modest_local_folder_info_get_type (full_name);
+}