ocarina/gui/tempq.c

60 lines
1.3 KiB
C

/*
* Copyright 2016 (c) Anna Schumaker.
*/
#include <core/tempq.h>
#include <gui/queue.h>
#include <gui/sidebar.h>
#define TEMPQ_FLAGS (GQ_CAN_RANDOM | GQ_CAN_REPEAT | GQ_CAN_DISABLE)
static void *__tempq_init(struct queue *queue, void *data)
{
struct gui_queue *gq;
gq = gui_queue_alloc(NULL, queue, "Queued Tracks", TEMPQ_FLAGS);
gui_sidebar_add(gq);
return gq;
}
static void __tempq_deinit(struct queue *queue)
{
gui_sidebar_remove(gui_queue(queue));
gui_queue_free(queue);
}
static void __tempq_added(struct queue *queue, unsigned int pos)
{
gui_queue_added(queue, pos);
gui_sidebar_set_size(gui_queue(queue));
tempq_save(queue, Q_ENABLED);
}
static bool __tempq_erase(struct queue *queue, struct track *track)
{
return true;
}
static void __tempq_removed(struct queue *queue, unsigned int pos)
{
gui_queue_removed(queue, pos);
gui_sidebar_set_size(gui_queue(queue));
tempq_save(queue, Q_ENABLED);
}
static void __tempq_cleared(struct queue *queue, unsigned int n)
{
gui_queue_cleared(queue, n);
gui_sidebar_set_size(gui_queue(queue));
}
struct queue_ops tempq_ops = {
.qop_init = __tempq_init,
.qop_deinit = __tempq_deinit,
.qop_added = __tempq_added,
.qop_erase = __tempq_erase,
.qop_removed = __tempq_removed,
.qop_cleared = __tempq_cleared,
.qop_save = tempq_save,
.qop_updated = gui_queue_updated,
};