]> git.sesse.net Git - vlc/commitdiff
src/control/media_list_view.c: Facilities to send WillAdd/Added WillDelete/Deleted...
authorPierre d'Herbemont <pdherbemont@videolan.org>
Tue, 20 Nov 2007 15:31:08 +0000 (15:31 +0000)
committerPierre d'Herbemont <pdherbemont@videolan.org>
Tue, 20 Nov 2007 15:31:08 +0000 (15:31 +0000)
include/vlc/libvlc_structures.h
src/control/libvlc_internal.h
src/control/media_list_view.c

index 24698bd5e851c4e6f773dd0f659d5f90080f6813..8438dd0a35bebf2ed880b51a971b22d836988e5f 100644 (file)
@@ -310,6 +310,11 @@ typedef enum libvlc_event_type_t {
     libvlc_MediaListItemDeleted,
     libvlc_MediaListWillDeleteItem,
 
+    libvlc_MediaListViewItemAdded,
+    libvlc_MediaListViewWillAddItem,
+    libvlc_MediaListViewItemDeleted,
+    libvlc_MediaListViewWillDeleteItem,
+
     libvlc_MediaListPlayerPlayed,
     libvlc_MediaListPlayerNextItemSet,
     libvlc_MediaListPlayerStopped,
@@ -378,6 +383,28 @@ typedef struct libvlc_event_t
             libvlc_media_descriptor_t * item;
             int index;
         } media_list_will_delete_item;
+
+        /* media list view */
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_item_added;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_will_add_item;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_item_deleted;
+        struct
+        {
+            libvlc_media_descriptor_t * item;
+            int index;
+        } media_list_view_will_delete_item;
     } u;
 } libvlc_event_t;
 
index 85a059a9f5e52b127556b3889cf7c3d0b7923d45..3acefc0739b0c96bfb15d4f894df730eef7d5045 100644 (file)
@@ -307,6 +307,19 @@ VLC_EXPORT ( void, libvlc_media_list_view_set_ml_notification_callback, (
                 void (*item_added)(const libvlc_event_t *, libvlc_media_list_view_t *),
                 void (*item_removed)(const libvlc_event_t *, libvlc_media_list_view_t *) ));
 
+VLC_EXPORT ( void, libvlc_media_list_view_will_delete_item, ( libvlc_media_list_view_t * p_mlv,
+                                                              libvlc_media_descriptor_t * p_item,
+                                                              int index ));
+VLC_EXPORT ( void, libvlc_media_list_view_item_deleted, ( libvlc_media_list_view_t * p_mlv,
+                                                          libvlc_media_descriptor_t * p_item,
+                                                          int index ));
+VLC_EXPORT ( void, libvlc_media_list_view_will_add_item, ( libvlc_media_list_view_t * p_mlv,
+                                                           libvlc_media_descriptor_t * p_item,
+                                                           int index ));
+VLC_EXPORT ( void, libvlc_media_list_view_item_added, ( libvlc_media_list_view_t * p_mlv,
+                                                        libvlc_media_descriptor_t * p_item,
+                                                        int index ));
+
 /* Events */
 VLC_EXPORT (libvlc_event_manager_t *, libvlc_event_manager_new, ( void * p_obj, libvlc_instance_t * p_libvlc_inst, libvlc_exception_t *p_e ) );
 
index 35ce6a6bd8d60f8f28de3ab8c18c37830e4a9e25..996863129dc4f78886cd0b0d8e7bbb639004ea3e 100644 (file)
@@ -81,6 +81,9 @@ media_list_item_removed( const libvlc_event_t * p_event, void * p_user_data )
 /*
  * LibVLC Internal functions
  */
+/**************************************************************************
+ *       libvlc_media_list_view_set_ml_notification_callback (Internal)
+ **************************************************************************/
 void
 libvlc_media_list_view_set_ml_notification_callback(
                 libvlc_media_list_view_t * p_mlv,
@@ -97,6 +100,86 @@ libvlc_media_list_view_set_ml_notification_callback(
                          media_list_item_removed, p_mlv, NULL );
 }
 
