diff --git a/gui/playlist.c b/gui/playlist.c
index caed9572..20dd7824 100644
--- a/gui/playlist.c
+++ b/gui/playlist.c
@@ -10,7 +10,22 @@ enum playlist_sidebar_columns {
P_SB_NAME,
};
-static GtkTreeModel *p_model;
+static GtkTreeStore *p_store;
+
+static void __playlist_set(GtkTreeIter *iter, const gchar *name,
+ const gchar *image, GtkIconSize size)
+{
+ gtk_tree_store_set(p_store, iter, P_SB_NAME, name, P_SB_IMAGE, image,
+ P_SB_IMAGE_SZ, size, -1);
+}
+
+static void __playlist_add(GtkTreeIter *parent, const gchar *name,
+ const gchar *image)
+{
+ GtkTreeIter iter;
+ gtk_tree_store_insert(p_store, &iter, parent, -1);
+ __playlist_set(&iter, name, image, GTK_ICON_SIZE_MENU);
+}
static gboolean __playlist_select(GtkTreeSelection *selection,
GtkTreeModel *model, GtkTreePath *path,
@@ -22,20 +37,27 @@ static gboolean __playlist_select(GtkTreeSelection *selection,
void gui_playlist_init()
{
GtkTreeView *treeview;
- GtkTreeIter iter;
+ GtkTreeIter parent;
- p_model = GTK_TREE_MODEL(gui_builder_object("o_playlist_store"));
+ p_store = GTK_TREE_STORE(gui_builder_object("o_playlist_store"));
/* Add "Playlist" header. */
- gtk_tree_store_insert(GTK_TREE_STORE(p_model), &iter, NULL, -1);
- gtk_tree_store_set(GTK_TREE_STORE(p_model), &iter,
- P_SB_IMAGE, "emblem-documents",
- P_SB_IMAGE_SZ, GTK_ICON_SIZE_LARGE_TOOLBAR,
- P_SB_NAME, "Playlists",
- -1);
+ gtk_tree_store_insert(p_store, &parent, NULL, -1);
+ __playlist_set(&parent, "Playlists",
+ "emblem-documents", GTK_ICON_SIZE_LARGE_TOOLBAR);
+
+ /* Add playlists. */
+ __playlist_add(&parent, "Favorites", "emblem-favorite");
+ __playlist_add(&parent, "Banned", "face-sad");
+ __playlist_add(&parent, "Most Played", "go-up");
+ __playlist_add(&parent, "Least Played", "go-down");
+ __playlist_add(&parent, "Unplayed", "audio-x-generic");
treeview = GTK_TREE_VIEW(gui_builder_widget("o_playlist_view"));
+ gtk_tree_view_expand_all(treeview);
gtk_tree_selection_set_select_function(
gtk_tree_view_get_selection(treeview),
__playlist_select, NULL, NULL);
+
+ gtk_tree_store_insert(p_store, &parent, NULL, -1);
}
diff --git a/tests/gui/playlist.c b/tests/gui/playlist.c
index 4d4f949d..62df06a9 100644
--- a/tests/gui/playlist.c
+++ b/tests/gui/playlist.c
@@ -28,9 +28,10 @@ static void test_playlist_sidebar()
path = gtk_tree_model_get_path(model, &iter);
gtk_tree_view_set_cursor(treeview, path, NULL, false);
gtk_tree_path_free(path);
-
test_equal(gtk_tree_selection_count_selected_rows(selection), 0);
+ test_equal(gtk_tree_model_iter_n_children(model, &iter), 5);
+
gui_builder_deinit();
}