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:
parent
010969c7b3
commit
619ea0b559
28
gui/model.c
28
gui/model.c
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue