Commit 1f52d6ea authored by Pierre d'Herbemont's avatar Pierre d'Herbemont

VLCMediaListAspect.m: Handle WillAdd/Added WillDelete/Deleted events.

parent f047a976
...@@ -41,13 +41,38 @@ ...@@ -41,13 +41,38 @@
{ {
return [self count]; return [self count];
} }
- (id) objectInMediaAtIndex:(int)i - (id) objectInMediaAtIndex:(int)i
{ {
return [self mediaAtIndex:i]; return [self mediaAtIndex:i];
} }
@end @end
/* libvlc event callback */
static void HandleMediaListViewItemAdded(const libvlc_event_t *event, void *user_data)
{
id self = user_data;
int index = event->u.media_list_view_item_added.index;
[self didChange:NSKeyValueChangeInsertion valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
}
static void HandleMediaListViewWillAddItem(const libvlc_event_t *event, void *user_data)
{
id self = user_data;
int index = event->u.media_list_view_will_add_item.index;
[self willChange:NSKeyValueChangeInsertion valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
}
static void HandleMediaListViewItemDeleted( const libvlc_event_t * event, void * user_data)
{
id self = user_data;
int index = event->u.media_list_view_will_add_item.index;
[self didChange:NSKeyValueChangeRemoval valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
}
static void HandleMediaListViewWillDeleteItem(const libvlc_event_t *event, void *user_data)
{
id self = user_data;
int index = event->u.media_list_view_will_add_item.index;
[self willChange:NSKeyValueChangeRemoval valuesAtIndexes:[NSIndexSet indexSetWithIndex:index] forKey:@"Media"];
}
@implementation VLCMediaListAspect @implementation VLCMediaListAspect
- (void)dealloc - (void)dealloc
{ {
...@@ -105,7 +130,18 @@ ...@@ -105,7 +130,18 @@
@implementation VLCMediaListAspect (Private) @implementation VLCMediaListAspect (Private)
- (void)initInternalMediaListView - (void)initInternalMediaListView
{ {
libvlc_exception_t e;
libvlc_exception_init( &e );
libvlc_event_manager_t *p_em = libvlc_media_list_event_manager( p_mlv, &e );
/* Add internal callback */ /* Add internal callback */
libvlc_event_attach( p_em, libvlc_MediaListViewItemAdded, HandleMediaListViewItemAdded, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewWillAddItem, HandleMediaListViewWillAddItem, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewItemDeleted, HandleMediaListViewItemDeleted, self, &e );
libvlc_event_attach( p_em, libvlc_MediaListViewWillDeleteItem, HandleMediaListViewWillDeleteItem, self, &e );
quit_on_exception( &e );
} }
@end @end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment