From 8c3b1489bd6ceb7c2fa48d1467e57e3e73120c3f Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Fri, 17 Apr 2015 20:17:24 -0400 Subject: [PATCH] gui: Set up queue model and filter inside the QueueWindow This lets me move functions affecting the treeview into the QueueWindow class. Signed-off-by: Anna Schumaker --- gui/collection.cpp | 4 ++++ gui/history.cpp | 4 ++++ gui/playlist.cpp | 4 ++++ gui/queue.cpp | 3 +++ gui/queue/window.cpp | 8 ++++++++ gui/tabs.cpp | 3 --- include/gui/queue/window.h | 6 ++++++ include/gui/tabs.h | 6 +++--- 8 files changed, 32 insertions(+), 6 deletions(-) diff --git a/gui/collection.cpp b/gui/collection.cpp index d33ca3c9..5e302e60 100644 --- a/gui/collection.cpp +++ b/gui/collection.cpp @@ -29,7 +29,9 @@ public: builder->get_widget_derived("CollectionLabel", collection_label); builder->get_widget_derived("QueueToolbar", collection_toolbar); builder->get_widget_derived("QueueWindow", collection_window); + collection_toolbar->init(tab_pq, collection_label, collection_window, T_RANDOM); + collection_window->init(tab_pq); collection_vbox.set_margin_left(1); collection_vbox.set_margin_right(1); @@ -38,6 +40,8 @@ public: collection_vbox.pack_start(*collection_window, true, true); collection_vbox.show(); + tab_model = collection_window->q_model; + tab_filter = collection_window->q_filter; tab_search = collection_toolbar->q_search; tab_size = collection_label->collection_size; tab_treeview = collection_window->q_treeview; diff --git a/gui/history.cpp b/gui/history.cpp index 4e21993e..7a6734e9 100644 --- a/gui/history.cpp +++ b/gui/history.cpp @@ -28,7 +28,9 @@ public: builder->get_widget_derived("HistoryLabel", history_label); builder->get_widget_derived("QueueToolbar", history_toolbar); builder->get_widget_derived("QueueWindow", history_window); + history_toolbar->init(tab_pq, history_label, history_window, 0); + history_window->init(tab_pq); history_vbox.set_margin_left(1); history_vbox.set_margin_right(1); @@ -37,6 +39,8 @@ public: history_vbox.pack_start(*history_window, true, true); history_vbox.show(); + tab_model = history_window->q_model; + tab_filter = history_window->q_filter; tab_search = history_toolbar->q_search; tab_size = history_label->history_size; tab_treeview = history_window->q_treeview; diff --git a/gui/playlist.cpp b/gui/playlist.cpp index 44a32033..86751488 100644 --- a/gui/playlist.cpp +++ b/gui/playlist.cpp @@ -93,7 +93,9 @@ public: builder->get_widget_derived("PlaylistWindow", playlist_window); builder->get_widget_derived("QueueToolbar", playlist_toolbar); builder->get_widget_derived("QueueWindow", playlist_tracks); + playlist_toolbar->init(tab_pq, playlist_label, playlist_tracks, 0); + playlist_tracks->init(tab_pq); playlist_hbox.pack_start(*playlist_window, false, true); playlist_hbox.pack_start(*playlist_tracks, true, true); @@ -106,6 +108,8 @@ public: playlist_vbox.pack_start(playlist_hbox, true, true); playlist_vbox.show(); + tab_model = playlist_tracks->q_model; + tab_filter = playlist_tracks->q_filter; tab_search = playlist_toolbar->q_search; tab_treeview = playlist_tracks->q_treeview; tab_widget = &playlist_vbox; diff --git a/gui/queue.cpp b/gui/queue.cpp index 3580f58c..fab9e17c 100644 --- a/gui/queue.cpp +++ b/gui/queue.cpp @@ -104,6 +104,7 @@ QueueTab :: QueueTab(Queue *pq, unsigned int num) * And the treeview with scrolled window */ builder->get_widget_derived("QueueWindow", q_window); + q_window->init(pq); /* @@ -129,6 +130,8 @@ QueueTab :: QueueTab(Queue *pq, unsigned int num) * Set generic tab widgets */ + tab_model = q_window->q_model; + tab_filter = q_window->q_filter; tab_search = q_toolbar->q_search; tab_size = q_label->temp_size; tab_treeview = q_window->q_treeview; diff --git a/gui/queue/window.cpp b/gui/queue/window.cpp index dd875b4a..8211328e 100644 --- a/gui/queue/window.cpp +++ b/gui/queue/window.cpp @@ -13,3 +13,11 @@ QueueWindow :: QueueWindow(BaseObjectType *cobject, QueueWindow :: ~QueueWindow() { } + +void QueueWindow :: init(Queue *queue) +{ + _queue = queue; + q_model = Glib::RefPtr(new QueueModel(queue)); + q_filter = Gtk::TreeModelFilter::create(q_model); + q_treeview->set_model(q_filter); +} diff --git a/gui/tabs.cpp b/gui/tabs.cpp index 59f230f5..3a0c6a47 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -30,7 +30,6 @@ static sort_t sort_fields[] = { Tab :: Tab(Queue *pq) : tab_sorting_count(0), tab_pq(pq), tab_size(NULL) { - tab_model = Glib::RefPtr(new QueueModel(tab_pq)); pq->set_notifier(this); queue_mapping[tab_pq] = this; } @@ -39,7 +38,6 @@ Tab :: ~Tab() {} void Tab :: tab_finish_init() { - tab_filter = Gtk::TreeModelFilter::create(tab_model); tab_filter->set_visible_func(sigc::mem_fun(*this, &Tab::on_filter_visible)); tab_search->signal_key_release_event().connect(sigc::mem_fun(*this, @@ -47,7 +45,6 @@ void Tab :: tab_finish_init() tab_search->signal_search_changed().connect(sigc::mem_fun(*this, &Tab::on_entry_changed)); - tab_treeview->set_model(tab_filter); tab_treeview->signal_row_activated().connect(sigc::mem_fun(*this, &Tab :: on_row_activated)); tab_treeview->signal_key_press_event().connect(sigc::mem_fun(*this, diff --git a/include/gui/queue/window.h b/include/gui/queue/window.h index 17d84813..bfebe820 100644 --- a/include/gui/queue/window.h +++ b/include/gui/queue/window.h @@ -4,17 +4,23 @@ #ifndef OCARINA_GUI_QUEUE_WINDOW_H #define OCARINA_GUI_QUEUE_WINDOW_H +#include #include class QueueWindow : public Gtk::ScrolledWindow { private: Glib::RefPtr _builder; + Queue *_queue; public: Gtk::TreeView *q_treeview; + Glib::RefPtr q_model; + Glib::RefPtr q_filter; QueueWindow(BaseObjectType *, const Glib::RefPtr); ~QueueWindow(); + + void init(Queue *); }; #endif /* OCARINA_GUI_QUEUE_WINDOW_H */ diff --git a/include/gui/tabs.h b/include/gui/tabs.h index 426ac255..8a3a20e1 100644 --- a/include/gui/tabs.h +++ b/include/gui/tabs.h @@ -17,13 +17,13 @@ private: protected: Queue *tab_pq; - Glib::RefPtr tab_model; - Glib::RefPtr tab_filter; - /** * Widgets that MUST be set by a child class */ + Glib::RefPtr tab_model; + Glib::RefPtr tab_filter; + Gtk::SearchEntry *tab_search; Gtk::TreeView *tab_treeview; Gtk::Widget *tab_widget;