gui/sidebar: Add functions for appending child playlists
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
831a5379e5
commit
9885c60bff
|
@ -323,14 +323,19 @@ void gui_playlist_init()
|
|||
|
||||
/* Add "Playlists" header and playlists. */
|
||||
gui_sidebar_iter_find(&parent, "Playlists", PL_MAX_TYPE);
|
||||
__playlist_add(&parent, "Favorites", "emblem-favorite", PL_SYSTEM);
|
||||
__playlist_add(&parent, "Hidden", "window-close", PL_SYSTEM);
|
||||
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Favorites"),
|
||||
"emblem-favorite");
|
||||
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Hidden"),
|
||||
"window-close");
|
||||
|
||||
/* Add "Dynamic" header. */
|
||||
gui_sidebar_iter_find(&parent, "Dynamic", PL_MAX_TYPE);
|
||||
__playlist_add(&parent, "Most Played", "go-up", PL_SYSTEM);
|
||||
__playlist_add(&parent, "Least Played", "go-down", PL_SYSTEM);
|
||||
__playlist_add(&parent, "Unplayed", "audio-x-generic", PL_SYSTEM);
|
||||
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Most Played"),
|
||||
"go-up");
|
||||
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Least Played"),
|
||||
"go-down");
|
||||
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Unplayed"),
|
||||
"audio-x-generic");
|
||||
|
||||
gtk_tree_selection_set_select_function(
|
||||
gtk_tree_view_get_selection(treeview),
|
||||
|
|
|
@ -36,6 +36,15 @@ static void __gui_sidebar_set(GtkTreeIter *iter, const gchar *name,
|
|||
SB_TYPE, type, -1);
|
||||
}
|
||||
|
||||
static void __gui_sidebar_set_playlist(GtkTreeIter *iter,
|
||||
struct playlist *playlist,
|
||||
const gchar *image)
|
||||
{
|
||||
gchar *text = __gui_sidebar_size_str(playlist);
|
||||
__gui_sidebar_set(iter, text, image, playlist->pl_type);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
static void __gui_sidebar_add_header(GtkTreeIter *iter, const gchar *name,
|
||||
const gchar *image)
|
||||
{
|
||||
|
@ -79,6 +88,11 @@ gboolean gui_sidebar_iter_next(GtkTreeIter *iter)
|
|||
return gtk_tree_model_iter_next(gui_sidebar_model(), iter);
|
||||
}
|
||||
|
||||
gboolean gui_sidebar_iter_down(GtkTreeIter *iter, GtkTreeIter *child)
|
||||
{
|
||||
return gtk_tree_model_iter_children(gui_sidebar_model(), child, iter);
|
||||
}
|
||||
|
||||
gchar *gui_sidebar_iter_name(GtkTreeIter *iter)
|
||||
{
|
||||
gchar *text = NULL, *parsed = NULL, *name, **split;
|
||||
|
@ -110,12 +124,17 @@ enum playlist_type_t gui_sidebar_iter_type(GtkTreeIter *iter)
|
|||
void gui_sidebar_iter_add(GtkTreeIter *iter, struct playlist *playlist,
|
||||
const gchar *image)
|
||||
{
|
||||
gchar *text = __gui_sidebar_size_str(playlist);
|
||||
GtkTreeIter new;
|
||||
|
||||
gtk_tree_store_insert_before(gui_sidebar_store(), &new, NULL, iter);
|
||||
__gui_sidebar_set(&new, text, image, playlist->pl_type);
|
||||
g_free(text);
|
||||
__gui_sidebar_set_playlist(&new, playlist, image);
|
||||
}
|
||||
|
||||
void gui_sidebar_iter_append_child(GtkTreeIter *iter, struct playlist *playlist,
|
||||
const gchar *image)
|
||||
{
|
||||
GtkTreeIter new;
|
||||
gtk_tree_store_insert_before(gui_sidebar_store(), &new, iter, NULL);
|
||||
__gui_sidebar_set_playlist(&new, playlist, image);
|
||||
}
|
||||
|
||||
gboolean gui_sidebar_iter_find(GtkTreeIter *iter, const gchar *name,
|
||||
|
|
|
@ -15,6 +15,9 @@ gboolean gui_sidebar_iter_first(GtkTreeIter *);
|
|||
/* Called to advance the iterator to the next playlist. */
|
||||
gboolean gui_sidebar_iter_next(GtkTreeIter *);
|
||||
|
||||
/* Called to set an iterator to the first child of the parent iterator. */
|
||||
gboolean gui_sidebar_iter_down(GtkTreeIter *, GtkTreeIter *);
|
||||
|
||||
/*
|
||||
* Called to find the name of the playlist at the given iterator.
|
||||
* NOTE: This function returns a new string that must be freed with g_free().
|
||||
|
@ -27,6 +30,10 @@ enum playlist_type_t gui_sidebar_iter_type(GtkTreeIter *);
|
|||
/* Called to add a playlist at the current iterator. */
|
||||
void gui_sidebar_iter_add(GtkTreeIter *, struct playlist *, const gchar *);
|
||||
|
||||
/* Called to append a child playlist to the current iterator. */
|
||||
void gui_sidebar_iter_append_child(GtkTreeIter *, struct playlist *,
|
||||
const gchar *);
|
||||
|
||||
/*
|
||||
* Called to find a playlist with the given name and type,
|
||||
* starting from the current iterator position.
|
||||
|
|
|
@ -15,7 +15,7 @@ struct core_init_data init_data;
|
|||
|
||||
static void test_sidebar()
|
||||
{
|
||||
GtkTreeIter iter;
|
||||
GtkTreeIter iter, child;
|
||||
unsigned int i;
|
||||
|
||||
g_assert_nonnull(gui_sidebar_store());
|
||||
|
@ -51,6 +51,20 @@ static void test_sidebar()
|
|||
g_assert_cmpstr_free(gui_sidebar_iter_name(&iter), ==, "Playlists");
|
||||
g_assert_cmpuint(gui_sidebar_iter_type(&iter), ==, PL_MAX_TYPE);
|
||||
|
||||
g_assert_false(gui_sidebar_iter_down(&iter, &child));
|
||||
gui_sidebar_iter_append_child(&iter, playlist_get(PL_SYSTEM, "Favorites"),
|
||||
NULL);
|
||||
gui_sidebar_iter_append_child(&iter, playlist_get(PL_SYSTEM, "Hidden"),
|
||||
NULL);
|
||||
g_assert_true(gui_sidebar_iter_down(&iter, &child));
|
||||
|
||||
for (i = 0; i < 2; i++) {
|
||||
g_assert_cmpstr_free(gui_sidebar_iter_name(&child), ==,
|
||||
(i == 0) ? "Favorites" : "Hidden");
|
||||
g_assert_cmpuint(gui_sidebar_iter_type(&child), ==, PL_SYSTEM);
|
||||
gui_sidebar_iter_next(&child);
|
||||
}
|
||||
|
||||
g_assert_false(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
||||
gui_sidebar_iter_first(&iter);
|
||||
g_assert_true(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
||||
|
|
Loading…
Reference in New Issue