60 lines
1.3 KiB
C++
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();
|
|
}
|
|
|
|
};
|