[evolution-patches] Re: Improve folder treeview order



Christian Neumair schrieb:
The attached patch improves the sort order of folders inside the folder treeview. See patch for order details.

Sorry, the patch was not only lacking the most important part, it didn't work properly as well. Here comes the fixed patch.
regs,
Chris

Index: mail/em-folder-tree-model.c
===================================================================
RCS file: /cvs/gnome/evolution/mail/em-folder-tree-model.c,v
retrieving revision 1.53
diff -u -r1.53 em-folder-tree-model.c
--- mail/em-folder-tree-model.c	28 May 2004 17:04:18 -0000	1.53
+++ mail/em-folder-tree-model.c	1 Jun 2004 19:17:12 -0000
@@ -177,6 +177,40 @@
 			      G_TYPE_STRING);
 }
 
+/* This makes folders show up in the following order: Inbox, Outbox, Drafts, Sent, Junk, Trash, Others */
+static guint
+name_to_position (gchar *name)
+{
+	g_assert (name);
+
+	if ((!strcmp (name, "INBOX") ||
+	     !strcmp (name, "Inbox") ||
+	     !strcmp (name, _("Inbox"))))
+		return 0;
+	else if ((!strcmp (name, "OUTBOX") ||
+		  !strcmp (name, "Outbox") ||
+		  !strcmp (name, _("Outbox"))))
+		return 1;
+	else if ((!strcmp (name, "DRAFTS") ||
+		  !strcmp (name, "Drafts") ||
+		  !strcmp (name, _("Drafts"))))
+		return 2;
+	else if ((!strcmp (name, "SENT") ||
+		  !strcmp (name, "Sent") ||
+		  !strcmp (name, _("Sent"))))
+		return 3;
+	else if ((!strcmp (name, "TRASH") ||
+		  !strcmp (name, "Trash") ||
+		  !strcmp (name, _("Trash"))))
+		return 4;
+	else if ((!strcmp (name, "JUNK") ||
+		  !strcmp (name, "Junk") ||
+		  !strcmp (name, _("Junk"))))
+		return 5;
+	else
+		return 6;
+}
+
 static int
 sort_cb (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer user_data)
 {
@@ -184,6 +218,7 @@
 	char *aname, *bname;
 	CamelStore *store;
 	gboolean is_store;
+	guint atype, btype;
 	
 	gtk_tree_model_get (model, a, COL_BOOL_IS_STORE, &is_store,
 			    COL_POINTER_CAMEL_STORE, &store,
@@ -207,11 +242,12 @@
 		if (bname && !strcmp (bname, _("UNMATCHED")))
 			return -1;
 	} else {
-		/* Inbox is always first */
-		if (aname && (!strcmp (aname, "INBOX") || !strcmp (aname, _("Inbox"))))
-			return -1;
-		if (bname && (!strcmp (bname, "INBOX") || !strcmp (bname, _("Inbox"))))
-			return 1;
+		atype = name_to_position (aname);
+		btype = name_to_position (bname);
+
+		if (atype < 6 ||
+		    btype < 6)
+			return (atype == btype ? 0 : atype > btype ? 1 : -1);
 	}
 	
 	if (aname == NULL) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]