r3467 - in trunk/src/target/OM-2007.2/applications/openmoko-messages2: . src

chris at sita.openmoko.org chris at sita.openmoko.org
Wed Nov 21 17:11:25 CET 2007


Author: chris
Date: 2007-11-21 17:11:23 +0100 (Wed, 21 Nov 2007)
New Revision: 3467

Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
Log:
        * src/sms-contacts.c: (contacts_iter_compare_func),
        (sms_contacts_page_new):
        Add a sort function for the contacts


Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog	2007-11-21 16:05:13 UTC (rev 3466)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/ChangeLog	2007-11-21 16:11:23 UTC (rev 3467)
@@ -1,5 +1,11 @@
 2007-11-21  Chris Lord  <chris at openedhand.com>
 
+	* src/sms-contacts.c: (contacts_iter_compare_func),
+	(sms_contacts_page_new):
+	Add a sort function for the contacts
+
+2007-11-21  Chris Lord  <chris at openedhand.com>
+
 	* src/sms-contacts.c: (nophoto_filter_func),
 	(sms_contacts_page_new):
 	Use a filter modify func to set contacts with no photo to the

Modified: trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c	2007-11-21 16:05:13 UTC (rev 3466)
+++ trunk/src/target/OM-2007.2/applications/openmoko-messages2/src/sms-contacts.c	2007-11-21 16:11:23 UTC (rev 3467)
@@ -20,7 +20,10 @@
 #include "sms-contacts.h"
 #include <libmokoui2/moko-finger-scroll.h>
 #include <libmokoui2/moko-search-bar.h>
-#include <config.h>
+#include <string.h>
+#ifdef HAVE_CONFIG_H
+#  include <config.h>
+#endif
 
 /* Following two functions taken from pimlico Contacts */
 static void
@@ -176,6 +179,32 @@
 	}
 }
 
+static gint
+contacts_iter_compare_func (GtkTreeModel *model, GtkTreeIter *a,
+			    GtkTreeIter *b, SmsData *data)
+{
+	gint result;
+	gchar *name1, *name2, *name1c, *name2c;
+	
+	gtk_tree_model_get (model, a, COL_NAME, &name1, -1);
+	gtk_tree_model_get (model, b, COL_NAME, &name2, -1);
+	
+	name1c = g_utf8_casefold (name1, -1);
+	name2c = g_utf8_casefold (name2, -1);
+	
+	if (name1c && name2c) result = strcmp (name1c, name2c);
+	else if (name1c) result = 1;
+	else if (name2c) result = -1;
+	else result = 0;
+	
+	g_free (name1c);
+	g_free (name1);
+	g_free (name2c);
+	g_free (name2);
+	
+	return result;
+}
+
 GtkWidget *
 sms_contacts_page_new (SmsData *data)
 {
@@ -231,8 +260,14 @@
 		gtk_icon_theme_get_default (), "stock_person", 48, 0, NULL);
 
 	/* Create contacts model */
-	data->contacts_store = gtk_list_store_new (COL_LAST,
+	data->contacts_store = (GtkTreeModel *)gtk_list_store_new (COL_LAST,
 		G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF);
+	gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (
+		data->contacts_store), COL_NAME,
+		(GtkTreeIterCompareFunc)contacts_iter_compare_func,
+		data, NULL);
+	gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (
+		data->contacts_store), COL_NAME, GTK_SORT_ASCENDING);
 	data->contacts = g_hash_table_new_full (g_str_hash, g_str_equal,
 		(GDestroyNotify)g_free, (GDestroyNotify)free_iter_slice);
 	





More information about the commitlog mailing list