[gnome-control-center] region: Sort locales for format selection



commit d62267186a7cea27b9033bef9342a3d0df70e102
Author: Rodrigo Moya <rodrigo gnome-db org>
Date:   Tue Aug 9 12:46:15 2011 +0200

    region: Sort locales for format selection

 panels/region/gnome-region-panel-formats.c |   30 ++++++++++++++++++++++++++-
 1 files changed, 28 insertions(+), 2 deletions(-)
---
diff --git a/panels/region/gnome-region-panel-formats.c b/panels/region/gnome-region-panel-formats.c
index 791df6c..11c05d5 100644
--- a/panels/region/gnome-region-panel-formats.c
+++ b/panels/region/gnome-region-panel-formats.c
@@ -118,9 +118,35 @@ setup_formats (GtkBuilder *builder)
 
 	langs = gdm_get_all_language_names ();
 	for (i = 0; langs[i] != NULL; i++) {
+		GtkTreeModel *model;
+		GtkTreeIter iter;
+		gint row = 0;
+
 		language = gdm_get_language_from_name (langs[i], NULL);
-		/* FIXME: sort while adding */
-		gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), langs[i], language);
+
+		/* Sort while adding */
+		model = gtk_combo_box_get_model (GTK_COMBO_BOX (combo));
+		if (gtk_tree_model_get_iter_first (model, &iter)) {
+			gboolean added = FALSE;
+
+			do {
+				gchar *iter_s;
+
+				gtk_tree_model_get (model, &iter, 0, &iter_s, -1);
+				if (g_strcmp0 (language, iter_s) < 0) {
+					gtk_combo_box_text_insert (GTK_COMBO_BOX_TEXT (combo), row,
+								   langs[i], language);
+					added = TRUE;
+					break;
+				}
+
+				row++;
+			} while (gtk_tree_model_iter_next (model, &iter));
+
+			if (!added)
+				gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), langs[i], language);
+		} else
+			gtk_combo_box_text_append (GTK_COMBO_BOX_TEXT (combo), langs[i], language);
 
 		g_free (language);
 



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