probe clips on server
authorMaksym Veremeyenko <verem@m1stereo.tv>
Tue, 3 Jul 2012 13:55:51 +0000 (16:55 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Tue, 3 Jul 2012 13:55:51 +0000 (16:55 +0300)
src/library.c

index fce8426..84d5eef 100644 (file)
@@ -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, "<file>");
+
         gtk_tree_store_append(treestore, &this, iter);
 
         gtk_tree_store_set(treestore, &this,
             0, app->library.icons[1],
-            1, "<file>",
+            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);
     };