From a2a67895d9518b919c5ab0103e7b8ce70baa789f Mon Sep 17 00:00:00 2001 From: Maksym Veremeyenko Date: Wed, 22 Jun 2011 16:54:55 +0300 Subject: [PATCH] normalize playlist item agains library --- src/library.c | 41 +++++++++++++++++++++++++++++++++++++++++ src/omnplay.cpp | 2 ++ src/omnplay.h | 2 ++ src/playlist.c | 3 +++ src/ui.c | 2 +- 5 files changed, 49 insertions(+), 1 deletions(-) diff --git a/src/library.c b/src/library.c index 9c0fe49..a54bfaf 100644 --- a/src/library.c +++ b/src/library.c @@ -32,6 +32,46 @@ #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); }; + diff --git a/src/omnplay.cpp b/src/omnplay.cpp index d460135..b08f686 100644 --- a/src/omnplay.cpp +++ b/src/omnplay.cpp @@ -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); }; diff --git a/src/omnplay.h b/src/omnplay.h index f967b87..cebab56 100644 --- a/src/omnplay.h +++ b/src/omnplay.h @@ -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 }; diff --git a/src/playlist.c b/src/playlist.c index 35c639f..1a4f207 100644 --- a/src/playlist.c +++ b/src/playlist.c @@ -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); } diff --git a/src/ui.c b/src/ui.c index bea64e6..c8912db 100644 --- 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; }; }; -- 1.7.4.4