#ifndef __MODEST_DEFS_H__
#define __MODEST_DEFS_H__
+#include <glib/gi18n.h>
/* exit codes for the modest executable*/
enum {
#define MODEST_CACHE_DIR "cache"
#define MODEST_LOCAL_FOLDERS_MAILDIR "local_folders"
#define MODEST_LOCAL_FOLDERS_ACCOUNT_NAME "local_folders"
+#define MODEST_LOCAL_FOLDERS_DISPLAY_NAME N_("Local folders")
/* configuration key definitions for modest */
#define MODEST_CONF_NAMESPACE "/apps/modest"
{MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,200},
};
-static const ModestLocalFolderType LOCAL_FOLDERS[] = {
- MODEST_LOCAL_FOLDER_TYPE_OUTBOX,
- MODEST_LOCAL_FOLDER_TYPE_DRAFTS,
- MODEST_LOCAL_FOLDER_TYPE_SENT,
- MODEST_LOCAL_FOLDER_TYPE_ARCHIVE
+static const TnyFolderType LOCAL_FOLDERS[] = {
+ TNY_FOLDER_TYPE_OUTBOX,
+ TNY_FOLDER_TYPE_DRAFTS,
+ TNY_FOLDER_TYPE_SENT,
+ TNY_FOLDER_TYPE_ARCHIVE
};
-
static ModestTnyPlatformFactory*
get_platform_factory (void)
{
#include <modest-local-folder-info.h>
typedef struct {
- ModestLocalFolderType type;
- const gchar *name;
- const gchar *display_name;
+ TnyFolderType 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")}
+ { TNY_FOLDER_TYPE_UNKNOWN, "<unknown>", N_("<Unknown>")},
+ { TNY_FOLDER_TYPE_NORMAL, "<normal>", N_("<Normal>")},
+ { TNY_FOLDER_TYPE_INBOX, "inbox", N_("Inbox")},
+ { TNY_FOLDER_TYPE_OUTBOX, "outbox", N_("Outbox")},
+ { TNY_FOLDER_TYPE_TRASH, "trash", N_("Trash")},
+ { TNY_FOLDER_TYPE_JUNK, "junk", N_("Junk")},
+ { TNY_FOLDER_TYPE_SENT, "sent", N_("Sent items")},
+ { TNY_FOLDER_TYPE_ROOT, "<root>", N_("<root>")},
+ { TNY_FOLDER_TYPE_NOTES, "notes", N_("Notes")},
+ { TNY_FOLDER_TYPE_DRAFTS, "drafts", N_("Drafts")},
+ { TNY_FOLDER_TYPE_OUTBOX, "contacts", N_("Contacts")},
+ { TNY_FOLDER_TYPE_OUTBOX, "calendar", N_("Calendar")},
+ { TNY_FOLDER_TYPE_ARCHIVE, "archive", N_("Archive")}
};
-ModestLocalFolderType
+TnyFolderType
modest_local_folder_info_get_type (const gchar *name)
{
int i;
-
- g_return_val_if_fail (name, MODEST_LOCAL_FOLDER_TYPE_UNKNOWN);
+ g_return_val_if_fail (name, TNY_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;
+ return TNY_FOLDER_TYPE_UNKNOWN;
}
+
const gchar*
-modest_local_folder_info_get_type_name (ModestLocalFolderType type)
+modest_local_folder_info_get_type_name (TnyFolderType type)
{
int i = 0;
- g_return_val_if_fail (type > MODEST_LOCAL_FOLDER_TYPE_UNKNOWN &&
- type < MODEST_LOCAL_FOLDER_TYPE_NUM, NULL);
+ g_return_val_if_fail (type >= TNY_FOLDER_TYPE_UNKNOWN &&
+ type < TNY_FOLDER_TYPE_NUM, NULL);
for (i = 0; i != G_N_ELEMENTS(ModestLocalFolderMap); ++i) {
if (ModestLocalFolderMap[i].type == type)
}
const gchar*
-modest_local_folder_info_get_type_display_name (ModestLocalFolderType type)
+modest_local_folder_info_get_type_display_name (TnyFolderType type)
{
int i = 0;
- g_return_val_if_fail (type > MODEST_LOCAL_FOLDER_TYPE_UNKNOWN &&
- type < MODEST_LOCAL_FOLDER_TYPE_NUM, NULL);
+ g_return_val_if_fail (type >= TNY_FOLDER_TYPE_UNKNOWN &&
+ type < TNY_FOLDER_TYPE_NUM, NULL);
for (i = 0; i != G_N_ELEMENTS(ModestLocalFolderMap); ++i) {
if (ModestLocalFolderMap[i].type == type)
#include <glib.h>
#include <modest-defs.h>
-
-typedef enum {
- MODEST_LOCAL_FOLDER_TYPE_UNKNOWN,
- MODEST_LOCAL_FOLDER_TYPE_DRAFTS,
- MODEST_LOCAL_FOLDER_TYPE_SENT,
- MODEST_LOCAL_FOLDER_TYPE_OUTBOX,
- MODEST_LOCAL_FOLDER_TYPE_ARCHIVE,
- MODEST_LOCAL_FOLDER_TYPE_JUNK,
- MODEST_LOCAL_FOLDER_TYPE_TRASH,
- MODEST_LOCAL_FOLDER_TYPE_NUM
-} ModestLocalFolderType;
-
+#include <tny-folder.h>
/**
* modest_local_folder_info_get_type
* in case of error
*
*/
-ModestLocalFolderType modest_local_folder_info_get_type (const gchar *name);
+TnyFolderType modest_local_folder_info_get_type (const gchar *name);
/**
* modest_local_folder_get_type_name
* the returned name should NOT be freed or modified
*
*/
-const gchar* modest_local_folder_info_get_type_name (ModestLocalFolderType type);
+const gchar* modest_local_folder_info_get_type_name (TnyFolderType type);
/**
* modest_local_folder_info_get_type_display_name
* the returned name should NOT be freed or modified
*
*/
-const gchar* modest_local_folder_info_get_type_display_name (ModestLocalFolderType type);
+const gchar* modest_local_folder_info_get_type_display_name (TnyFolderType type);
/**
#include <glib/gi18n.h>
#include <string.h>
#include <modest-tny-folder.h>
-
+#include <tny-camel-folder.h>
+#include <camel/camel-folder.h>
TnyFolderType
modest_tny_folder_guess_folder_type_from_name (const gchar* name)
/* 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);
+}
#define __MODEST_TNY_FOLDER_H__
#include <tny-folder.h>
+#include <modest-local-folder-info.h>
G_BEGIN_DECLS
TnyFolderType modest_tny_folder_guess_folder_type_from_name (const gchar *folder_name);
+
+/**
+ * modest_tny_folder_is_local_folder:
+ * @folder: a valid tnymail folder
+ *
+ * checks if the folder is part of the "local folders" pseudo-account
+ *
+ * Returns: TRUE if it's a local folder, FALSE otherwise
+ */
+gboolean modest_tny_folder_is_local_folder (const TnyFolder *folder);
+
+/**
+ * modest_tny_folder_get_local_folder_type:
+ * @folder: a valid tnymail folder
+ *
+ * checks if the folder is part of the "local folders" pseudo-account
+ *
+ * Returns: TRUE if it's a local folder, FALSE otherwise
+ */
+TnyFolderType modest_tny_folder_get_local_folder_type (const TnyFolder *folder);
+
+
+
/**
* modest_tny_folder_get_rules:
* @folder: a valid tnymail folder
*/
ModestTnyFolderRules modest_tny_folder_get_rules (const TnyFolder *folder);
+
+
+
+
+
G_END_DECLS
#endif /* __MODEST_TNY_FOLDER_H__*/
#include <tny-account-store.h>
#include <tny-account.h>
#include <tny-folder.h>
+#include <tny-camel-folder.h>
#include <modest-tny-folder.h>
#include <modest-marshal.h>
#include <modest-icon-names.h>
}
+
static void
text_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
gchar *fname;
gint unread;
TnyFolderType type;
+ TnyFolder *folder;
g_return_if_fail (column);
g_return_if_fail (tree_model);
TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN, &fname,
TNY_GTK_FOLDER_STORE_TREE_MODEL_UNREAD_COLUMN, &unread,
TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN, &type,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &folder,
-1);
rendobj = G_OBJECT(renderer);
if (!fname)
return;
-
+
+ if (folder && type != TNY_FOLDER_TYPE_ROOT) { /* FIXME: tnymail bug? crashes with root folders */
+ if (modest_tny_folder_is_local_folder (folder)) {
+ TnyFolderType type;
+ type = modest_tny_folder_get_local_folder_type (folder);
+ if (type != TNY_FOLDER_TYPE_UNKNOWN) {
+ g_free (fname);
+ fname = g_strdup(modest_local_folder_info_get_type_display_name (type));
+ }
+ }
+ } else if (folder && type == TNY_FOLDER_TYPE_ROOT) {
+ if (strcmp (fname, MODEST_LOCAL_FOLDERS_ACCOUNT_NAME) == 0) {/* FIXME: hack */
+ g_free (fname);
+ fname = g_strdup (MODEST_LOCAL_FOLDERS_DISPLAY_NAME);
+ }
+ }
+
if (unread > 0) {
gchar *folder_title = g_strdup_printf ("%s (%d)", fname, unread);
g_object_set (rendobj,"text", folder_title, "weight", 800, NULL);
return priv->cur_folder;
}
-
static gint
cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
gpointer user_data)