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);
|
&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)
|
static GtkWidget *__view_rc_build_submenu(void)
|
||||||
{
|
{
|
||||||
struct db_entry *dbe, *next;
|
struct db_entry *dbe, *next;
|
||||||
struct playlist *playlist;
|
struct playlist *playlist;
|
||||||
GtkWidget *submenu, *item;
|
GtkWidget *submenu, *item;
|
||||||
|
GList *iter, *list = NULL;
|
||||||
|
|
||||||
if (pl_user_db_get()->db_size == 0)
|
if (pl_user_db_get()->db_size == 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
submenu = gtk_menu_new();
|
|
||||||
db_for_each(dbe, next, pl_user_db_get()) {
|
db_for_each(dbe, next, pl_user_db_get()) {
|
||||||
playlist = &USER_PLAYLIST(dbe)->pl_playlist;
|
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);
|
item = gtk_menu_item_new_with_label(playlist->pl_name);
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(submenu), item);
|
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;
|
return submenu;
|
||||||
|
|
Loading…
Reference in New Issue