gui/treeview: Add a function for listing selected tracks
This will be used by higher layers to add tracks to playlists. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
155b9c3ee6
commit
e7d2fa5c4d
|
@ -217,3 +217,22 @@ void gui_treeview_scroll()
|
||||||
gtk_tree_view_scroll_to_cell(gui_treeview(), path, NULL, true, 0.5, 0.5);
|
gtk_tree_view_scroll_to_cell(gui_treeview(), path, NULL, true, 0.5, 0.5);
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GList *gui_treeview_list_selected_tracks(void)
|
||||||
|
{
|
||||||
|
GList *rows, *cur, *list = NULL;
|
||||||
|
GtkTreeSelection *selection;
|
||||||
|
|
||||||
|
selection = gtk_tree_view_get_selection(gui_treeview());
|
||||||
|
rows = gtk_tree_selection_get_selected_rows(selection, NULL);
|
||||||
|
cur = g_list_first(rows);
|
||||||
|
|
||||||
|
while (cur) {
|
||||||
|
list = g_list_append(list, gui_filter_path_get_track(cur->data));
|
||||||
|
cur = g_list_next(cur);
|
||||||
|
}
|
||||||
|
|
||||||
|
g_list_free_full(rows, (GDestroyNotify) gtk_tree_path_free);
|
||||||
|
gtk_tree_selection_unselect_all(selection);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
|
|
@ -17,6 +17,12 @@ void gui_treeview_set_playlist(struct playlist *);
|
||||||
/* Called to scroll the treeview to the current track. */
|
/* Called to scroll the treeview to the current track. */
|
||||||
void gui_treeview_scroll();
|
void gui_treeview_scroll();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Called to get a list of selected tracks.
|
||||||
|
* NOTE: The caller is responsible for freeing the list with g_list_free().
|
||||||
|
*/
|
||||||
|
GList *gui_treeview_list_selected_tracks(void);
|
||||||
|
|
||||||
/* Called to access the treeview widget. */
|
/* Called to access the treeview widget. */
|
||||||
static inline GtkTreeView *gui_treeview()
|
static inline GtkTreeView *gui_treeview()
|
||||||
{
|
{
|
||||||
|
|
|
@ -76,7 +76,13 @@ void test_treeview_init()
|
||||||
|
|
||||||
void test_treeview_select()
|
void test_treeview_select()
|
||||||
{
|
{
|
||||||
|
GtkTreeSelection *selection;
|
||||||
|
struct track *track;
|
||||||
GtkTreePath *path;
|
GtkTreePath *path;
|
||||||
|
GList *list;
|
||||||
|
unsigned int i;
|
||||||
|
|
||||||
|
selection = gtk_tree_view_get_selection(gui_treeview());
|
||||||
|
|
||||||
gui_treeview_set_playlist(playlist_get(PL_SYSTEM, "Collection"));
|
gui_treeview_set_playlist(playlist_get(PL_SYSTEM, "Collection"));
|
||||||
g_assert(gui_model_get_playlist() ==
|
g_assert(gui_model_get_playlist() ==
|
||||||
|
@ -88,6 +94,20 @@ void test_treeview_select()
|
||||||
gtk_tree_view_row_activated(gui_treeview(), path, NULL);
|
gtk_tree_view_row_activated(gui_treeview(), path, NULL);
|
||||||
g_assert_cmpuint(audio_cur_track()->tr_track, ==, 2);
|
g_assert_cmpuint(audio_cur_track()->tr_track, ==, 2);
|
||||||
gtk_tree_path_free(path);
|
gtk_tree_path_free(path);
|
||||||
|
|
||||||
|
gtk_tree_selection_unselect_all(selection);
|
||||||
|
g_assert_null(gui_treeview_list_selected_tracks());
|
||||||
|
|
||||||
|
gtk_tree_selection_select_all(selection);
|
||||||
|
list = gui_treeview_list_selected_tracks();
|
||||||
|
g_assert_cmpuint(g_list_length(list), ==, 13);
|
||||||
|
for (i = 0; i < 13; i++) {
|
||||||
|
track = (struct track *)g_list_nth_data(list, i);
|
||||||
|
g_assert_nonnull(track);
|
||||||
|
g_assert_cmpuint(track->tr_track, ==, i + 1);
|
||||||
|
}
|
||||||
|
g_list_free(list);
|
||||||
|
g_assert_cmpuint(gtk_tree_selection_count_selected_rows(selection), ==, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_treeview_sort()
|
void test_treeview_sort()
|
||||||
|
|
Loading…
Reference in New Issue