fix playlist closing
[omnplay] / src / omnplay.h
index cebab56..22e2dff 100644 (file)
@@ -20,6 +20,8 @@
 #ifndef OMNPLAY_H
 #define OMNPLAY_H
 
+#include <pthread.h>
+
 #ifdef __cplusplus
 extern "C"
 {
@@ -48,6 +50,11 @@ typedef enum control_buttons
     BUTTON_LIBRARY_ADD,
     BUTTON_LIBRARY_REFRESH,
 
+    BUTTON_LIBRARY_FIND,
+    BUTTON_LIBRARY_FIND_NEXT,
+
+    BUTTON_PLAYLIST_RELINK,
+
     BUTTON_LAST
 } control_buttons_t;
 
@@ -86,6 +93,8 @@ typedef enum playlist_item_type
 
 #define MAX_PLAYLIST_ITEMS      1024
 #define MAX_LIBRARY_ITEMS       10240
+#define PLAYLIST_ITEM_ERROR_LIB 1
+#define PLAYLIST_ITEM_ERROR_CUE 2
 
 typedef struct playlist_item
 {
@@ -97,6 +106,8 @@ typedef struct playlist_item
     playlist_item_type_t type;
     int omn_idx;
     int omn_offset;
+    int error;
+    int del;
 } playlist_item_t;
 
 #define MAX_PLAYERS 4
@@ -109,7 +120,7 @@ typedef struct omnplay_player
     char name[PATH_MAX];
     char host[PATH_MAX];
     void* handle;
-    pthread_t thread;
+    GThread* thread;
     GtkWidget *label_status, *label_state, *label_tc_cur, *label_tc_rem, *label_clip;
     struct omnplay_instance *app;
     int playlist_start;
@@ -122,6 +133,7 @@ typedef struct omnplay_instance
     GtkWidget *playlist_grid;
     GtkWidget *library_grid;
     GtkWidget *buttons[BUTTON_LAST + 1];
+    GtkWidget *status_label;
     struct
     {
         omnplay_player_t item[MAX_PLAYERS];
@@ -147,7 +159,16 @@ typedef struct omnplay_instance
         char filename[PATH_MAX];
         char whois[PATH_MAX];
         pthread_mutex_t lock;
+        GThread* refresh_thread;
+        GtkWidget *search;
+        int id_display_rate;
+        int id_display_idx;
     } library;
+    struct
+    {
+        playlist_item_t item[MAX_LIBRARY_ITEMS];
+        int count;
+    } clipboard;
 } omnplay_instance_t;
 
 omnplay_instance_t* omnplay_create(int argc, char** argv);
@@ -156,6 +177,7 @@ void omnplay_release(omnplay_instance_t* app);
 void omnplay_destroy(omnplay_instance_t* app);
 void omnplay_playlist_load(omnplay_instance_t* app);
 void omnplay_playlist_save(omnplay_instance_t* app);
+void omnplay_playlist_relink(omnplay_instance_t* app);
 void omnplay_playlist_draw(omnplay_instance_t* app);
 void omnplay_playlist_draw_item(omnplay_instance_t* app, int idx);
 void omnplay_playlist_draw_item_rem(omnplay_instance_t* app, int idx, char* rem);
@@ -169,7 +191,13 @@ int omnplay_get_content(omnplay_instance_t* app, playlist_item_t *items, int lim
 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);
+int omnplay_library_normalize_item(omnplay_instance_t* app, playlist_item_t* item);
+int omnplay_library_relink_item(omnplay_instance_t* app, playlist_item_t* item);
+playlist_item_t* omnplay_library_get_selected(omnplay_instance_t* app, int *count);
+void omnplay_playlist_normalize(omnplay_instance_t* app);
+void omnplay_library_search(omnplay_instance_t* app, int next);
+void omnplay_set_status(omnplay_instance_t* app, char* str);
+int* omnplay_selected_idxs_playlist(omnplay_instance_t* app);
 
 #ifdef __cplusplus
 };