+/**************************************************************************
+ *       libvlc_media_list_view_notify_deletion (Internal)
+ **************************************************************************/
+void
+libvlc_media_list_view_will_delete_item(
+                libvlc_media_list_view_t * p_mlv,
+                libvlc_media_descriptor_t * p_item,
+                int index )
+{
+    libvlc_event_t event;
+
+    /* Construct the event */
+    event.type = libvlc_MediaListViewWillDeleteItem;
+    event.u.media_list_view_will_delete_item.item = p_item;
+    event.u.media_list_view_will_delete_item.index = index;
+
+    /* Send the event */
+    libvlc_event_send( p_mlv->p_event_manager, &event );
+}
+
+/**************************************************************************
+ *       libvlc_media_list_view_item_deleted (Internal)
+ **************************************************************************/
+void
+libvlc_media_list_view_item_deleted(
+                libvlc_media_list_view_t * p_mlv,
+                libvlc_media_descriptor_t * p_item,
+                int index )
+{
+    libvlc_event_t event;
+
+    /* Construct the event */
+    event.type = libvlc_MediaListViewItemDeleted;
+    event.u.media_list_view_item_deleted.item = p_item;
+    event.u.media_list_view_item_deleted.index = index;
+
+    /* Send the event */
+    libvlc_event_send( p_mlv->p_event_manager, &event );
+}
+
+/**************************************************************************
+ *       libvlc_media_list_view_will_add_item (Internal)
+ **************************************************************************/
+void
+libvlc_media_list_view_will_add_item(
+                libvlc_media_list_view_t * p_mlv,
+                libvlc_media_descriptor_t * p_item,
+                int index )
+{
+    libvlc_event_t event;
+
+    /* Construct the event */
+    event.type = libvlc_MediaListViewWillAddItem;
+    event.u.media_list_view_will_add_item.item = p_item;
+    event.u.media_list_view_will_add_item.index = index;
+
+    /* Send the event */
+    libvlc_event_send( p_mlv->p_event_manager, &event );
+}
+
+/**************************************************************************
+ *       libvlc_media_list_view_item_added (Internal)
+ **************************************************************************/
+void
+libvlc_media_list_view_item_added(
+                libvlc_media_list_view_t * p_mlv,
+                libvlc_media_descriptor_t * p_item,
+                int index )
+{
+    libvlc_event_t event;
+
+    /* Construct the event */
+    event.type = libvlc_MediaListViewItemAdded;
+    event.u.media_list_view_item_added.item = p_item;
+    event.u.media_list_view_item_added.index = index;
+
+    /* Send the event */
+    libvlc_event_send( p_mlv->p_event_manager, &event );
+}
+
 /**************************************************************************
  *       libvlc_media_list_view_new (Internal)
  **************************************************************************/
@@ -171,14 +254,14 @@ libvlc_media_list_view_release( libvlc_media_list_view_t * p_mlv )
     {
         libvlc_event_detach( p_mlv->p_mlist->p_event_manager,
                             libvlc_MediaListItemAdded,
-                            p_mlv->pf_ml_item_added, p_mlv, NULL );
+                            (void (*)(const libvlc_event_t *, void*))p_mlv->pf_ml_item_added, p_mlv, NULL );
         /* XXX: descend the whole tree and remove observer */
     }
     if( p_mlv->pf_ml_item_removed )
     {
         libvlc_event_detach( p_mlv->p_mlist->p_event_manager,
                             libvlc_MediaListItemDeleted,
-                            p_mlv->pf_ml_item_removed, p_mlv, NULL );
+                            (void (*)(const libvlc_event_t *, void*))p_mlv->pf_ml_item_removed, p_mlv, NULL );
         /* XXX: descend the whole tree and remove observer */
     }