X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fplaylist.c;h=9c095a4973c22cdaa4911644937b1c0430431a37;hb=35dcbc1fa07c07c670ea7a242fdbc55d0becce15;hp=0fece7b023f9fd8112baa1f0eb5a256b751f0b41;hpb=542e0abd65b0663c9cb2cb5a39e1840f493a4ba9;p=omnplay diff --git a/src/playlist.c b/src/playlist.c index 0fece7b..9c095a4 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -222,3 +222,53 @@ void omnplay_playlist_draw(omnplay_instance_t* app) pthread_mutex_unlock(&app->playlist.lock); }; + +typedef struct omnplay_playlist_draw_item_desc +{ + GtkListStore *list_store; + omnplay_instance_t* app; + int idx; +} omnplay_playlist_draw_item_t; + +static gboolean omnplay_playlist_draw_item_proc( + GtkTreeModel *model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) +{ + int i; + char tc1[12], tc2[12]; + omnplay_playlist_draw_item_t* item = (omnplay_playlist_draw_item_t*)user_data; + omnplay_instance_t* app = item->app; + + gtk_tree_model_get(model, iter, 7, &i, -1); + + if(i != item->idx) return FALSE; + + gtk_list_store_set(item->list_store, iter, + 0, "", + 1, app->playlist.block_icons[app->playlist.item[i].type], + 2, (0 == app->playlist.item[i].player)?"A":"B", + 3, app->playlist.item[i].id, + 4, frames2tc(app->playlist.item[i].in, 25.0, tc1), + 5, frames2tc(app->playlist.item[i].dur, 25.0, tc2), + 6, app->playlist.item[i].title, + 7, i, + -1 ); + + return TRUE; +}; + +void omnplay_playlist_draw_item(omnplay_instance_t* app, int idx) +{ + GtkListStore *list_store; + omnplay_playlist_draw_item_t item; + + list_store = GTK_LIST_STORE(gtk_tree_view_get_model(GTK_TREE_VIEW(app->playlist_grid))); + + pthread_mutex_lock(&app->playlist.lock); + + item.idx = idx; + item.app = app; + item.list_store = list_store; + gtk_tree_model_foreach(GTK_TREE_MODEL(list_store), omnplay_playlist_draw_item_proc, &item); + + pthread_mutex_unlock(&app->playlist.lock); +};