ocarina: Get list of selected IDs from the songlist
This commit is contained in:
parent
781dedfe13
commit
74ab92ea6f
|
@ -43,6 +43,7 @@ class SongList : public libsaria::SourceModel
|
|||
GtkWidget *treeview;
|
||||
GtkListStore *liststore;
|
||||
GtkTreeModel *filter;
|
||||
GtkTreeSelection *selection;
|
||||
GtkCellRenderer *textcell;
|
||||
|
||||
void set_label_text();
|
||||
|
@ -61,6 +62,7 @@ class SongList : public libsaria::SourceModel
|
|||
void fill();
|
||||
void clear();
|
||||
void refilter();
|
||||
void list_selected_ids(list<ino_t> &);
|
||||
|
||||
gint right_click(guint, guint64);
|
||||
};
|
||||
|
|
|
@ -51,6 +51,13 @@ static GtkWidget *setup_treeview(GtkTreeModel *model, SongList *list)
|
|||
return treeview;
|
||||
}
|
||||
|
||||
static GtkTreeSelection *setup_selection(GtkWidget *treeview)
|
||||
{
|
||||
GtkTreeSelection *selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(treeview));
|
||||
gtk_tree_selection_set_mode(selection, GTK_SELECTION_MULTIPLE);
|
||||
return selection;
|
||||
}
|
||||
|
||||
static GtkWidget *setup_window(GtkWidget *treeview)
|
||||
{
|
||||
GtkWidget *window = gtk_scrolled_window_new(NULL, NULL);
|
||||
|
@ -98,6 +105,7 @@ void SongList::init(string text, SongListFuncs *funcs, list <MenuItem> *menu)
|
|||
liststore = setup_liststore();
|
||||
filter = setup_filter(liststore);
|
||||
treeview = setup_treeview(filter, this);
|
||||
selection = setup_selection(treeview);
|
||||
window = setup_window(treeview);
|
||||
setup_columns(textcell, treeview);
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
|
||||
#include <list>
|
||||
#include <sstream>
|
||||
using namespace std;
|
||||
|
||||
|
@ -30,6 +31,20 @@ void songlist_row_activated(GtkTreeView *treeview, GtkTreePath *path,
|
|||
libsaria::library::play_id(inode);
|
||||
}
|
||||
|
||||
static void selected_foreach_func(GtkTreeModel *model, GtkTreePath *path,
|
||||
GtkTreeIter *iter, gpointer data)
|
||||
{
|
||||
list<ino_t> *res = (list<ino_t> *) data;
|
||||
ino_t inode;
|
||||
gtk_tree_model_get(model, iter, 0, &inode, -1);
|
||||
res->push_back(inode);
|
||||
}
|
||||
|
||||
void SongList::list_selected_ids(list<ino_t> &res)
|
||||
{
|
||||
gtk_tree_selection_selected_foreach(selection, selected_foreach_func, &res);
|
||||
}
|
||||
|
||||
GtkWidget *SongList::get_window()
|
||||
{
|
||||
return window;
|
||||
|
|
Loading…
Reference in New Issue