ocarina/ocarina/queue.cpp
Bryan Schumaker d4ac6a870f ocarina: Remove from queue keybinding
Select some tracks and press delete.
2011-12-30 23:32:07 -05:00

60 lines
1.3 KiB
C++

#include <ocarina/queue.h>
#include <ocarina/body.h>
#include <ocarina/gtk.h>
#include <ocarina/songlist.h>
#include <ocarina/shortcut.h>
#include <libsaria/queue.h>
#include <list>
using namespace std;
static SongList queue_list;
static struct SongListFuncs queue_funcs;
static list <MenuItem> queue_menu;
unsigned int queue_index;
static void rm_from_queue()
{
list<sid_t> selected;
queue_list.list_selected_ids(selected);
libsaria::queue::rm_ids(selected);
}
static void rm_from_queue_event(GtkMenuItem *menu, gpointer data)
{
rm_from_queue();
}
namespace ocarina
{
void queue::refresh()
{
queue_list.clear();
if (libsaria::queue::size() > 0) {
queue_list.fill();
show_page(queue_index);
} else
hide_page(queue_index);
}
void queue::init()
{
queue_menu.push_back(MenuItem("Remove from Queue", rm_from_queue_event));
queue_funcs.size = libsaria::queue::size;
queue_funcs.iter_reset = libsaria::queue::iter::reset;
queue_funcs.iter_next = libsaria::queue::iter::next;
queue_funcs.iter_end = libsaria::queue::iter::end;
register_shortcut("Delete", rm_from_queue);
queue_list.init("Queue", &queue_funcs, &queue_menu, false);
queue_index = add_page(queue_list.get_label(),
queue_list.get_window(), true);
ocarina::queue::refresh();
}
};