115 lines
2.1 KiB
C++
115 lines
2.1 KiB
C++
/*
|
|
* Copyright 2014 (c) Anna Schumaker.
|
|
*/
|
|
#include <callback.h>
|
|
#include <tabs.h>
|
|
|
|
class QueueTab : public Tab {
|
|
private:
|
|
/*
|
|
* Queue tab variables
|
|
*/
|
|
Gtk::HBox q_tab_box;
|
|
Gtk::Label q_tab_number;
|
|
Gtk::Label q_tab_size;
|
|
Gtk::Button q_tab_close;
|
|
Gtk::Image q_tab_close_img;
|
|
|
|
/*
|
|
* Queue page variables
|
|
*/
|
|
Gtk::ToggleButton q_random;
|
|
Gtk::SearchEntry q_search;
|
|
Gtk::TreeView q_treeview;
|
|
Gtk::VBox q_vbox;
|
|
|
|
public:
|
|
QueueTab(Playqueue *, unsigned int num);
|
|
~QueueTab();
|
|
void on_post_init();
|
|
|
|
void tab_set_size();
|
|
void queue_set_number(unsigned int);
|
|
};
|
|
|
|
|
|
QueueTab :: QueueTab(Playqueue *pq, unsigned int num)
|
|
: Tab(pq)
|
|
{
|
|
/*
|
|
* Create our tab widget
|
|
*/
|
|
q_tab_close_img.set_from_icon_name("window-close", Gtk::ICON_SIZE_MENU);
|
|
q_tab_close.set_image(q_tab_close_img);
|
|
q_tab_close.set_relief(Gtk::RELIEF_NONE);
|
|
q_tab_size.set_justify(Gtk::JUSTIFY_CENTER);
|
|
|
|
q_tab_box.pack_start(q_tab_number, false, false);
|
|
q_tab_box.pack_start(q_tab_size, true, true);
|
|
q_tab_box.pack_start(q_tab_close, false, false);
|
|
|
|
tab_set_size();
|
|
queue_set_number(num);
|
|
q_tab_box.show_all();
|
|
|
|
|
|
/*
|
|
* Finish generic init
|
|
*/
|
|
|
|
tab_random = &q_random;
|
|
tab_search = &q_search;
|
|
tab_size = &q_tab_size;
|
|
tab_treeview = &q_treeview;
|
|
tab_widget = &q_vbox;
|
|
|
|
tab_finish_init();
|
|
|
|
get_widget<Gtk::Notebook>("o_notebook")->insert_page(q_vbox, q_tab_box, num);
|
|
q_vbox.show_all();
|
|
}
|
|
|
|
QueueTab :: ~QueueTab()
|
|
{
|
|
tab_unmap();
|
|
}
|
|
|
|
void QueueTab :: on_post_init()
|
|
{
|
|
tab_init_random();
|
|
}
|
|
|
|
void QueueTab :: tab_set_size()
|
|
{
|
|
std::stringstream ss;
|
|
ss << "<span size='x-large'>" << tab_pq->size() << "</span>";
|
|
q_tab_size.set_markup(ss.str());
|
|
}
|
|
|
|
void QueueTab :: queue_set_number(unsigned int num)
|
|
{
|
|
std::stringstream ss;
|
|
ss << "<span size='x-large'>" << num << ". </span>";
|
|
q_tab_number.set_markup(ss.str());
|
|
}
|
|
|
|
|
|
|
|
static void on_pq_created(Playqueue *pq, unsigned int num)
|
|
{
|
|
QueueTab *tab = new QueueTab(pq, num);
|
|
tab->on_post_init();
|
|
}
|
|
|
|
static void on_pq_removed(Playqueue *pq)
|
|
{
|
|
|
|
}
|
|
|
|
void init_queue_tabs()
|
|
{
|
|
struct Callbacks *cb = get_callbacks();
|
|
cb->on_pq_created = on_pq_created;
|
|
cb->on_pq_removed = on_pq_removed;
|
|
}
|