gui/view: Sort the user playlists menu
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
ddb564ed82
commit
f02dff4177
20
gui/view.c
20
gui/view.c
|
@ -325,21 +325,37 @@ static void __view_rc_add_other(GtkWidget *item, gpointer data)
|
|||
&vad_data);
|
||||
}
|
||||
|
||||
static gint __view_cmp_pl(gconstpointer a, gconstpointer b)
|
||||
{
|
||||
struct playlist *pl_a = (struct playlist *)a;
|
||||
struct playlist *pl_b = (struct playlist *)b;
|
||||
return g_utf8_collate(pl_a->pl_name, pl_b->pl_name);
|
||||
}
|
||||
|
||||
static GtkWidget *__view_rc_build_submenu(void)
|
||||
{
|
||||
struct db_entry *dbe, *next;
|
||||
struct playlist *playlist;
|
||||
GtkWidget *submenu, *item;
|
||||
GList *iter, *list = NULL;
|
||||
|
||||
if (pl_user_db_get()->db_size == 0)
|
||||
return NULL;
|
||||
|
||||
submenu = gtk_menu_new();
|
||||
db_for_each(dbe, next, pl_user_db_get()) {
|
||||
playlist = &USER_PLAYLIST(dbe)->pl_playlist;
|
||||
list = g_list_insert_sorted(list, playlist, __view_cmp_pl);
|
||||
}
|
||||
|
||||
submenu = gtk_menu_new();
|
||||
iter = g_list_first(list);
|
||||
while (iter) {
|
||||
playlist = (struct playlist *)iter->data;
|
||||
item = gtk_menu_item_new_with_label(playlist->pl_name);
|
||||
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item);
|
||||
g_signal_connect(item, "activate", G_CALLBACK(__view_rc_add_other), playlist);
|
||||
g_signal_connect(item, "activate",
|
||||
G_CALLBACK(__view_rc_add_other), playlist);
|
||||
iter = g_list_next(iter);
|
||||
}
|
||||
|
||||
return submenu;
|
||||
|
|
Loading…
Reference in New Issue