ocarina: Add songs to currently created playlists

Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
Bryan Schumaker 2012-09-03 09:24:18 -04:00
parent 992539798b
commit df79e67f12
2 changed files with 31 additions and 4 deletions

View File

@ -1,6 +1,7 @@
// Copyright (c) 2012 Bryan Schumaker
#include <libsaria/track.h>
#include <ocarina/ocarina.h>
#include <stdlib.h>
static GType types[] = {
G_TYPE_POINTER, // libsaria::Track *
@ -141,12 +142,17 @@ static void selected_foreach_list(GtkTreeModel *model, GtkTreePath *path,
tracks->push_back(track);
}
static void list_selected_tracks(GtkTreeView *treeview, list<libsaria::Track *> *tracks)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
gtk_tree_selection_selected_foreach(selection, selected_foreach_list, tracks);
}
static void new_playlist(string &key, GtkTreeView *treeview, bool front)
{
list<libsaria::Track *> tracks;
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
gtk_tree_selection_selected_foreach(selection, selected_foreach_list, &tracks);
list_selected_tracks(treeview, &tracks);
if (tracks.size() == 0)
return;
@ -156,6 +162,20 @@ static void new_playlist(string &key, GtkTreeView *treeview, bool front)
libsaria::deck::new_playlist(tracks, PLIST_QUEUE, front);
}
static void add_to_playlist(GtkTreeView *treeview, int n)
{
list<libsaria::Track *> tracks;
libsaria::Playlist *playlist;
list_selected_tracks(treeview, &tracks);
if (tracks.size() == 0)
return;
playlist = libsaria::deck::get_playlist(n);
if (playlist)
playlist->add_tracks(tracks);
}
static void on_escape_key(GtkTreeView *treeview)
{
GtkTreeSelection *selection = gtk_tree_view_get_selection(treeview);
@ -166,10 +186,15 @@ static gboolean key_pressed(GtkTreeView *treeview, GdkEvent *event, gpointer dat
{
string key = gdk_keyval_name(event->key.keyval);
if (key.substr(0, 3) == "KP_")
key = key.substr(3);
if (key == "s" || key == "q")
new_playlist(key, treeview, false);
else if (key == "S" || key == "Q")
new_playlist(key, treeview, true);
else if (key >= "0" && key <= "9")
add_to_playlist(treeview, atoi(key.c_str()));
else if (key == "Escape")
on_escape_key(treeview);
else

View File

@ -69,9 +69,11 @@ static gboolean key_pressed(GtkWidget *widget, GdkEvent *event, gpointer data)
*/
if (key == "b" || key == "l" || key == "r")
playlist_switch_to(key);
else if (key >= "0" && key <= "9")
else if (key >= "0" && key <= "9") {
if (playlist_treeview_focused())
return FALSE;
playlist_switch_to_n(atoi(key.c_str()));
else if (key == "n")
} else if (key == "n")
libsaria::deck::next();
else if (key == "N")
libsaria::deck::prev();