ocarina/gui/queue/toolbar.cpp

78 lines
1.7 KiB
C++

/*
* Copyright 2015 (c) Anna Schumaker.
*/
#include <gui/queue/toolbar.h>
QueueToolbar :: QueueToolbar(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> builder)
: Gtk::HBox(cobject), _builder(builder)
{
_builder->get_widget("q_search", q_search);
_builder->get_widget("q_switch", _q_switch);
_builder->get_widget("q_repeat", _q_repeat);
_builder->get_widget("q_random", _q_random);
}
QueueToolbar :: ~QueueToolbar()
{
}
void QueueToolbar :: init(Queue *queue, QueueLabel *label,
QueueWindow *window, unsigned int flags)
{
_queue = queue;
_q_label = label;
_q_window = window;
if (flags & T_SWITCH) {
_q_switch->property_active().signal_changed().connect(
sigc::mem_fun(*this, &QueueToolbar::on_switch_toggled));
_q_switch->set_active(_queue->has_flag(Q_ENABLED));
_q_switch->show();
}
if (flags & T_RANDOM) {
_q_random->signal_toggled().connect(sigc::mem_fun(*this,
&QueueToolbar::on_random_toggled));
_q_random->set_active(_queue->has_flag(Q_RANDOM));
_q_random->show();
}
if (flags & T_REPEAT) {
_q_repeat->signal_toggled().connect(sigc::mem_fun(*this,
&QueueToolbar::on_repeat_toggled));
_q_repeat->set_active(_queue->has_flag(Q_REPEAT));
_q_repeat->show();
}
}
void QueueToolbar :: on_random_toggled()
{
if (_q_random->get_active())
_queue->set_flag(Q_RANDOM);
else
_queue->unset_flag(Q_RANDOM);
}
void QueueToolbar :: on_repeat_toggled()
{
if (_q_repeat->get_active())
_queue->set_flag(Q_REPEAT);
else
_queue->unset_flag(Q_REPEAT);
}
void QueueToolbar :: on_switch_toggled()
{
bool active = _q_switch->get_active();
if (active)
_queue->set_flag(Q_ENABLED);
else
_queue->unset_flag(Q_ENABLED);
_q_label->set_sensitive(active);
_q_window->set_sensitive(active);
}