From bbf111ecb033b19fcd028c4670a0c3bb6a62c38d Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 21 Jan 2016 15:18:37 -0500 Subject: [PATCH] gui/view: Add gui_view_set_model() To set the currently displayed treemodel Signed-off-by: Anna Schumaker --- gui/queue.c | 7 ++++--- gui/view.c | 6 ++++++ include/gui/view.h | 3 +++ tests/gui/collection.c | 2 ++ tests/gui/queue.c | 2 ++ tests/gui/view.c | 17 +++++++++++++++++ tests/gui/window.c | 2 ++ 7 files changed, 36 insertions(+), 3 deletions(-) diff --git a/gui/queue.c b/gui/queue.c index b02a0e07..19b1fbc4 100644 --- a/gui/queue.c +++ b/gui/queue.c @@ -6,6 +6,7 @@ #include #include #include +#include static struct gui_queue *gq_queue = NULL; @@ -94,13 +95,13 @@ struct gui_queue *gui_queue_alloc(struct queue *queue, const gchar *text, void gui_queue_free(struct queue *queue) { - GtkTreeView *treeview = GTK_TREE_VIEW(gui_builder_widget("o_treeview")); struct gui_queue *gq = gui_queue(queue); - gtk_tree_view_set_model(treeview, NULL); set_deinit(&gq->gq_visible); queue->q_private = NULL; + if (gq_queue == gq) + gui_view_set_model(NULL); g_object_unref(gq->gq_model); g_free(gq->gq_text); g_free(gq); @@ -125,7 +126,7 @@ void gui_queue_show(struct gui_queue *queue) has_random = queue_has_flag(queue->gq_queue, Q_RANDOM); has_repeat = queue_has_flag(queue->gq_queue, Q_REPEAT); is_enabled = queue_has_flag(queue->gq_queue, Q_ENABLED); - gtk_tree_view_set_model(view, queue->gq_filter); + gui_view_set_model(GTK_TREE_MODEL_FILTER(queue->gq_filter)); } gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(random), has_random); diff --git a/gui/view.c b/gui/view.c index 33b496c7..32764984 100644 --- a/gui/view.c +++ b/gui/view.c @@ -5,6 +5,7 @@ #include #include #include +#include static const gchar *QUEUE_SETTINGS[Q_MODEL_N_COLUMNS] = { [Q_MODEL_TRACK_NR] = "gui.queue.track", @@ -49,3 +50,8 @@ void gui_view_init() gtk_tree_view_column_set_fixed_width(col, pos); } } + +void gui_view_set_model(GtkTreeModelFilter *filter) +{ + gtk_tree_view_set_model(view_treeview, GTK_TREE_MODEL(filter)); +} diff --git a/include/gui/view.h b/include/gui/view.h index 1fa8a807..30d3543c 100644 --- a/include/gui/view.h +++ b/include/gui/view.h @@ -7,4 +7,7 @@ /* Called to initialize structures needed by the treeview. */ void gui_view_init(); +/* Called to set the currently displayed model. */ +void gui_view_set_model(GtkTreeModelFilter *); + #endif /* OCARINA_GUI_VIEW_H */ diff --git a/tests/gui/collection.c b/tests/gui/collection.c index 5f6d79dd..a735d09f 100644 --- a/tests/gui/collection.c +++ b/tests/gui/collection.c @@ -6,6 +6,7 @@ #include #include #include +#include #include #include @@ -36,6 +37,7 @@ static void test_collection_sidebar() gtk_init(&argc, NULL); gui_builder_init("share/ocarina/ocarina6.glade"); core_init(&argc, NULL, &init_data); + gui_view_init(); gui_collection_init(); main_loop = g_main_loop_new(NULL, FALSE); diff --git a/tests/gui/queue.c b/tests/gui/queue.c index 916b1984..fe506749 100644 --- a/tests/gui/queue.c +++ b/tests/gui/queue.c @@ -11,6 +11,7 @@ #include #include #include +#include #include #include @@ -49,6 +50,7 @@ static void test_queue() gtk_init(&argc, NULL); gui_builder_init("share/ocarina/ocarina6.glade"); + gui_view_init(); search = GTK_ENTRY(gui_builder_widget("o_search")); enable = GTK_SWITCH(gui_builder_widget("o_enable")); random = GTK_TOGGLE_BUTTON(gui_builder_widget("o_random")); diff --git a/tests/gui/view.c b/tests/gui/view.c index 61050f17..04ebfc88 100644 --- a/tests/gui/view.c +++ b/tests/gui/view.c @@ -7,6 +7,9 @@ #define TEST_NEED_QUEUE #define TEST_NEED_SIDEBAR #define TEST_NEED_WINDOW +#include +#include +#include #include #include #include @@ -28,6 +31,7 @@ const gchar *QUEUE_SETTINGS[Q_MODEL_N_COLUMNS] = { }; GMainLoop *main_loop; +struct core_init_data init_data; static int test_on_idle(gpointer data) { @@ -37,16 +41,23 @@ static int test_on_idle(gpointer data) static void test_treeview() { + GtkTreeModel *model, *filter; GtkTreeViewColumn *col; GtkTreeView *treeview; unsigned int i; int argc = 0; gtk_init(&argc, NULL); + core_init(&argc, NULL, &init_data); gui_builder_init("share/ocarina/ocarina6.glade"); gui_settings_init(); gui_view_init(); + collection_add("tests/Music/Hyrule Symphony"); + while (idle_run_task() == true) {} + model = GTK_TREE_MODEL(gui_queue_model_new(collection_get_queue())); + filter = gtk_tree_model_filter_new(model, NULL); + treeview = GTK_TREE_VIEW(gui_builder_widget("o_treeview")); main_loop = g_main_loop_new(NULL, FALSE); g_idle_add(test_on_idle, NULL); @@ -81,6 +92,12 @@ static void test_treeview() col = gtk_tree_view_get_column(treeview, i); test_loop_equal(gtk_tree_view_column_get_fixed_width(col), 42, i); } test_loop_passed(); + + gui_view_set_model(GTK_TREE_MODEL_FILTER(filter)); + test_equal((void *)gtk_tree_view_get_model(treeview), (void *)filter); + + gui_view_set_model(NULL); + test_equal((void *)gtk_tree_view_get_model(treeview), NULL); } DECLARE_UNIT_TESTS( diff --git a/tests/gui/window.c b/tests/gui/window.c index 30b1deca..6394cfde 100644 --- a/tests/gui/window.c +++ b/tests/gui/window.c @@ -7,6 +7,7 @@ #define TEST_NEED_PLAYLIST #include #include +#include #include #include #include @@ -27,6 +28,7 @@ static void test_window() gtk_init(&argc, NULL); gui_builder_init("share/ocarina/ocarina6.glade"); gui_settings_init(); + gui_view_init(); gui_window_init("share/ocarina/ocarina.png"); main_loop = g_main_loop_new(NULL, FALSE);