/* * Copyright 2016 (c) Anna Schumaker. */ #include #include #include #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, };