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 <Anna@OcarinaProject.net>
This commit is contained in:
Anna Schumaker 2015-01-15 09:06:59 -05:00
parent b940fe710c
commit d299bc464c
4 changed files with 42 additions and 48 deletions

View File

@ -11,8 +11,6 @@
#include <gui/ocarina.h> #include <gui/ocarina.h>
#include <gui/tabs.h> #include <gui/tabs.h>
static sigc::connection fav_connection;
static sigc::connection ban_connection;
Gtk::SpinButton *count; Gtk::SpinButton *count;
Gtk::CheckButton *enabled; Gtk::CheckButton *enabled;
@ -31,24 +29,6 @@ static void on_config_pause_count()
enabled->set_active(true); enabled->set_active(true);
} }
void on_track_loaded(Track *track)
{
Gtk::ToggleButton *ban = lib :: get_widget<Gtk::ToggleButton>("o_ban");
Gtk::ToggleButton *fav = lib :: get_widget<Gtk::ToggleButton>("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) void on_pause_count_changed(bool enabled, unsigned int count)
{ {
Gtk::CheckButton *p_enabled = lib :: get_widget<Gtk::CheckButton>("o_pause_enabled"); Gtk::CheckButton *p_enabled = lib :: get_widget<Gtk::CheckButton>("o_pause_enabled");
@ -60,27 +40,6 @@ void on_pause_count_changed(bool enabled, unsigned int count)
p_count->set_value(count); p_count->set_value(count);
} }
static void on_ban_toggled()
{
Gtk::ToggleButton *ban = lib :: get_widget<Gtk::ToggleButton>("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<Gtk::ToggleButton>("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 */ /* Favorite and ban buttons */
Gtk::ToggleButton *ban = lib :: get_widget<Gtk::ToggleButton>("o_ban");
Gtk::ToggleButton *fav = lib :: get_widget<Gtk::ToggleButton>("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()) if (audio :: current_track())
on_track_loaded(audio :: current_track()); on_track_loaded(audio :: current_track());

View File

@ -10,7 +10,10 @@
Gtk::Window *ocarina_init(int *argc, char ***argv) Gtk::Window *ocarina_init(int *argc, char ***argv)
{ {
lib :: init(argc, argv, "ocarina6.glade"); lib :: init(argc, argv, "ocarina6.glade");
init_gst(argc, argv); init_gst(argc, argv);
init_playlist_tab();
core :: init(); core :: init();
Gtk::Window *window = setup_gui(); Gtk::Window *window = setup_gui();

View File

@ -1,6 +1,7 @@
/* /*
* Copyright 2014 (c) Anna Schumaker. * Copyright 2014 (c) Anna Schumaker.
*/ */
#include <core/audio.h>
#include <core/playlist.h> #include <core/playlist.h>
#include <lib/plist.h> #include <lib/plist.h>
#include <gui/tabs.h> #include <gui/tabs.h>
@ -39,6 +40,9 @@ public:
} }
}; };
static Gtk::ToggleButton *o_ban;
static Gtk::ToggleButton *o_fav;
static PlaylistTab *p_tab; static PlaylistTab *p_tab;
static Gtk::TreeView *p_treeview; static Gtk::TreeView *p_treeview;
@ -67,6 +71,35 @@ static bool on_playlist_clicked(GdkEventButton *button)
return true; 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() void init_playlist_tab()
{ {
plist :: init(); 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_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->signal_button_press_event().connect(sigc::ptr_fun(on_playlist_clicked));
p_treeview->set_cursor(Gtk::TreePath("0")); p_treeview->set_cursor(Gtk::TreePath("0"));
o_ban = lib :: get_widget<Gtk::ToggleButton>("o_ban");
o_fav = lib :: get_widget<Gtk::ToggleButton>("o_favorite");
o_ban->signal_toggled().connect(sigc::ptr_fun(on_ban));
o_fav->signal_toggled().connect(sigc::ptr_fun(on_favorite));
} }

View File

@ -514,7 +514,6 @@ void init_tabs()
/* Initialize other tabs */ /* Initialize other tabs */
init_collection_tab(); init_collection_tab();
init_history_tab(); init_history_tab();
init_playlist_tab();
init_queue_tabs(); init_queue_tabs();
} }