60 lines
1.3 KiB
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)
|
|
{
|
|
struct gui_queue *gq;
|
|
|
|
gq = gui_queue_alloc(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,
|
|
};
|