gui/model: Use queue positions instead of queue iterator

This helps simplify the code, since we can reuse
gui_model_iter_nth_child() here.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2016-08-21 09:50:13 -04:00
parent 010969c7b3
commit 619ea0b559
2 changed files with 9 additions and 21 deletions

View File

@ -60,16 +60,13 @@ static gboolean __gui_model_get_iter(GtkTreeModel *model, GtkTreeIter *iter,
static GtkTreePath *__gui_model_get_path(GtkTreeModel *model, GtkTreeIter *iter)
{
struct queue_iter *q_it;
GtkTreePath *path;
g_return_val_if_fail(iter != NULL, FALSE);
g_return_val_if_fail(iter->user_data, FALSE);
g_return_val_if_fail(iter->user_data2, FALSE);
q_it = iter->user_data;
path = gtk_tree_path_new();
gtk_tree_path_append_index(path, q_it->it_pos);
gtk_tree_path_append_index(path, GPOINTER_TO_UINT(iter->user_data));
return path;
}
@ -127,20 +124,13 @@ static void __gui_model_get_value(GtkTreeModel *model, GtkTreeIter *iter,
static gboolean __gui_model_iter_next(GtkTreeModel *model, GtkTreeIter *iter)
{
GuiModel *gqm = GUI_MODEL(model);
unsigned int pos;
g_return_val_if_fail(iter != NULL, FALSE);
g_return_val_if_fail(iter->user_data, FALSE);
g_return_val_if_fail(iter->user_data2, FALSE);
queue_iter_next(&gqm->gm_iter);
if (gqm->gm_iter.it_iter == NULL)
return FALSE;
iter->stamp = gqm->gm_stamp;
iter->user_data = &gqm->gm_iter;
iter->user_data2 = queue_iter_val(&gqm->gm_iter);
return TRUE;
pos = GPOINTER_TO_UINT(iter->user_data) + 1;
return __gui_model_iter_nth_child(model, iter, NULL, pos);
}
static gboolean __gui_model_iter_children(GtkTreeModel *model, GtkTreeIter *iter,
@ -166,14 +156,14 @@ static gboolean __gui_model_iter_nth_child(GtkTreeModel *model,
GtkTreeIter *parent,
gint n)
{
if (parent || !cur_playlist ||
n >= queue_size(&cur_playlist->pl_queue))
struct queue *queue = &cur_playlist->pl_queue;
if (parent || !cur_playlist || n >= queue_size(queue))
return FALSE;
queue_iter_set(&cur_playlist->pl_queue, &queue_model->gm_iter, n);
iter->stamp = queue_model->gm_stamp;
iter->user_data = &queue_model->gm_iter;
iter->user_data2 = queue_iter_val(&queue_model->gm_iter);
iter->user_data = GUINT_TO_POINTER(n);
iter->user_data2 = queue_at(queue, n);
return TRUE;
}

View File

@ -28,8 +28,6 @@ enum gui_model_columns {
struct gui_model {
GObject gm_parent; /* This MUST be the first member. */
gint gm_stamp; /* This is used to check iter validity. */
struct queue_iter gm_iter; /* The current _q_iter. */
};
typedef struct gui_model GuiModel;