123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /*****************************************************************************
- * VLCPlaybackController+MediaLibrary.m
- * VLC for iOS
- *****************************************************************************
- * Copyright (c) 2015 VideoLAN. All rights reserved.
- * $Id$
- *
- * Authors: Tobias Conradi <videolan # tobias-conradi.de>
- *
- * Refer to the COPYING file of the official project for license.
- *****************************************************************************/
- #import "VLCPlaybackController+MediaLibrary.h"
- #import <MediaLibraryKit/MediaLibraryKit.h>
- #import <CoreData/CoreData.h>
- @implementation VLCPlaybackController (MediaLibrary)
- - (void)playMediaLibraryObject:(NSManagedObject *)mediaObject
- {
- if ([mediaObject isKindOfClass:[MLFile class]]) {
- [self configureWithFile:(MLFile *)mediaObject];
- }
- else if ([mediaObject isKindOfClass:[MLAlbumTrack class]]) {
- [self configureWithAlbumTrack:(MLAlbumTrack *)mediaObject];
- }
- else if ([mediaObject isKindOfClass:[MLShowEpisode class]])
- [self configureWithSingleFile:[(MLShowEpisode*)mediaObject files].anyObject];
- [self startPlayback];
- }
- - (void)configureWithFile:(MLFile *)file
- {
- if (file.labels.count == 0) {
- [self configureWithSingleFile:file];
- } else {
- MLLabel *folder = [file.labels anyObject];
- NSArray *files = [folder sortedFolderItems];
- int index = (int)[files indexOfObject:file];
- [self configureMediaListWithFiles:files indexToPlay:index];
- }
- }
- - (void)configureWithSingleFile:(MLFile *)file
- {
- [file setUnread:@(NO)];
- self.fileFromMediaLibrary = file;
- }
- - (void)configureWithAlbumTrack:(MLAlbumTrack *)albumTrack
- {
- NSArray *tracks = [[albumTrack album] sortedTracks];
- NSMutableArray *files = [NSMutableArray arrayWithCapacity:tracks.count];
- for (MLAlbumTrack *track in tracks) {
- MLFile *file = track.files.anyObject;
- [files addObject:file];
- }
- int index = (int)[tracks indexOfObject:albumTrack];
- [self configureMediaListWithFiles:files indexToPlay:index];
- }
- - (void)configureMediaListWithFiles:(NSArray *)files indexToPlay:(int)index
- {
- VLCMediaList *list = [[VLCMediaList alloc] init];
- for (MLFile *file in files.reverseObjectEnumerator) {
- [list addMedia:[VLCMedia mediaWithURL:file.url]];
- }
- [self configureMediaList:list atIndex:index];
- }
- - (void)configureMediaList:(VLCMediaList *)list atIndex:(int)index
- {
- self.mediaList = list;
- self.itemInMediaListToBePlayedFirst = index;
- self.pathToExternalSubtitlesFile = nil;
- }
- @end
|