comparison src/gtksavedstatuses.c @ 12817:c0fc1e9c6768

[gaim-migrate @ 15165] Sort the list of saved statuses alphabetically again committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Wed, 11 Jan 2006 04:40:35 +0000
parents 868d574dd83e
children 292a846fdeea
comparison
equal deleted inserted replaced
12816:ff267281e882 12817:c0fc1e9c6768
1498 STATUS_WINDOW_COLUMN_TITLE, &title, -1); 1498 STATUS_WINDOW_COLUMN_TITLE, &title, -1);
1499 callback(gaim_savedstatus_find(title)); 1499 callback(gaim_savedstatus_find(title));
1500 g_free(title); 1500 g_free(title);
1501 } 1501 }
1502 1502
1503 static gint
1504 saved_status_sort_alphabetically_func(gconstpointer a, gconstpointer b)
1505 {
1506 const GaimSavedStatus *saved_status_a = a;
1507 const GaimSavedStatus *saved_status_b = b;
1508 return strcmp(gaim_savedstatus_get_title(saved_status_a),
1509 gaim_savedstatus_get_title(saved_status_b));
1510 }
1511
1503 GtkWidget *gaim_gtk_status_menu(GaimSavedStatus *current_status, GCallback callback) 1512 GtkWidget *gaim_gtk_status_menu(GaimSavedStatus *current_status, GCallback callback)
1504 { 1513 {
1505 GtkWidget *combobox; 1514 GtkWidget *combobox;
1506 const GList *saved_statuses; 1515 GList *sorted, *cur;
1507 int i; 1516 int i;
1508 int index = -1; 1517 int index = -1;
1509 1518
1510 combobox = gtk_combo_box_new_text(); 1519 combobox = gtk_combo_box_new_text();
1511 1520
1512 for (saved_statuses = gaim_savedstatuses_get_all(), i = 0; 1521 sorted = g_list_copy((GList *)gaim_savedstatuses_get_all());
1513 saved_statuses != NULL; 1522 sorted = g_list_sort(sorted, saved_status_sort_alphabetically_func);
1514 saved_statuses = g_list_next(saved_statuses)) 1523 for (cur = sorted, i = 0;
1515 { 1524 cur != NULL;
1516 GaimSavedStatus *status = (GaimSavedStatus*)saved_statuses->data; 1525 cur = g_list_next(cur))
1526 {
1527 GaimSavedStatus *status = (GaimSavedStatus *)cur->data;
1517 if (!gaim_savedstatus_is_transient(status)) { 1528 if (!gaim_savedstatus_is_transient(status)) {
1518 gtk_combo_box_append_text(GTK_COMBO_BOX(combobox), 1529 gtk_combo_box_append_text(GTK_COMBO_BOX(combobox),
1519 gaim_savedstatus_get_title(status)); 1530 gaim_savedstatus_get_title(status));
1520 if (status == current_status) 1531 if (status == current_status)
1521 index = i; 1532 index = i;
1522 i++; 1533 i++;
1523 } 1534 }
1524 } 1535 }
1536 g_list_free(sorted);
1525 1537
1526 gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index); 1538 gtk_combo_box_set_active(GTK_COMBO_BOX(combobox), index);
1527 g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback); 1539 g_signal_connect(G_OBJECT(combobox), "changed", G_CALLBACK(status_menu_cb), callback);
1528 1540
1529 return combobox; 1541 return combobox;