normalize playlist item agains library
authorMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 22 Jun 2011 13:54:55 +0000 (16:54 +0300)
committerMaksym Veremeyenko <verem@m1stereo.tv>
Wed, 22 Jun 2011 13:54:55 +0000 (16:54 +0300)
src/library.c
src/omnplay.cpp
src/omnplay.h
src/playlist.c
src/ui.c

index 9c0fe49..a54bfaf 100644 (file)
 #include "ui.h"
 #include "timecode.h"
 
+playlist_item_t* omnplay_library_find(omnplay_instance_t* app, char* id)
+{
+    int i;
+    playlist_item_t* item = NULL;
+
+    pthread_mutex_lock(&app->library.lock);
+
+    for(i = 0; i < app->library.count && !item; i++)
+        if(!strcasecmp(id, app->library.item[i].id))
+            item = &app->library.item[i];
+
+    pthread_mutex_unlock(&app->library.lock);
+
+    return item;
+};
+
+void omnplay_library_normalize_item(omnplay_instance_t* app, playlist_item_t* item)
+{
+    playlist_item_t* lib;
+
+    pthread_mutex_lock(&app->library.lock);
+
+    lib = omnplay_library_find(app, item->id);
+
+    if(lib)
+    {
+
+        if(!item->title[0])
+            strcpy(item->title, lib->title);
+
+        if(!item->dur)
+        {
+            item->dur = lib->dur;
+            item->in = lib->in;
+        };
+    }
+
+    pthread_mutex_unlock(&app->library.lock);
+};
+
 void omnplay_library_sort(omnplay_instance_t* app)
 {
     int i, j, m;
@@ -226,3 +266,4 @@ void omnplay_library_draw(omnplay_instance_t* app)
 
     pthread_mutex_unlock(&app->library.lock);
 };
+
index d460135..b08f686 100644 (file)
@@ -642,6 +642,7 @@ static void omnplay_playlist_item_add(omnplay_instance_t* app, int after)
     memset(&item, 0, sizeof(playlist_item_t));
     if(ui_playlist_item_dialog(app, &item))
     {
+        omnplay_library_normalize_item(app, &item);
         item.type = t;
         omnplay_playlist_insert_items(app, idx, &item, 1);
     };
@@ -666,6 +667,7 @@ static void omnplay_playlist_item_edit(omnplay_instance_t* app)
 
     if(ui_playlist_item_dialog(app, &item))
     {
+        omnplay_library_normalize_item(app, &item);
         app->playlist.item[idx] = item;
         omnplay_playlist_draw_item(app, idx);
     };
index f967b87..cebab56 100644 (file)
@@ -168,6 +168,8 @@ int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int lim
     omnplay_get_content_cb_proc proc, void* data);
 int omnplay_whois_list(omnplay_instance_t* app, playlist_item_t *items, int* plimit);
 int omnplay_library_load_file(playlist_item_t* items, int *pcount, char* filename);
+playlist_item_t* omnplay_library_find(omnplay_instance_t* app, char* id);
+void omnplay_library_normalize_item(omnplay_instance_t* app, playlist_item_t* item);
 
 #ifdef __cplusplus
 };
index 35c639f..1a4f207 100644 (file)
@@ -128,7 +128,10 @@ static int load_file_ply(omnplay_instance_t* app, char* filename)
     {
         pthread_mutex_lock(&app->playlist.lock);
         for(i = 0; i < count && app->playlist.count + 1 < MAX_PLAYLIST_ITEMS; i++)
+        {
+            omnplay_library_normalize_item(app, &items[i]);
             app->playlist.item[app->playlist.count++] = items[i];
+        };
         app->playlist.ver_curr++;
         pthread_mutex_unlock(&app->playlist.lock);
     }
index bea64e6..c8912db 100644 (file)
--- a/src/ui.c
+++ b/src/ui.c
@@ -655,7 +655,7 @@ int ui_playlist_item_dialog(omnplay_instance_t* app, playlist_item_t* item)
             item->player = gtk_combo_box_get_active(GTK_COMBO_BOX(combo));
 
             /* check if all data entered correctly */
-            if(item->dur && item->id[0])
+            if(item->id[0])
                 c = 0;
         };
     };