Browse Source

discoverer: add delegation protocol

Felix Paul Kühne 10 years ago
parent
commit
faa7b44a19
2 changed files with 23 additions and 0 deletions
  1. 13 0
      Headers/Public/VLCMediaDiscoverer.h
  2. 10 0
      Sources/VLCMediaDiscoverer.m

+ 13 - 0
Headers/Public/VLCMediaDiscoverer.h

@@ -26,12 +26,25 @@
 #import "VLCMediaList.h"
 
 @class VLCMediaList;
+@class VLCMediaDiscoverer;
 
 /**
  * TODO: Documentation VLCMediaDiscoverer
  */
+
+@protocol VLCMediaDiscovererDelegate <NSObject>
+
+@optional
+
+- (void)discovererStarted:(VLCMediaDiscoverer *)theDiscoverer;
+- (void)discovererStopped:(VLCMediaDiscoverer *)theDiscoverer;
+
+@end
+
 @interface VLCMediaDiscoverer : NSObject
 
+@property (weak, readwrite) id<VLCMediaDiscovererDelegate> delegate;
+
 /**
  * Maintains a list of available media discoverers.  This list is populated as new media
  * discoverers are created.

+ 10 - 0
Sources/VLCMediaDiscoverer.m

@@ -172,6 +172,11 @@ static void HandleMediaDiscovererEnded( const libvlc_event_t *event, void *user_
     [self willChangeValueForKey:@"running"];
     _running = YES;
     [self didChangeValueForKey:@"running"];
+
+    if (self.delegate) {
+        if ([self.delegate respondsToSelector:@selector(discovererStarted:)])
+            [self.delegate discovererStarted:self];
+    }
 }
 
 - (void)_mediaDiscovererEnded
@@ -179,5 +184,10 @@ static void HandleMediaDiscovererEnded( const libvlc_event_t *event, void *user_
     [self willChangeValueForKey:@"running"];
     _running = NO;
     [self didChangeValueForKey:@"running"];
+
+    if (self.delegate) {
+        if ([self.delegate respondsToSelector:@selector(discovererStopped:)])
+            [self.delegate discovererStopped:self];
+    }
 }
 @end