gui/queue: Respond to toggling the random and repeat buttons
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
ddbc040a3b
commit
24f53d88b6
35
gui/queue.c
35
gui/queue.c
|
@ -4,6 +4,39 @@
|
|||
#include <gui/builder.h>
|
||||
#include <gui/queue.h>
|
||||
|
||||
static struct gui_queue *gq_queue = NULL;
|
||||
|
||||
static void __queue_toggle_button(GtkToggleButton *button,
|
||||
enum queue_flags flag)
|
||||
{
|
||||
GtkWidget *image = gtk_button_get_image(GTK_BUTTON(button));
|
||||
|
||||
if (gq_queue == NULL)
|
||||
return;
|
||||
|
||||
/*
|
||||
* Some GTK themes have trouble with toggle buttons,
|
||||
* so let's help users by changing image sensitivity.
|
||||
*/
|
||||
if (gtk_toggle_button_get_active(button)) {
|
||||
queue_set_flag(gq_queue->gq_queue, flag);
|
||||
gtk_widget_set_sensitive(image, true);
|
||||
} else {
|
||||
queue_unset_flag(gq_queue->gq_queue, flag);
|
||||
gtk_widget_set_sensitive(image, false);
|
||||
}
|
||||
}
|
||||
|
||||
void __queue_random(GtkToggleButton *button, gpointer data)
|
||||
{
|
||||
__queue_toggle_button(button, Q_RANDOM);
|
||||
}
|
||||
|
||||
void __queue_repeat(GtkToggleButton *button, gpointer data)
|
||||
{
|
||||
__queue_toggle_button(button, Q_REPEAT);
|
||||
}
|
||||
|
||||
struct gui_queue *gui_queue_alloc(struct queue *queue, const gchar *text,
|
||||
unsigned int flags)
|
||||
{
|
||||
|
@ -32,6 +65,8 @@ void gui_queue_show(struct gui_queue *queue)
|
|||
GtkButton *repeat = GTK_BUTTON(gui_builder_widget("o_repeat"));
|
||||
bool has_random = false, has_repeat = false;
|
||||
|
||||
gq_queue = queue;
|
||||
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(random), gui_queue_can_random(queue));
|
||||
gtk_widget_set_sensitive(GTK_WIDGET(repeat), gui_queue_can_repeat(queue));
|
||||
|
||||
|
|
|
@ -635,6 +635,7 @@
|
|||
<property name="receives_default">True</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="image">image9</property>
|
||||
<signal name="toggled" handler="__queue_random" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
@ -650,6 +651,7 @@
|
|||
<property name="receives_default">True</property>
|
||||
<property name="valign">center</property>
|
||||
<property name="image">image10</property>
|
||||
<signal name="toggled" handler="__queue_repeat" swapped="no"/>
|
||||
</object>
|
||||
<packing>
|
||||
<property name="expand">False</property>
|
||||
|
|
|
@ -59,6 +59,24 @@ static void test_queue()
|
|||
test_equal(gtk_widget_get_sensitive(random_img), false);
|
||||
test_equal(gtk_widget_get_sensitive(repeat_img), false);
|
||||
|
||||
/* Test clicking random button. */
|
||||
gtk_toggle_button_set_active(random, true);
|
||||
test_equal(gtk_widget_get_sensitive(random_img), true);
|
||||
test_equal(queue_has_flag(&q, Q_RANDOM), (bool)true);
|
||||
|
||||
gtk_toggle_button_set_active(random, false);
|
||||
test_equal(gtk_widget_get_sensitive(random_img), false);
|
||||
test_equal(queue_has_flag(&q, Q_RANDOM), (bool)false);
|
||||
|
||||
/* Test clicking repeat button. */
|
||||
gtk_toggle_button_set_active(repeat, true);
|
||||
test_equal(gtk_widget_get_sensitive(repeat_img), true);
|
||||
test_equal(queue_has_flag(&q, Q_REPEAT), (bool)true);
|
||||
|
||||
gtk_toggle_button_set_active(repeat, false);
|
||||
test_equal(gtk_widget_get_sensitive(repeat_img), false);
|
||||
test_equal(queue_has_flag(&q, Q_REPEAT), (bool)false);
|
||||
|
||||
/* Show a queue where random and repeat are enabled */
|
||||
gq->gq_flags = GQ_CAN_RANDOM | GQ_CAN_REPEAT;
|
||||
q.q_flags = Q_RANDOM | Q_REPEAT;
|
||||
|
|
Loading…
Reference in New Issue