VLCLocalNetworkServiceBrowserMediaDiscoverer.m 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. /*****************************************************************************
  2. * VLCLocalNetworkServiceBrowserMediaDiscoverer.m
  3. * VLC for iOS
  4. *****************************************************************************
  5. * Copyright (c) 2015 VideoLAN. All rights reserved.
  6. * $Id$
  7. *
  8. * Authors: Tobias Conradi <videolan # tobias-conradi.de>
  9. *
  10. * Refer to the COPYING file of the official project for license.
  11. *****************************************************************************/
  12. #import "VLCLocalNetworkServiceBrowserMediaDiscoverer.h"
  13. @interface VLCLocalNetworkServiceBrowserMediaDiscoverer () <VLCMediaListDelegate>
  14. @end
  15. @implementation VLCLocalNetworkServiceBrowserMediaDiscoverer
  16. @synthesize name = _name;
  17. - (instancetype)initWithName:(NSString *)name serviceServiceName:(NSString *)serviceName
  18. {
  19. self = [super init];
  20. if (self) {
  21. _name = name;
  22. _serviceName = serviceName;
  23. _mediaDiscoverer = [[VLCMediaDiscoverer alloc] initWithName:serviceName];
  24. _mediaDiscoverer.discoveredMedia.delegate = self;
  25. }
  26. return self;
  27. }
  28. - (void)startDiscovery
  29. {
  30. [self.mediaDiscoverer startDiscoverer];
  31. }
  32. - (void)stopDiscovery
  33. {
  34. [self.mediaDiscoverer stopDiscoverer];
  35. }
  36. - (NSUInteger)numberOfItems {
  37. return self.mediaDiscoverer.discoveredMedia.count;
  38. }
  39. - (id<VLCLocalNetworkService>)networkServiceForIndex:(NSUInteger)index {
  40. VLCMedia *media = [self.mediaDiscoverer.discoveredMedia mediaAtIndex:index];
  41. return [[VLCLocalNetworkServiceVLCMedia alloc] initWithMediaItem:media];
  42. }
  43. #pragma mark - VLCMediaListDelegate
  44. - (void)mediaList:(VLCMediaList *)aMediaList mediaAdded:(VLCMedia *)media atIndex:(NSInteger)index
  45. {
  46. [self.delegate localNetworkServiceBrowserDidUpdateServices:self];
  47. }
  48. - (void)mediaList:(VLCMediaList *)aMediaList mediaRemovedAtIndex:(NSInteger)index
  49. {
  50. [self.delegate localNetworkServiceBrowserDidUpdateServices:self];
  51. }
  52. @end
  53. #pragma mark - service specific subclasses
  54. @implementation VLCLocalNetworkServiceBrowserSAP
  55. - (instancetype)init {
  56. return [super initWithName:@"SAP"
  57. serviceServiceName:@"sap"];
  58. }
  59. - (id<VLCLocalNetworkService>)networkServiceForIndex:(NSUInteger)index {
  60. VLCMedia *media = [self.mediaDiscoverer.discoveredMedia mediaAtIndex:index];
  61. return [[VLCLocalNetworkServiceSAP alloc] initWithMediaItem:media];
  62. }
  63. @end
  64. @implementation VLCLocalNetworkServiceBrowserDSM
  65. - (instancetype)init {
  66. return [super initWithName:NSLocalizedString(@"SMB_CIFS_FILE_SERVERS", nil)
  67. serviceServiceName:@"dsm"];
  68. }
  69. - (id<VLCLocalNetworkService>)networkServiceForIndex:(NSUInteger)index {
  70. VLCMedia *media = [self.mediaDiscoverer.discoveredMedia mediaAtIndex:index];
  71. return [[VLCLocalNetworkServiceDSM alloc] initWithMediaItem:media];
  72. }
  73. @end