[evolution-patches] Re: Improve folder treeview order
- From: "Christian Neumair" <chris gnome-de org>
- To: evolution-patches lists ximian com
- Subject: [evolution-patches] Re: Improve folder treeview order
- Date: Tue, 01 Jun 2004 21:18:28 +0200
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]