ocarina/gui/collection.cpp

77 lines
2.0 KiB
C++

/*
* Copyright 2014 (c) Anna Schumaker.
*/
#include <core/library.h>
#include <core/playlist.h>
#include <gui/tabs.h>
#include <gui/queue/label.h>
#include <gui/queue/toolbar.h>
#include <gui/queue/window.h>
class CollectionTab : public Tab {
private:
Glib::RefPtr<Gtk::Builder> builder;
Gtk::VBox collection_vbox;
CollectionLabel *collection_label;
QueueToolbar *collection_toolbar;
QueueWindow *collection_window;
public:
CollectionTab() : Tab(library::get_queue())
{
builder = Gtk::Builder::create();
builder->add_from_file(gui :: share_file("QueueWindow.ui"));
builder->add_from_file(gui :: share_file("QueueToolbar.ui"));
builder->add_from_file(gui :: share_file("QueueLabel.ui"));
builder->get_widget_derived("CollectionLabel", collection_label);
builder->get_widget_derived("QueueToolbar", collection_toolbar);
builder->get_widget_derived("QueueWindow", collection_window);
collection_toolbar->init(tab_pq, collection_label, collection_window, T_RANDOM);
collection_vbox.set_margin_left(1);
collection_vbox.set_margin_right(1);
collection_vbox.set_homogeneous(false);
collection_vbox.pack_start(*collection_toolbar, false, true, 2);
collection_vbox.pack_start(*collection_window, true, true);
collection_vbox.show();
tab_search = collection_toolbar->q_search;
tab_size = collection_label->collection_size;
tab_treeview = collection_window->q_treeview;
tab_widget = &collection_vbox;
tab_finish_init();
gui :: get_widget<Gtk::Notebook>("o_notebook")->insert_page(collection_vbox, *collection_label, 0);
}
~CollectionTab()
{
tab_unmap();
}
bool on_key_press_event(const std::string &key)
{
std::vector<unsigned int> ids;
if (key != "Delete")
return Tab :: on_key_press_event(key);
tab_selected_ids(ids);
for (unsigned int i = 0; i < ids.size(); i++)
playlist :: add(tags :: get_track(ids[i]), "Banned");
return true;
}
};
static CollectionTab *collection_tab;
void init_collection_tab()
{
collection_tab = new CollectionTab;
}