From d189731bad73c50b272e52f1c7dd1ec3ac3aa7bd Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Tue, 3 Jul 2012 16:55:51 +0300 Subject: [PATCH] probe clips on server --- src/library.c | 42 ++++++++++++++++++++++++++++++------------ 1 files changed, 30 insertions(+), 12 deletions(-) diff --git a/src/library.c b/src/library.c index fce8426..84d5eef 100644 --- a/src/library.c +++ b/src/library.c @@ -79,7 +79,8 @@ static int library_init_load(instance_t* app) return 0; }; -static void library_add_item(instance_t* app, GtkTreeStore *treestore, GtkTreeIter *iter, mvcp_dir_entry_t* e) +static void library_add_item(instance_t* app, GtkTreeStore *treestore, GtkTreeIter *iter, + mvcp_dir_entry e, mvcp_list_entry p) { GtkTreeIter this, child; @@ -102,14 +103,21 @@ static void library_add_item(instance_t* app, GtkTreeStore *treestore, GtkTreeIt } else { + char dur[32]; + + if(p) + frames2tc(p->size, p->fps, dur); + else + strcpy(dur, ""); + gtk_tree_store_append(treestore, &this, iter); gtk_tree_store_set(treestore, &this, 0, app->library.icons[1], - 1, "", + 1, dur, 2, e->name, 3, e, - 4, NULL, + 4, p, 5, FALSE, 6, "red", -1 ); @@ -130,10 +138,10 @@ static void on_library_row_expanded GtkTreeModel *model; GdkCursor* cursor; mvcp_dir dir; - mvcp_dir_entry_t *e, entry; + mvcp_dir_entry_t *e; instance_t* app = (instance_t*)user_data; - g_warning("on_library_row_expanded: HERE"); +// g_warning("on_library_row_expanded: HERE"); /* Set busy cursor */ cursor = gdk_cursor_new(GDK_WATCH); @@ -153,26 +161,33 @@ static void on_library_row_expanded /* setup root path */ if(!e) - p = "/home/studio/Videos"; + p = "/"; else p = e->full; - /* read dir */ dir = mvcp_dir_init(app->library.handle[0], p); for (i = 0; i < mvcp_dir_count(dir); i++) { - if(mvcp_ok != mvcp_dir_get(dir, i, &entry)) + mvcp_dir_entry_t dir_entry; + mvcp_list_entry_t *list_e = NULL, list_entry; + + if(mvcp_ok != mvcp_dir_get(dir, i, &dir_entry)) continue; // g_warning("on_library_row_expanded: path=[%s], entry.dur=[%d], entry.full=[%s], entry.name[%s]", // p, entry.dir, entry.full, entry.name); e = (mvcp_dir_entry_t*)malloc(sizeof(mvcp_dir_entry_t)); - memset(e, 0, sizeof(mvcp_dir_entry_t)); - *e = entry; + *e = dir_entry; + + if(!e->dir && mvcp_ok == mvcp_probe_clip( app->library.handle[0], e->full, &list_entry)) + { + list_e = (mvcp_list_entry_t*)malloc(sizeof(mvcp_list_entry_t)); + *list_e = list_entry; + }; - library_add_item(app, GTK_TREE_STORE(model), iter, e); + library_add_item(app, GTK_TREE_STORE(model), iter, e, list_e); }; /* restore cursor */ @@ -192,21 +207,24 @@ static void on_library_row_collapsed { GtkTreeModel *model; GtkTreeIter child; - g_warning("on_library_row_collapsed: HERE"); +// g_warning("on_library_row_collapsed: HERE"); /* delete all items */ model = gtk_tree_view_get_model(treeview); while (gtk_tree_model_iter_children(GTK_TREE_MODEL(model), &child, iter)) { mvcp_dir_entry_t *e; + mvcp_list_entry_t *l; /* request mvcp entry */ gtk_tree_model_get(GTK_TREE_MODEL(model), &child, 3, &e, + 4, &l, -1); /* free entry */ if(e) free(e); + if(l) free(l); gtk_tree_store_remove(GTK_TREE_STORE(model), &child); }; -- 1.7.4.4