ocarina/gui/tempq.c

52 lines
1.1 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)
{
return gui_queue_alloc(NULL, queue, "Queued Tracks", TEMPQ_FLAGS);
}
static void __tempq_deinit(struct queue *queue)
{
gui_queue_free(queue);
}
static void __tempq_added(struct queue *queue, unsigned int pos)
{
gui_queue_model_add(queue, pos);
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_model_remove(queue, pos);
tempq_save(queue, Q_ENABLED);
}
static void __tempq_cleared(struct queue *queue, unsigned int n)
{
gui_queue_model_clear(queue, n);
}
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_model_update,
};