* modest-folder-view.c: change sorting for remote folders: make Inbox be the first...
authorDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Sun, 8 Jul 2007 12:12:37 +0000 (12:12 +0000)
committerDirk-Jan C. Binnema <dirk-jan.binnema@nokia.com>
Sun, 8 Jul 2007 12:12:37 +0000 (12:12 +0000)
* modest-tny-folder: don't try to be too smart about guessing folder types. a local folder
   called "Inbox" should not be treated as an Inbox folder.

pmo-trunk-r2628

src/modest-tny-folder.c
src/widgets/modest-folder-view.c

index d4e4a19..358d312 100644 (file)
@@ -50,20 +50,20 @@ modest_tny_folder_guess_folder_type_from_name (const gchar* name)
        type = TNY_FOLDER_TYPE_UNKNOWN;
        folder = g_utf8_strdown (name, strlen(name));
 
-       if (strcmp (folder, "inbox") == 0 ||
-           strcmp (folder, _("inbox")) == 0 ||
-           strcmp (folder, _("mcen_me_folder_inbox")) == 0)
-               type = TNY_FOLDER_TYPE_INBOX;
-       else if (strcmp (folder, "outbox") == 0 ||
+//     if (strcmp (folder, "inbox") == 0 ||
+//         strcmp (folder, _("inbox")) == 0 ||
+//         strcmp (folder, _("mcen_me_folder_inbox")) == 0)
+//             type = TNY_FOLDER_TYPE_INBOX;
+       if (strcmp (folder, "outbox") == 0 ||
                 strcmp (folder, _("outbox")) == 0 ||
                 strcmp (folder, _("mcen_me_folder_outbox")) == 0)
                type = TNY_FOLDER_TYPE_OUTBOX;
-       else if (g_str_has_prefix(folder, "junk") ||
-                g_str_has_prefix(folder, _("junk")))
-               type = TNY_FOLDER_TYPE_JUNK;
-       else if (g_str_has_prefix(folder, "trash") ||
-                g_str_has_prefix(folder, _("trash")))
-               type = TNY_FOLDER_TYPE_TRASH;
+//     else if (g_str_has_prefix(folder, "junk") ||
+//              g_str_has_prefix(folder, _("junk")))
+//             type = TNY_FOLDER_TYPE_JUNK;
+//     else if (g_str_has_prefix(folder, "trash") ||
+//              g_str_has_prefix(folder, _("trash")))
+//             type = TNY_FOLDER_TYPE_TRASH;
        else if (g_str_has_prefix(folder, "sent") ||
                 g_str_has_prefix(folder, _("sent")) ||
                 strcmp (folder, _("mcen_me_folder_sent")) == 0)
@@ -72,15 +72,15 @@ modest_tny_folder_guess_folder_type_from_name (const gchar* name)
                 g_str_has_prefix(folder, _("draft")) ||
                 strcmp (folder, _("mcen_me_folder_drafts")) == 0)
                type = TNY_FOLDER_TYPE_DRAFTS;
-       else if (g_str_has_prefix(folder, "notes") ||
-                g_str_has_prefix(folder, _("notes")))
-               type = TNY_FOLDER_TYPE_NOTES;
-       else if (g_str_has_prefix(folder, "contacts") ||
-                g_str_has_prefix(folder, _("contacts")))
-               type = TNY_FOLDER_TYPE_CONTACTS;
-       else if (g_str_has_prefix(folder, "calendar") ||
-                g_str_has_prefix(folder, _("calendar")))
-               type = TNY_FOLDER_TYPE_CALENDAR;
+//     else if (g_str_has_prefix(folder, "notes") ||
+//              g_str_has_prefix(folder, _("notes")))
+//             type = TNY_FOLDER_TYPE_NOTES;
+//     else if (g_str_has_prefix(folder, "contacts") ||
+//              g_str_has_prefix(folder, _("contacts")))
+//             type = TNY_FOLDER_TYPE_CONTACTS;
+//     else if (g_str_has_prefix(folder, "calendar") ||
+//              g_str_has_prefix(folder, _("calendar")))
+//             type = TNY_FOLDER_TYPE_CALENDAR;
        
        g_free (folder);
        return type;
index ee5cbe1..893c068 100644 (file)
@@ -1161,21 +1161,24 @@ get_cmp_rows_type_pos (GObject *folder)
 static gint
 get_cmp_subfolder_type_pos (TnyFolderType t)
 {
-       /* Outbox, Drafts, Sent, User */
-       /* 0, 1, 2, 3 */
+       /* Inbox, Outbox, Drafts, Sent, User */
+       /* 0, 1, 2, 3, 4 */
 
        switch (t) {
-       case TNY_FOLDER_TYPE_OUTBOX:
+       case TNY_FOLDER_TYPE_INBOX:
                return 0;
                break;
-       case TNY_FOLDER_TYPE_DRAFTS:
+       case TNY_FOLDER_TYPE_OUTBOX:
                return 1;
                break;
-       case TNY_FOLDER_TYPE_SENT:
+       case TNY_FOLDER_TYPE_DRAFTS:
                return 2;
                break;
-       default:
+       case TNY_FOLDER_TYPE_SENT:
                return 3;
+               break;
+       default:
+               return 4;
        }
 }
 
@@ -1252,10 +1255,11 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
                                cmp = modest_text_utils_utf8_strcmp (name1, name2, TRUE);
                }
        } else {
-               GtkTreeIter parent;
-               gboolean has_parent;
                gint cmp1 = 0, cmp2 = 0;
                /* get the parent to know if it's a local folder */
+
+               GtkTreeIter parent;
+               gboolean has_parent;
                has_parent = gtk_tree_model_iter_parent (tree_model, &parent, iter1);
                if (has_parent) {
                        GObject *parent_folder;
@@ -1272,6 +1276,13 @@ cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
                        }
                        g_object_unref (parent_folder);
                }
+
+               /* if they are not local folders */
+               if (cmp1 == cmp2) {
+                       cmp1 = get_cmp_subfolder_type_pos (tny_folder_get_folder_type (TNY_FOLDER (folder1)));
+                       cmp2 = get_cmp_subfolder_type_pos (tny_folder_get_folder_type (TNY_FOLDER (folder2)));
+               }
+
                if (cmp1 == cmp2)
                        cmp = modest_text_utils_utf8_strcmp (name1, name2, TRUE);
                else