From: Dirk-Jan C. Binnema Date: Mon, 12 Jun 2006 13:05:17 +0000 (+0000) Subject: * if we cannot get a valid folder type from the server, we can 'guess' the X-Git-Tag: git_migration_finished~4626 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=a797db62dec6b78ecba475350acf3804c80efa9f * if we cannot get a valid folder type from the server, we can 'guess' the type by looking at it's name. This improves modest with eg. MS-Exchange quite a bit (when using IMAP). Also, added some icons. pmo-trunk-r229 --- diff --git a/src/gtk-glade/modest-icon-names.h b/src/gtk-glade/modest-icon-names.h index 985691a..35745bd 100644 --- a/src/gtk-glade/modest-icon-names.h +++ b/src/gtk-glade/modest-icon-names.h @@ -19,11 +19,16 @@ #define MODEST_FOLDER_ICON_INBOX PIXMAP_PREFIX "qgn_list_messagin_inbox.png" #define MODEST_FOLDER_ICON_OUTBOX PIXMAP_PREFIX "qgn_list_messagin_outbox.png" -#define MODEST_FOLDER_ICON_SENT PIXMAP_PREFIX "balsa-mbox-sent.png" -#define MODEST_FOLDER_ICON_TRASH PIXMAP_PREFIX "balsa-mbox-sent.png" -#define MODEST_FOLDER_ICON_JUNK PIXMAP_PREFIX "balsa-mbox-sent.png" -#define MODEST_FOLDER_ICON_DRAFT PIXMAP_PREFIX "balsa-mbox-draft.png" +#define MODEST_FOLDER_ICON_SENT PIXMAP_PREFIX "qgn_list_messagin_sent.png" +#define MODEST_FOLDER_ICON_TRASH PIXMAP_PREFIX "qgn_list_messagin_mail_deleted.png" +#define MODEST_FOLDER_ICON_JUNK PIXMAP_PREFIX "qgn_list_messagin_mail_deleted.png" +#define MODEST_FOLDER_ICON_DRAFTS PIXMAP_PREFIX "qgn_list_messagin_drafts.png" #define MODEST_FOLDER_ICON_NORMAL PIXMAP_PREFIX "qgn_list_gene_fldr_cls.png" +#define MODEST_FOLDER_ICON_CONTACTS PIXMAP_PREFIX "qgn_addr_icon_user_group.png" +#define MODEST_FOLDER_ICON_NOTES PIXMAP_PREFIX "qgn_list_messagin_viewer.png" +#define MODEST_FOLDER_ICON_CALENDAR PIXMAP_PREFIX "qgn_widg_datedit.png" + + #endif /*__MODEST_TNY_ICON_NAMES_H__*/ diff --git a/src/gtk-glade/pixmaps/qgn_addr_icon_user_group.png b/src/gtk-glade/pixmaps/qgn_addr_icon_user_group.png new file mode 100644 index 0000000..c5b9f6c Binary files /dev/null and b/src/gtk-glade/pixmaps/qgn_addr_icon_user_group.png differ diff --git a/src/gtk-glade/pixmaps/qgn_widg_datedit.png b/src/gtk-glade/pixmaps/qgn_widg_datedit.png new file mode 100644 index 0000000..b942504 Binary files /dev/null and b/src/gtk-glade/pixmaps/qgn_widg_datedit.png differ diff --git a/src/modest-tny-folder-tree-view.c b/src/modest-tny-folder-tree-view.c index 1f1c8dc..9960119 100644 --- a/src/modest-tny-folder-tree-view.c +++ b/src/modest-tny-folder-tree-view.c @@ -2,6 +2,7 @@ /* insert (c)/licensing information) */ #include +#include #include #include @@ -120,6 +121,51 @@ text_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, g_free (fname); } +/* FIXME: move these to TnyMail */ +enum { + + TNY_MSG_FOLDER_TYPE_NOTES = TNY_MSG_FOLDER_TYPE_SENT + 1, /* urgh */ + TNY_MSG_FOLDER_TYPE_DRAFTS, + TNY_MSG_FOLDER_TYPE_CONTACTS, + TNY_MSG_FOLDER_TYPE_CALENDAR +}; + +static TnyMsgFolderType +guess_folder_type (const gchar* name) +{ + TnyMsgFolderType type; + gchar *folder; + + g_return_val_if_fail (name, TNY_MSG_FOLDER_TYPE_NORMAL); + + type = TNY_MSG_FOLDER_TYPE_NORMAL; + folder = g_utf8_strdown (name, strlen(name)); + + if (strcmp (folder, "inbox") == 0 || strcmp (folder, _("inbox")) == 0) + type = TNY_MSG_FOLDER_TYPE_INBOX; + else if (strcmp (folder, "outbox") == 0 || strcmp (folder, _("outbox")) == 0) + type = TNY_MSG_FOLDER_TYPE_OUTBOX; + else if (g_str_has_prefix(folder, "junk") || g_str_has_prefix(folder, _("junk"))) + type = TNY_MSG_FOLDER_TYPE_JUNK; + else if (g_str_has_prefix(folder, "trash") || g_str_has_prefix(folder, _("trash"))) + type = TNY_MSG_FOLDER_TYPE_JUNK; + else if (g_str_has_prefix(folder, "sent") || g_str_has_prefix(folder, _("sent"))) + type = TNY_MSG_FOLDER_TYPE_SENT; + + /* these are not *really* TNY_ types */ + else if (g_str_has_prefix(folder, "draft") || g_str_has_prefix(folder, _("draft"))) + type = TNY_MSG_FOLDER_TYPE_DRAFTS; + else if (g_str_has_prefix(folder, "notes") || g_str_has_prefix(folder, _("notes"))) + type = TNY_MSG_FOLDER_TYPE_NOTES; + else if (g_str_has_prefix(folder, "contacts") || g_str_has_prefix(folder, _("contacts"))) + type = TNY_MSG_FOLDER_TYPE_CONTACTS; + else if (g_str_has_prefix(folder, "calendar") || g_str_has_prefix(folder, _("calendar"))) + type = TNY_MSG_FOLDER_TYPE_CALENDAR; + + g_free (folder); + return type; +} + static void icon_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, @@ -128,13 +174,20 @@ icon_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, GObject *rendobj; GdkPixbuf *pixbuf; TnyMsgFolderType type; + gchar *fname; int unread; rendobj = G_OBJECT(renderer); gtk_tree_model_get (tree_model, iter, TNY_ACCOUNT_TREE_MODEL_TYPE_COLUMN, &type, + TNY_ACCOUNT_TREE_MODEL_NAME_COLUMN, &fname, TNY_ACCOUNT_TREE_MODEL_UNREAD_COLUMN, &unread, -1); rendobj = G_OBJECT(renderer); + + if (type == TNY_MSG_FOLDER_TYPE_NORMAL) + type = guess_folder_type (fname); + + g_free (fname); switch (type) { case TNY_MSG_FOLDER_TYPE_INBOX: @@ -149,6 +202,19 @@ icon_cell_data (GtkTreeViewColumn *column, GtkCellRenderer *renderer, case TNY_MSG_FOLDER_TYPE_SENT: pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_SENT); break; + case TNY_MSG_FOLDER_TYPE_DRAFTS: + pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_DRAFTS); + break; + case TNY_MSG_FOLDER_TYPE_NOTES: + pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_NOTES); + break; + case TNY_MSG_FOLDER_TYPE_CALENDAR: + pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_CALENDAR); + break; + case TNY_MSG_FOLDER_TYPE_CONTACTS: + pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_CONTACTS); + break; + case TNY_MSG_FOLDER_TYPE_NORMAL: default: pixbuf = modest_icon_factory_get_icon (MODEST_FOLDER_ICON_NORMAL);