ocarina/gui/history.cpp

96 lines
1.6 KiB
C++
Raw Normal View History

/*
* Copyright 2014 (c) Anna Schumaker.
*/
#include <audio.h>
#include <filter.h>
#include <ocarina.h>
#include <tabs.h>
#include <set>
static std::set<unsigned int> visible_ids;
static Glib::RefPtr<Gtk::TreeModelFilter> history_filter;
static Glib::RefPtr<PlayqueueModel> model;
/*
* Basic helper functions
*/
static inline Playqueue *history_pq()
{
return audio::get_recent_pq();
}
static void set_queue_size()
{
Gtk::Label *label = get_widget<Gtk::Label>("o_history_size");
label->set_text(itoa(history_pq()->size()));
}
/*
* Gtk signal functions
*/
/*
* Functions exposed through a TabFuncs structure
*/
static void history_init_late()
{
set_queue_size();
}
static void history_cleanup() {}
static bool history_has_queue(Playqueue *pq)
{
return pq == history_pq();
}
static void history_track_added(Playqueue *pq, unsigned int row)
{
model->on_row_inserted(row);
set_queue_size();
}
static void history_track_deleted(Playqueue *pq, unsigned int row)
{
model->on_row_deleted(row);
set_queue_size();
}
static struct TabType history_funcs = {
.init_late = history_init_late,
.cleanup = history_cleanup,
.has_queue = history_has_queue,
.track_added = history_track_added,
.track_deleted = history_track_deleted,
};
static struct FilterDesc filter_desc;
/*
* Basic tab setup
*/
struct TabType *init_history_tab()
{
model = Glib::RefPtr<PlayqueueModel>(new PlayqueueModel(history_pq()));
filter_desc.model = model;
filter_desc.entry = get_widget<Gtk::SearchEntry>("o_history_entry");
init_filter(&filter_desc);
get_widget<Gtk::TreeView>("o_history_treeview")->set_model(filter_desc.filter);
return &history_funcs;
}