ocarina: Add songs to currently created playlists
Signed-off-by: Bryan Schumaker <bjschuma@gmail.com>
This commit is contained in:
parent
992539798b
commit
df79e67f12
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue