gui/model: Add support for gtk_tree_model_get_path()
Signed-off-by: Anna Schumaker <Anna@OcarinaProject.net>
This commit is contained in:
parent
eb481b8d09
commit
9c3adf2b09
18
gui/model.c
18
gui/model.c
|
@ -56,10 +56,25 @@ static gboolean _queue_model_get_iter(GtkTreeModel *model, GtkTreeIter *iter,
|
||||||
_q_iter_set(&gqm->gqm_queue->q_tracks, &gqm->gqm_iter, indices[0]);
|
_q_iter_set(&gqm->gqm_queue->q_tracks, &gqm->gqm_iter, indices[0]);
|
||||||
iter->stamp = gqm->gqm_stamp;
|
iter->stamp = gqm->gqm_stamp;
|
||||||
iter->user_data = &gqm->gqm_iter;
|
iter->user_data = &gqm->gqm_iter;
|
||||||
iter->user_data2 = queue_at(gqm->gqm_queue, indices[0]);
|
iter->user_data2 = _q_iter_val(&gqm->gqm_iter);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GtkTreePath *_queue_model_get_path(GtkTreeModel *model, GtkTreeIter *iter)
|
||||||
|
{
|
||||||
|
struct _q_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);
|
||||||
|
return path;
|
||||||
|
}
|
||||||
|
|
||||||
static void _queue_model_init(GuiQueueModel *model)
|
static void _queue_model_init(GuiQueueModel *model)
|
||||||
{
|
{
|
||||||
model->gqm_stamp = g_random_int();
|
model->gqm_stamp = g_random_int();
|
||||||
|
@ -86,6 +101,7 @@ static void _queue_tree_model_init(GtkTreeModelIface *iface)
|
||||||
iface->get_n_columns = _queue_model_get_n_columns;
|
iface->get_n_columns = _queue_model_get_n_columns;
|
||||||
iface->get_column_type = _queue_model_get_column_type;
|
iface->get_column_type = _queue_model_get_column_type;
|
||||||
iface->get_iter = _queue_model_get_iter;
|
iface->get_iter = _queue_model_get_iter;
|
||||||
|
iface->get_path = _queue_model_get_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,7 @@ static void test_model()
|
||||||
{
|
{
|
||||||
GtkTreeModel *treemodel;
|
GtkTreeModel *treemodel;
|
||||||
GuiQueueModel *model;
|
GuiQueueModel *model;
|
||||||
|
GtkTreePath *path;
|
||||||
GtkTreeIter iter;
|
GtkTreeIter iter;
|
||||||
int argc = 0;
|
int argc = 0;
|
||||||
GType type;
|
GType type;
|
||||||
|
@ -55,6 +56,7 @@ static void test_model()
|
||||||
|
|
||||||
/* Tests before adding tracks to the collection */
|
/* Tests before adding tracks to the collection */
|
||||||
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), false);
|
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), false);
|
||||||
|
test_equal((void *)gtk_tree_model_get_path(treemodel, &iter), NULL);
|
||||||
|
|
||||||
/* Okay, now scan a directory and test again */
|
/* Okay, now scan a directory and test again */
|
||||||
collection_add("tests/Music/Hyrule Symphony");
|
collection_add("tests/Music/Hyrule Symphony");
|
||||||
|
@ -64,6 +66,11 @@ static void test_model()
|
||||||
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), true);
|
test_equal(gtk_tree_model_get_iter_first(treemodel, &iter), true);
|
||||||
test_equal(((struct track *)iter.user_data2)->tr_track, 1);
|
test_equal(((struct track *)iter.user_data2)->tr_track, 1);
|
||||||
|
|
||||||
|
path = gtk_tree_model_get_path(treemodel, &iter);
|
||||||
|
test_not_equal((void *)path, NULL);
|
||||||
|
test_equal(gtk_tree_path_get_indices(path)[0], 0);
|
||||||
|
gtk_tree_path_free(path);
|
||||||
|
|
||||||
g_object_unref(model);
|
g_object_unref(model);
|
||||||
test_equal(G_IS_OBJECT(model), false);
|
test_equal(G_IS_OBJECT(model), false);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue