gui: Compress some of the model functions

This is to have a single function to set the user pointer value.

Signed-off-by: Anna Schumaker <schumaker.anna@gmail.com>
This commit is contained in:
Anna Schumaker 2014-01-26 17:40:46 -05:00 committed by Anna Schumaker
parent 6706a998ca
commit 782bcf0143
1 changed files with 10 additions and 20 deletions

View File

@ -8,10 +8,12 @@
#include <ocarina.h>
#include <sstream>
static unsigned int global_stamp = 1;
PlayqueueModel::PlayqueueModel(Playqueue *q)
: Glib::ObjectBase( typeid(PlayqueueModel) ),
Glib::Object(),
stamp(1), queue(q)
stamp(global_stamp++), queue(q)
{
}
@ -182,15 +184,8 @@ bool PlayqueueModel::iter_next_vfunc(const Gtk::TreeIter &iter,
if (!check_iter_validity(iter))
return false;
iter_next.set_stamp(stamp);
index = GPOINTER_TO_UINT(iter.gobj()->user_data);
index++;
if (index < queue->size()) {
iter_next.gobj()->user_data = GUINT_TO_POINTER(index);
return true;
}
return false;
return iter_nth_root_child_vfunc(index + 1, iter_next);
}
bool PlayqueueModel::iter_children_vfunc(const Gtk::TreeIter &parent,
@ -206,27 +201,27 @@ bool PlayqueueModel::iter_has_child_vfunc(const Gtk::TreeIter &iter) const
int PlayqueueModel::iter_n_children_vfunc(const Gtk::TreeIter &iter) const
{
if (!check_iter_validity(iter))
return 0;
return 0;
return iter_n_root_children_vfunc(iter);
}
int PlayqueueModel::iter_n_root_children_vfunc(const Gtk::TreeIter &iter) const
{
if (!check_iter_validity(iter))
return 0;
return queue->size();
}
bool PlayqueueModel::iter_nth_child_vfunc(const Gtk::TreeIter &parent,
int n, Gtk::TreeIter &iter) const
{
iter = Gtk::TreeIter();
return false;
return iter_nth_root_child_vfunc(n, iter);
}
bool PlayqueueModel::iter_nth_root_child_vfunc(int n, Gtk::TreeIter &iter) const
{
iter = Gtk::TreeIter();
if ((unsigned int)n < queue->size()) {
iter.set_stamp(stamp);
iter.gobj()->user_data = GUINT_TO_POINTER(n);
return true;
}
@ -256,12 +251,7 @@ bool PlayqueueModel::get_iter_vfunc(const Gtk::TreePath &path,
if (path.size() != 1)
return false;
if ((unsigned int)path[0] >= queue->size())
return false;
iter_next.set_stamp(stamp);
iter_next.gobj()->user_data = GUINT_TO_POINTER(path[0]);
return true;
return iter_nth_root_child_vfunc(path[0], iter_next);
}
bool PlayqueueModel::check_iter_validity(const Gtk::TreeIter &iter) const