Mercurial > pidgin
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; |