gui/model: Add support for changing the represented queue

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-08-01 16:45:46 -04:00
parent 53285534b9
commit a9aa3c297d
3 changed files with 31 additions and 1 deletions

View File

@ -299,6 +299,19 @@ void gui_queue_model_update(GuiQueueModel *model, unsigned int row)
gtk_tree_path_free(path);
}
void gui_queue_model_set_queue(GuiQueueModel *model, struct queue *queue)
{
struct queue *cur = model->gqm_queue;
if (cur)
gui_queue_model_clear(model, queue_size(cur));
model->gqm_queue = queue;
if (queue && queue_size(queue) > 0)
gui_queue_model_add(model, 0);
}
struct track * gui_queue_model_path_get_track(GuiQueueModel *model,
GtkTreePath *path)
{

View File

@ -60,6 +60,9 @@ void gui_queue_model_clear(GuiQueueModel *, unsigned int);
/* Called to update a row in the model */
void gui_queue_model_update(GuiQueueModel *, unsigned int);
/* Called to change the queue represented by the model. */
void gui_queue_model_set_queue(GuiQueueModel *, struct queue *);
/* Called to convert a GtkTreeIter into a struct track */
static inline
struct track *gui_queue_model_iter_get_track(GuiQueueModel *model,

View File

@ -185,6 +185,10 @@ static void test_model()
test_equal(count_insert, 13);
queue_resort(playlist_get_queue(PL_SYSTEM, "Collection"));
test_equal(count_update, 13);
playlist_add(PL_SYSTEM, "Favorites", track_get(0));
playlist_add(PL_SYSTEM, "Favorites", track_get(1));
playlist_add(PL_SYSTEM, "Favorites", track_get(2));
test_equal(playlist_size(PL_SYSTEM, "Favorites"), 3);
/* ... and test again */
test_equal(gtk_tree_model_get_iter_first(model, &iter), true);
@ -249,6 +253,16 @@ static void test_model()
test_equal(gtk_tree_model_iter_n_children(model, &iter), 0);
test_equal(gtk_tree_model_iter_n_children(model, NULL), 13);
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
playlist_get_queue(PL_SYSTEM, "Favorites"));
test_equal(count_delete, 13);
test_equal(count_insert, 14);
test_equal(gtk_tree_model_iter_n_children(model, NULL), 3);
gui_queue_model_set_queue(GUI_QUEUE_MODEL(model),
playlist_get_queue(PL_SYSTEM, "Collection"));
test_equal(count_delete, 16);
test_equal(count_insert, 15);
test_equal(gtk_tree_model_iter_nth_child(model, &iter, NULL, 3), true);
track = gui_queue_model_iter_get_track(GUI_QUEUE_MODEL(model), &iter);
test_equal(track->tr_track, 4);
@ -257,7 +271,7 @@ static void test_model()
db_for_each(dbe, next, track_db_get())
playlist_remove(PL_SYSTEM, "Collection", TRACK(dbe));
test_equal(count_delete, 13);
test_equal(count_delete, 29);
core_deinit();
g_object_unref(model);