gui/sidebar: Add a gui_sidebar_iter_playlist() function
It's frequently useful to get the playlist directly, rather than looking up type and name first. Let's add a function to do just that! Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
4d68ce8ce6
commit
846f7df9c1
|
@ -126,22 +126,15 @@ void __gui_sidebar_selection_changed(GtkTreeSelection *selection, gpointer data)
|
|||
GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter());
|
||||
bool active = false, sensitive = false;
|
||||
struct playlist *playlist = NULL;
|
||||
enum playlist_type_t type;
|
||||
GtkTreeIter iter, child;
|
||||
gchar *name;
|
||||
|
||||
if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||
|
||||
name = gui_sidebar_iter_name(&child);
|
||||
type = gui_sidebar_iter_type(&child);
|
||||
|
||||
playlist = playlist_get(type, name);
|
||||
active = playlist_get_random(type, name);
|
||||
sensitive = (type != PL_SYSTEM) ||
|
||||
!string_match(name, "History");
|
||||
|
||||
g_free(name);
|
||||
playlist = gui_sidebar_iter_playlist(&child);
|
||||
active = playlist_get_random(playlist->pl_type,
|
||||
playlist->pl_name);
|
||||
sensitive = (playlist != playlist_get(PL_SYSTEM, "History"));
|
||||
}
|
||||
|
||||
gui_treeview_set_playlist(playlist);
|
||||
|
@ -251,6 +244,16 @@ enum playlist_type_t gui_sidebar_iter_type(GtkTreeIter *iter)
|
|||
return type;
|
||||
}
|
||||
|
||||
struct playlist *gui_sidebar_iter_playlist(GtkTreeIter *iter)
|
||||
{
|
||||
enum playlist_type_t type = gui_sidebar_iter_type(iter);
|
||||
gchar *name = gui_sidebar_iter_name(iter);
|
||||
struct playlist *playlist = playlist_get(type, name);
|
||||
|
||||
g_free(name);
|
||||
return playlist;
|
||||
}
|
||||
|
||||
void gui_sidebar_iter_add(GtkTreeIter *iter, struct playlist *playlist,
|
||||
const gchar *image)
|
||||
{
|
||||
|
@ -291,17 +294,14 @@ void gui_sidebar_iter_append_child(GtkTreeIter *iter, struct playlist *playlist,
|
|||
|
||||
void gui_sidebar_iter_update(GtkTreeIter *iter)
|
||||
{
|
||||
enum playlist_type_t type = gui_sidebar_iter_type(iter);
|
||||
gchar *name, *text;
|
||||
struct playlist *playlist = gui_sidebar_iter_playlist(iter);
|
||||
gchar *text;
|
||||
|
||||
if (type >= PL_MAX_TYPE)
|
||||
if (!playlist)
|
||||
return;
|
||||
|
||||
name = gui_sidebar_iter_name(iter);
|
||||
text = __gui_sidebar_size_str(playlist_get(type, name));
|
||||
text = __gui_sidebar_size_str(playlist);
|
||||
gtk_tree_store_set(gui_sidebar_store(), iter, SB_NAME, text, -1);
|
||||
|
||||
g_free(name);
|
||||
g_free(text);
|
||||
}
|
||||
|
||||
|
|
|
@ -27,6 +27,9 @@ gchar *gui_sidebar_iter_name(GtkTreeIter *);
|
|||
/* Called to find the type of the playlist at the given iterator. */
|
||||
enum playlist_type_t gui_sidebar_iter_type(GtkTreeIter *);
|
||||
|
||||
/* Called to find the playlist at the given iterator. */
|
||||
struct playlist *gui_sidebar_iter_playlist(GtkTreeIter *);
|
||||
|
||||
/* Called to add a playlist at the current iterator. */
|
||||
void gui_sidebar_iter_add(GtkTreeIter *, struct playlist *, const gchar *);
|
||||
|
||||
|
|
|
@ -78,6 +78,8 @@ static void test_sidebar()
|
|||
g_assert_true(gui_sidebar_iter_find(&iter, "History", PL_SYSTEM));
|
||||
g_assert_cmpstr_free(gui_sidebar_iter_name(&iter), ==, "History");
|
||||
g_assert_cmpuint(gui_sidebar_iter_type(&iter), ==, PL_SYSTEM);
|
||||
g_assert(gui_sidebar_iter_playlist(&iter) ==
|
||||
playlist_get(PL_SYSTEM, "History"));
|
||||
|
||||
g_assert_true(gui_sidebar_iter_find(&iter, "Dynamic", PL_MAX_TYPE));
|
||||
g_assert_false(gui_sidebar_iter_down(&iter, &child));
|
||||
|
|
Loading…
Reference in New Issue