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. */
|
/* Add "Playlists" header and playlists. */
|
||||||
gui_sidebar_iter_find(&parent, "Playlists", PL_MAX_TYPE);
|
gui_sidebar_iter_find(&parent, "Playlists", PL_MAX_TYPE);
|
||||||
__playlist_add(&parent, "Favorites", "emblem-favorite", PL_SYSTEM);
|
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Favorites"),
|
||||||
__playlist_add(&parent, "Hidden", "window-close", PL_SYSTEM);
|
"emblem-favorite");
|
||||||
|
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Hidden"),
|
||||||
|
"window-close");
|
||||||
|
|
||||||
/* Add "Dynamic" header. */
|
/* Add "Dynamic" header. */
|
||||||
gui_sidebar_iter_find(&parent, "Dynamic", PL_MAX_TYPE);
|
gui_sidebar_iter_find(&parent, "Dynamic", PL_MAX_TYPE);
|
||||||
__playlist_add(&parent, "Most Played", "go-up", PL_SYSTEM);
|
gui_sidebar_iter_append_child(&parent, playlist_get(PL_SYSTEM, "Most Played"),
|
||||||
__playlist_add(&parent, "Least Played", "go-down", PL_SYSTEM);
|
"go-up");
|
||||||
__playlist_add(&parent, "Unplayed", "audio-x-generic", PL_SYSTEM);
|
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_selection_set_select_function(
|
||||||
gtk_tree_view_get_selection(treeview),
|
gtk_tree_view_get_selection(treeview),
|
||||||
|
|
|
@ -36,6 +36,15 @@ static void __gui_sidebar_set(GtkTreeIter *iter, const gchar *name,
|
||||||
SB_TYPE, type, -1);
|
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,
|
static void __gui_sidebar_add_header(GtkTreeIter *iter, const gchar *name,
|
||||||
const gchar *image)
|
const gchar *image)
|
||||||
{
|
{
|
||||||
|
@ -79,6 +88,11 @@ gboolean gui_sidebar_iter_next(GtkTreeIter *iter)
|
||||||
return gtk_tree_model_iter_next(gui_sidebar_model(), 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 *gui_sidebar_iter_name(GtkTreeIter *iter)
|
||||||
{
|
{
|
||||||
gchar *text = NULL, *parsed = NULL, *name, **split;
|
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,
|
void gui_sidebar_iter_add(GtkTreeIter *iter, struct playlist *playlist,
|
||||||
const gchar *image)
|
const gchar *image)
|
||||||
{
|
{
|
||||||
gchar *text = __gui_sidebar_size_str(playlist);
|
|
||||||
GtkTreeIter new;
|
GtkTreeIter new;
|
||||||
|
|
||||||
gtk_tree_store_insert_before(gui_sidebar_store(), &new, NULL, iter);
|
gtk_tree_store_insert_before(gui_sidebar_store(), &new, NULL, iter);
|
||||||
__gui_sidebar_set(&new, text, image, playlist->pl_type);
|
__gui_sidebar_set_playlist(&new, playlist, image);
|
||||||
g_free(text);
|
}
|
||||||
|
|
||||||
|
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,
|
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. */
|
/* Called to advance the iterator to the next playlist. */
|
||||||
gboolean gui_sidebar_iter_next(GtkTreeIter *);
|
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.
|
* 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().
|
* 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. */
|
/* Called to add a playlist at the current iterator. */
|
||||||
void gui_sidebar_iter_add(GtkTreeIter *, struct playlist *, const gchar *);
|
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,
|
* Called to find a playlist with the given name and type,
|
||||||
* starting from the current iterator position.
|
* starting from the current iterator position.
|
||||||
|
|
|
@ -15,7 +15,7 @@ struct core_init_data init_data;
|
||||||
|
|
||||||
static void test_sidebar()
|
static void test_sidebar()
|
||||||
{
|
{
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter, child;
|
||||||
unsigned int i;
|
unsigned int i;
|
||||||
|
|
||||||
g_assert_nonnull(gui_sidebar_store());
|
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_cmpstr_free(gui_sidebar_iter_name(&iter), ==, "Playlists");
|
||||||
g_assert_cmpuint(gui_sidebar_iter_type(&iter), ==, PL_MAX_TYPE);
|
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));
|
g_assert_false(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
||||||
gui_sidebar_iter_first(&iter);
|
gui_sidebar_iter_first(&iter);
|
||||||
g_assert_true(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
g_assert_true(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
||||||
|
|
Loading…
Reference in New Issue