gui: Add columns to a queue treeview

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2014-02-28 15:57:46 -05:00 committed by Anna Schumaker
parent 2a1f695ea8
commit 196088dcfa
2 changed files with 59 additions and 62 deletions

View File

@ -7,6 +7,31 @@
#include <map>
static unsigned int q_col_width[] = { 20, 300, 60, 100, 100, 45, 100, 60, 1 };
static class QueueColumns : public Gtk::TreeModelColumnRecord {
public:
QueueColumns()
{ add(q_col_track); add(q_col_title); add(q_col_length);
add(q_col_artist); add(q_col_album); add(q_col_year);
add(q_col_genre); add(q_col_count); add(q_col_played);
add(q_col_path); }
Gtk::TreeModelColumn<unsigned int> q_col_track;
Gtk::TreeModelColumn<std::string> q_col_title;
Gtk::TreeModelColumn<std::string> q_col_length;
Gtk::TreeModelColumn<std::string> q_col_artist;
Gtk::TreeModelColumn<std::string> q_col_album;
Gtk::TreeModelColumn<unsigned int> q_col_year;
Gtk::TreeModelColumn<std::string> q_col_genre;
Gtk::TreeModelColumn<unsigned int> q_col_count;
Gtk::TreeModelColumn<std::string> q_col_played;
Gtk::TreeModelColumn<std::string> q_col_path;
} queue_cols;
class QueueTab : public Tab {
private:
/**
@ -23,7 +48,9 @@ private:
*/
Gtk::VBox q_vbox;
/* Toolbar widgets */
/**
* Toolbar widgets
*/
Gtk::HBox q_toolbar_box;
Gtk::SearchEntry q_search;
Gtk::ToggleButton q_random;
@ -33,6 +60,7 @@ private:
Gtk::ScrolledWindow q_window;
Gtk::TreeView q_treeview;
public:
QueueTab(Playqueue *, unsigned int num);
~QueueTab();
@ -40,6 +68,7 @@ public:
/**
* Helper functions
*/
void setup_treeview();
void on_post_init();
void tab_set_size();
void queue_set_number(unsigned int);
@ -103,6 +132,7 @@ QueueTab :: QueueTab(Playqueue *pq, unsigned int num)
q_window.set_margin_right(5);
q_window.set_margin_bottom(5);
q_window.add(q_treeview);
setup_treeview();
/*
@ -150,6 +180,34 @@ QueueTab :: ~QueueTab()
*
*/
void QueueTab :: setup_treeview()
{
q_treeview.append_column("#", queue_cols.q_col_track);
q_treeview.append_column("Title", queue_cols.q_col_title);
q_treeview.append_column("Length", queue_cols.q_col_length);
q_treeview.append_column("Artist", queue_cols.q_col_artist);
q_treeview.append_column("Album", queue_cols.q_col_album);
q_treeview.append_column("Year", queue_cols.q_col_year);
q_treeview.append_column("Genre", queue_cols.q_col_genre);
q_treeview.append_column("Count", queue_cols.q_col_count);
q_treeview.append_column("Played", queue_cols.q_col_played);
q_treeview.set_tooltip_column(9);
q_treeview.set_rules_hint();
q_treeview.set_enable_search(false);
q_treeview.get_selection()->set_mode(Gtk::SELECTION_MULTIPLE);
q_treeview.set_rubber_banding();
std::vector<Gtk::TreeViewColumn *> columns = q_treeview.get_columns();
for (unsigned int i = 0; i < columns.size(); i++) {
columns[i]->set_resizable();
columns[i]->set_fixed_width(q_col_width[i]);
columns[i]->set_sizing(Gtk::TREE_VIEW_COLUMN_FIXED);
columns[i]->set_clickable();
}
}
void QueueTab :: on_post_init()
{
tab_init_random();

View File

@ -349,26 +349,6 @@ static std::list<TabType *> tab_types;
static unsigned int sort_timeout_count = 0;
static class QueueColumns : public Gtk::TreeModelColumnRecord {
public:
QueueColumns()
{ add(q_col_track); add(q_col_title); add(q_col_length);
add(q_col_artist); add(q_col_album); add(q_col_year);
add(q_col_genre); add(q_col_count); add(q_col_played);
add(q_col_path); }
Gtk::TreeModelColumn<unsigned int> q_col_track;
Gtk::TreeModelColumn<std::string> q_col_title;
Gtk::TreeModelColumn<std::string> q_col_length;
Gtk::TreeModelColumn<std::string> q_col_artist;
Gtk::TreeModelColumn<std::string> q_col_album;
Gtk::TreeModelColumn<unsigned int> q_col_year;
Gtk::TreeModelColumn<std::string> q_col_genre;
Gtk::TreeModelColumn<unsigned int> q_col_count;
Gtk::TreeModelColumn<std::string> q_col_played;
Gtk::TreeModelColumn<std::string> q_col_path;
} queue_cols;
static unsigned int q_col_width[] = { 20, 300, 60, 100, 100, 45, 100, 60, 1 };
static sort_t q_col_sorts[] = {
SORT_TRACK, SORT_TITLE, SORT_LENGTH,
SORT_ARTIST, SORT_ALBUM, SORT_YEAR,
@ -515,51 +495,10 @@ public:
void on_focus_search();
};
void OcarinaPage::setup_treeview()
{*/
/* Make page content */
/*page_view.append_column("#", queue_cols.q_col_track);
page_view.append_column("Title", queue_cols.q_col_title);
page_view.append_column("Length", queue_cols.q_col_length);
page_view.append_column("Artist", queue_cols.q_col_artist);
page_view.append_column("Album", queue_cols.q_col_album);
page_view.append_column("Year", queue_cols.q_col_year);
page_view.append_column("Genre", queue_cols.q_col_genre);
page_view.append_column("Count", queue_cols.q_col_count);
page_view.append_column("Played", queue_cols.q_col_played);
page_view.set_tooltip_column(9);
page_view.signal_row_activated().connect(sigc::mem_fun(*this,
&OcarinaPage::on_row_activated));
page_view.signal_key_press_event().connect(sigc::mem_fun(*this,
&OcarinaPage::on_view_key_pressed));
page_view.signal_button_press_event().connect(sigc::mem_fun(*this,
&OcarinaPage::on_view_button_pressed), false);
page_view.set_model(filter);
page_view.set_rules_hint();
page_view.set_enable_search(false);
page_view.get_selection()->set_mode(Gtk::SELECTION_MULTIPLE);
page_view.set_rubber_banding();
page_scroll.set_shadow_type(Gtk::SHADOW_IN);
page_scroll.set_margin_left(5);
page_scroll.set_margin_right(5);
page_scroll.set_margin_bottom(5);
page_scroll.add(page_view);
setup_columns();
page_viewbox.pack_start(page_scroll, true, true);
};
void OcarinaPage::setup_columns()
{
std::vector<Gtk::TreeViewColumn *> columns = page_view.get_columns();
for (unsigned int i = 0; i < columns.size(); i++) {
columns[i]->set_resizable();
columns[i]->set_fixed_width(q_col_width[i]);
columns[i]->set_sizing(Gtk::TREE_VIEW_COLUMN_FIXED);
columns[i]->set_clickable();
columns[i]->signal_clicked().connect(sigc::bind<unsigned int> (
sigc::mem_fun(*this, &OcarinaPage::on_column_clicked),
i));