From d299bc464c37d40ddb605d7bb47702fe0980af66 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Thu, 15 Jan 2015 09:06:59 -0500 Subject: [PATCH] gui: Move ban and favorite buttons into playlist code These buttons directly change the playlists, so let's handle them there. Signed-off-by: Anna Schumaker --- gui/gui.cpp | 47 ----------------------------------------------- gui/main.cpp | 3 +++ gui/playlist.cpp | 39 +++++++++++++++++++++++++++++++++++++++ gui/tabs.cpp | 1 - 4 files changed, 42 insertions(+), 48 deletions(-) diff --git a/gui/gui.cpp b/gui/gui.cpp index f7c49536..daf0c8b9 100644 --- a/gui/gui.cpp +++ b/gui/gui.cpp @@ -11,8 +11,6 @@ #include #include -static sigc::connection fav_connection; -static sigc::connection ban_connection; Gtk::SpinButton *count; Gtk::CheckButton *enabled; @@ -31,24 +29,6 @@ static void on_config_pause_count() enabled->set_active(true); } -void on_track_loaded(Track *track) -{ - Gtk::ToggleButton *ban = lib :: get_widget("o_ban"); - Gtk::ToggleButton *fav = lib :: get_widget("o_favorite"); - - bool banned = playlist :: has(track, "Banned"); - bool favorite = playlist :: has(track, "Favorites"); - - ban_connection.block(); - fav_connection.block(); - if (ban->get_active() != banned) - ban->set_active(banned); - if (fav->get_active() != favorite) - fav->set_active(favorite); - ban_connection.unblock(); - fav_connection.unblock(); -} - void on_pause_count_changed(bool enabled, unsigned int count) { Gtk::CheckButton *p_enabled = lib :: get_widget("o_pause_enabled"); @@ -60,27 +40,6 @@ void on_pause_count_changed(bool enabled, unsigned int count) p_count->set_value(count); } -static void on_ban_toggled() -{ - Gtk::ToggleButton *ban = lib :: get_widget("o_ban"); - - if (ban->get_active() == true) { - playlist :: add(audio :: current_track(), "Banned"); - on_next(); - } else - playlist :: del(audio::current_track(), "Banned"); -} - -static void on_fav_toggled() -{ - Gtk::ToggleButton *fav = lib :: get_widget("o_favorite"); - - if (fav->get_active() == true) - playlist :: add(audio::current_track(), "Favorites"); - else - playlist :: del(audio::current_track(), "Favorites"); -} - /* @@ -102,12 +61,6 @@ Gtk::Window *setup_gui() /* Favorite and ban buttons */ - Gtk::ToggleButton *ban = lib :: get_widget("o_ban"); - Gtk::ToggleButton *fav = lib :: get_widget("o_favorite"); - - ban_connection = ban->signal_toggled().connect(sigc::ptr_fun(on_ban_toggled)); - fav_connection = fav->signal_toggled().connect(sigc::ptr_fun(on_fav_toggled)); - if (audio :: current_track()) on_track_loaded(audio :: current_track()); diff --git a/gui/main.cpp b/gui/main.cpp index 0e0f629a..4f456a68 100644 --- a/gui/main.cpp +++ b/gui/main.cpp @@ -10,7 +10,10 @@ Gtk::Window *ocarina_init(int *argc, char ***argv) { lib :: init(argc, argv, "ocarina6.glade"); + init_gst(argc, argv); + init_playlist_tab(); + core :: init(); Gtk::Window *window = setup_gui(); diff --git a/gui/playlist.cpp b/gui/playlist.cpp index 2b7cccdf..d861ea38 100644 --- a/gui/playlist.cpp +++ b/gui/playlist.cpp @@ -1,6 +1,7 @@ /* * Copyright 2014 (c) Anna Schumaker. */ +#include #include #include #include @@ -39,6 +40,9 @@ public: } }; +static Gtk::ToggleButton *o_ban; +static Gtk::ToggleButton *o_fav; + static PlaylistTab *p_tab; static Gtk::TreeView *p_treeview; @@ -67,6 +71,35 @@ static bool on_playlist_clicked(GdkEventButton *button) return true; } + +static void on_ban() +{ + Track *track = audio :: current_track(); + if (o_ban->get_active()) { + if (!playlist :: has(track, "Banned")) { + playlist :: add(track, "Banned"); + on_next(); + } + } else + playlist :: del(track, "Banned"); +} + +static void on_favorite() +{ + Track *track = audio :: current_track(); + if (o_fav->get_active()) + playlist :: add(track, "Favorites"); + else + playlist :: del(track, "Favorites"); +} + +void on_track_loaded(Track *track) +{ + o_ban->set_active(playlist :: has(track, "Banned")); + o_fav->set_active(playlist :: has(track, "Favorites")); +} + + void init_playlist_tab() { plist :: init(); @@ -76,4 +109,10 @@ void init_playlist_tab() p_treeview->signal_cursor_changed().connect(sigc::ptr_fun(on_playlist_cursor_changed)); p_treeview->signal_button_press_event().connect(sigc::ptr_fun(on_playlist_clicked)); p_treeview->set_cursor(Gtk::TreePath("0")); + + o_ban = lib :: get_widget("o_ban"); + o_fav = lib :: get_widget("o_favorite"); + + o_ban->signal_toggled().connect(sigc::ptr_fun(on_ban)); + o_fav->signal_toggled().connect(sigc::ptr_fun(on_favorite)); } diff --git a/gui/tabs.cpp b/gui/tabs.cpp index 43b54fd9..54911164 100644 --- a/gui/tabs.cpp +++ b/gui/tabs.cpp @@ -514,7 +514,6 @@ void init_tabs() /* Initialize other tabs */ init_collection_tab(); init_history_tab(); - init_playlist_tab(); init_queue_tabs(); }