mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-14 13:21:28 +00:00
4a62c09504
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).
144 lines
4.4 KiB
Objective-C
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
|