ocarina/gui/queue/window.cpp

56 lines
1.3 KiB
C++

/*
* Copyright 2015 (c) Anna Schumaker.
*/
extern "C" {
#include <core/audio.h>
#include <core/filter.h>
#include <gui/model.h>
#include <gui/queue.h>
}
#include <gui/queue/window.h>
QueueWindow :: QueueWindow(BaseObjectType *cobject,
const Glib::RefPtr<Gtk::Builder> builder)
: Gtk::ScrolledWindow(cobject), _builder(builder)
{
_builder->get_widget("q_treeview", q_treeview);
}
QueueWindow :: ~QueueWindow()
{
}
void QueueWindow :: init(queue *queue)
{
_queue = queue;
GtkTreeModel *model = GTK_TREE_MODEL(gui_queue(queue)->gq_model);
q_treeview->signal_row_activated().connect(sigc::mem_fun(*this,
&QueueWindow :: on_row_activated));
q_treeview->signal_key_press_event().connect(sigc::mem_fun(*this,
&QueueWindow :: on_key_press), false);
gtk_tree_view_set_model(q_treeview->gobj(), model);
}
bool QueueWindow :: on_key_press(GdkEventKey *event)
{
std::string key = gdk_keyval_name(event->keyval);
if (key == "space")
return true;
return false;
}
void QueueWindow :: on_row_activated(const Gtk::TreePath &path,
Gtk::TreeViewColumn *col)
{
GtkTreePath *real = path.gobj_copy();
struct track *track = gui_queue_model_path_get_track(
gui_queue(_queue)->gq_model, real);
audio_load(track);
queue_selected(_queue, gtk_tree_path_get_indices(real)[0]);
audio_play();
gtk_tree_path_free(real);
}