gui/sidebar: Add a function for finding the current playlist
This seems like a useful function to have, and we already need it for deleting playlists. Let's make it a real function so we don't need to duplicate code. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
b4347d5a34
commit
21e1796b14
|
@ -117,15 +117,12 @@ static gboolean __gui_sidebar_can_select(GtkTreeSelection *selection,
|
|||
|
||||
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;
|
||||
GtkTreeIter iter, child;
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (gtk_tree_selection_get_selected(selection, &model, &iter)) {
|
||||
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||
|
||||
playlist = gui_sidebar_iter_playlist(&child);
|
||||
if (gui_sidebar_iter_current(&iter)) {
|
||||
playlist = gui_sidebar_iter_playlist(&iter);
|
||||
active = playlist->pl_random;
|
||||
sensitive = (playlist->pl_ops->pl_set_random != NULL);
|
||||
}
|
||||
|
@ -138,19 +135,15 @@ void __gui_sidebar_selection_changed(GtkTreeSelection *selection, gpointer data)
|
|||
bool __gui_sidebar_keypress(GtkTreeView *treeview, GdkEventKey *event,
|
||||
gpointer data)
|
||||
{
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
|
||||
struct playlist *playlist = gui_model_get_playlist();
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter());
|
||||
GtkTreeIter iter, child;
|
||||
GtkTreeIter iter;
|
||||
|
||||
if (!playlist || event->keyval != GDK_KEY_Delete)
|
||||
if (event->keyval != GDK_KEY_Delete)
|
||||
return false;
|
||||
if (!gtk_tree_selection_get_selected(selection, &model, &iter))
|
||||
if (!gui_sidebar_iter_current(&iter))
|
||||
return false;
|
||||
|
||||
__gui_sidebar_filter_iter_convert(&iter, &child);
|
||||
if (playlist_delete(playlist))
|
||||
gtk_tree_store_remove(gui_sidebar_store(), &child);
|
||||
if (playlist_delete(gui_model_get_playlist()))
|
||||
gtk_tree_store_remove(gui_sidebar_store(), &iter);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -216,6 +209,19 @@ void gui_sidebar_init()
|
|||
gtk_paned_set_position(gui_sidebar(), pos);
|
||||
}
|
||||
|
||||
gboolean gui_sidebar_iter_current(GtkTreeIter *iter)
|
||||
{
|
||||
GtkTreeView *treeview = gui_sidebar_treeview();
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
|
||||
GtkTreeModel *model = GTK_TREE_MODEL(gui_sidebar_filter());
|
||||
GtkTreeIter it;
|
||||
|
||||
if (!gtk_tree_selection_get_selected(selection, &model, &it))
|
||||
return false;
|
||||
__gui_sidebar_filter_iter_convert(&it, iter);
|
||||
return true;
|
||||
}
|
||||
|
||||
gboolean gui_sidebar_iter_first(GtkTreeIter *iter)
|
||||
{
|
||||
return gtk_tree_model_get_iter_first(gui_sidebar_model(), iter);
|
||||
|
|
|
@ -9,6 +9,9 @@
|
|||
/* Called to initialize the sidebar. */
|
||||
void gui_sidebar_init();
|
||||
|
||||
/* Called to set an iterator to the currently displayed playlist. */
|
||||
gboolean gui_sidebar_iter_current(GtkTreeIter *);
|
||||
|
||||
/* Called to set an iterator to the first playlist. */
|
||||
gboolean gui_sidebar_iter_first(GtkTreeIter *);
|
||||
|
||||
|
|
|
@ -102,9 +102,9 @@ static void test_sidebar_selection()
|
|||
struct playlist *collection;
|
||||
GtkTreeSelection *selection;
|
||||
GtkToggleButton *random;
|
||||
GtkTreeIter iter, cur;
|
||||
GtkTreeModel *filter;
|
||||
GtkTreePath *path;
|
||||
GtkTreeIter iter;
|
||||
unsigned int i, n;
|
||||
|
||||
collection = playlist_lookup(PL_SYSTEM, "Collection");
|
||||
|
@ -136,6 +136,10 @@ static void test_sidebar_selection()
|
|||
g_assert_true(gtk_widget_get_sensitive(
|
||||
GTK_WIDGET(random)));
|
||||
|
||||
g_assert_true(gui_sidebar_iter_current(&cur));
|
||||
g_assert_true(gui_sidebar_iter_playlist(&cur) ==
|
||||
collection);
|
||||
|
||||
gtk_toggle_button_set_active(random, false);
|
||||
g_assert_false(collection->pl_random);
|
||||
gtk_toggle_button_set_active(random, true);
|
||||
|
@ -143,6 +147,11 @@ static void test_sidebar_selection()
|
|||
} else if (i == 1) {
|
||||
g_assert(gui_model_get_playlist() ==
|
||||
playlist_lookup(PL_SYSTEM, "History"));
|
||||
|
||||
g_assert_true(gui_sidebar_iter_current(&cur));
|
||||
g_assert_true(gui_sidebar_iter_playlist(&cur) ==
|
||||
playlist_lookup(PL_SYSTEM, "History"));
|
||||
|
||||
g_assert_false(gtk_toggle_button_get_active(random));
|
||||
g_assert_false(gtk_widget_get_sensitive(
|
||||
GTK_WIDGET(random)));
|
||||
|
|
Loading…
Reference in New Issue