gstreamer/playback/player/ios/GstPlay/LibraryViewController.m
Stephan Hesse 4a62c09504 ios playback: introduce macro to enable photos/ library
Until now the photo library integration is broken (that API was
deprecated by Apple) and the iTunes integration is better to have
optional to put our test files in the forefront (and have better way to
browse large iTunes libs).
2018-05-04 14:22:23 +02:00

144 lines
4.4 KiB
Objective-C

#import "LibraryViewController.h"
#import "VideoViewController.h"
#import <AssetsLibrary/AssetsLibrary.h>
#define ENABLE_IOS_LIBRARY false
@interface LibraryViewController ()
@end
@implementation LibraryViewController
- (void)viewDidLoad
{
[super viewDidLoad];
[super setTitle:@"Library"];
[self refreshMediaItems];
}
- (IBAction)refresh:(id)sender
{
[self refreshMediaItems];
[self.tableView reloadData];
}
static NSString *CellIdentifier = @"CellIdentifier";
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 3;
}
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
switch (section)
{
case 0: return @"Photo library";
case 1: return @"iTunes file sharing";
default: return @"Online files";
}
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
switch (section) {
case 0:
return [self->libraryEntries count];
case 1:
return [self->mediaEntries count];
case 2:
return [self->onlineEntries count];
default:
return 0;
}
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
// Configure Cell
UILabel *title = (UILabel *)[cell.contentView viewWithTag:10];
UILabel *subtitle = (UILabel *)[cell.contentView viewWithTag:11];
switch (indexPath.section) {
case 0: subtitle.text = [self->libraryEntries objectAtIndex:indexPath.item];
break;
case 1: subtitle.text = [self->mediaEntries objectAtIndex:indexPath.item];
break;
case 2: subtitle.text = [self->onlineEntries objectAtIndex:indexPath.item];
break;
default:
break;
}
NSArray *components = [subtitle.text pathComponents];
title.text = components.lastObject;
return cell;
}
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
return NO;
}
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
if ([segue.identifier isEqualToString:@"playVideo"]) {
NSIndexPath *indexPath = [self.tableView indexPathForSelectedRow];
VideoViewController *destViewController = segue.destinationViewController;
UITableViewCell *cell = [[self tableView] cellForRowAtIndexPath:indexPath];
UILabel *label = (UILabel *)[cell.contentView viewWithTag:10];
destViewController.title = label.text;
label = (UILabel *)[cell.contentView viewWithTag:11];
destViewController.uri = label.text;
}
}
- (void)refreshMediaItems {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSAllDomainsMask, YES);
#if ENABLE_IOS_LIBRARY
NSString *docsPath = [paths objectAtIndex:0];
NSMutableArray *entries;
/* Entries from the Photo Library */
entries = [[NSMutableArray alloc] init];
ALAssetsLibrary *library = [[ALAssetsLibrary alloc] init];
[library enumerateGroupsWithTypes:ALAssetsGroupAll
usingBlock:^(ALAssetsGroup *group, BOOL *stop)
{
if (group) {
[group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOL *stop)
{
if(result) {
[entries addObject:[NSString stringWithFormat:@"%@",[result valueForProperty:ALAssetPropertyAssetURL]]];
*stop = NO;
}
}];
} else {
[self.tableView reloadData];
}
}
failureBlock:^(NSError *error)
{
NSLog(@"ERROR");
}
];
self->libraryEntries = entries;
/* Retrieve entries from iTunes file sharing */
entries = [[NSMutableArray alloc] init];
for (NSString *e in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:docsPath error:nil])
{
[entries addObject:[NSString stringWithFormat:@"file://%@/%@", docsPath, e]];
}
self->mediaEntries = entries;
#endif
self->onlineEntries = [NSArray arrayWithContentsOfURL:[[NSBundle mainBundle] URLForResource:@"OnlineMedia" withExtension:@"plist"]];
}
@end