From f11f96b5512b3ecc36888cb5349ea98064237f7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Paul=20K=C3=BChne?= Date: Sat, 26 Oct 2013 19:52:38 +0200 Subject: [PATCH] Move playback view controller handling etc. from the library view to the app delegate This makes a bit more sense, allows the removal of quite a few hacks and allows users of the local network tab to stay in their current directory instead of being thrown back to the media library. --- AspenProject/VLCAppDelegate.h | 3 ++ AspenProject/VLCAppDelegate.m | 32 +++++++++++++++++++ .../VLCLocalServerFolderListViewController.m | 12 ++----- .../VLCLocalServerListViewController.m | 9 +----- AspenProject/VLCMovieViewController.m | 2 +- .../VLCOpenNetworkStreamViewController.m | 2 +- AspenProject/VLCPlaylistViewController.h | 3 -- AspenProject/VLCPlaylistViewController.m | 26 ++------------- 8 files changed, 42 insertions(+), 47 deletions(-) diff --git a/AspenProject/VLCAppDelegate.h b/AspenProject/VLCAppDelegate.h index 98054b52..2c1806e8 100644 --- a/AspenProject/VLCAppDelegate.h +++ b/AspenProject/VLCAppDelegate.h @@ -22,6 +22,9 @@ - (void)disableIdleTimer; - (void)activateIdleTimer; +- (void)openMediaFromManagedObject:(NSManagedObject *)file; +- (void)openMovieFromURL:(NSURL *)url; + @property (nonatomic, readonly) VLCPlaylistViewController *playlistViewController; @property (nonatomic, readonly) VLCDropboxTableViewController *dropboxTableViewController; @property (nonatomic, readonly) VLCDownloadViewController *downloadViewController; diff --git a/AspenProject/VLCAppDelegate.m b/AspenProject/VLCAppDelegate.m index 2b209e78..210e2bec 100644 --- a/AspenProject/VLCAppDelegate.m +++ b/AspenProject/VLCAppDelegate.m @@ -27,6 +27,7 @@ VLCDropboxTableViewController *_dropboxTableViewController; VLCDownloadViewController *_downloadViewController; int _idleCounter; + VLCMovieViewController *_movieViewController; } @property (nonatomic) BOOL passcodeValidated; @@ -288,4 +289,35 @@ [UIApplication sharedApplication].idleTimerDisabled = NO; } +#pragma mark - playback view handling + +- (void)openMediaFromManagedObject:(NSManagedObject *)mediaObject +{ + if (!_movieViewController) + _movieViewController = [[VLCMovieViewController alloc] initWithNibName:nil bundle:nil]; + + if ([mediaObject isKindOfClass:[MLFile class]]) + _movieViewController.mediaItem = (MLFile *)mediaObject; + else if ([mediaObject isKindOfClass:[MLAlbumTrack class]]) + _movieViewController.mediaItem = [(MLAlbumTrack*)mediaObject files].anyObject; + else if ([mediaObject isKindOfClass:[MLShowEpisode class]]) + _movieViewController.mediaItem = [(MLShowEpisode*)mediaObject files].anyObject; + + UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:_movieViewController]; + navCon.modalPresentationStyle = UIModalPresentationFullScreen; + [self.window.rootViewController presentViewController:navCon animated:YES completion:nil]; +} + +- (void)openMovieFromURL:(NSURL *)url +{ + if (!_movieViewController) + _movieViewController = [[VLCMovieViewController alloc] initWithNibName:nil bundle:nil]; + + _movieViewController.url = url; + + UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:_movieViewController]; + navCon.modalPresentationStyle = UIModalPresentationFullScreen; + [self.window.rootViewController presentViewController:navCon animated:YES completion:nil]; +} + @end diff --git a/AspenProject/VLCLocalServerFolderListViewController.m b/AspenProject/VLCLocalServerFolderListViewController.m index d1920181..4cd64008 100644 --- a/AspenProject/VLCLocalServerFolderListViewController.m +++ b/AspenProject/VLCLocalServerFolderListViewController.m @@ -217,14 +217,7 @@ if (itemURL && ([itemURL.scheme isEqualToString:@"http"] || [itemURL.scheme isEqualToString:@"rtsp"] || [itemURL.scheme isEqualToString:@"rtp"] || [itemURL.scheme isEqualToString:@"mms"] || [itemURL.scheme isEqualToString:@"mmsh"])) { VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate; - - UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:appDelegate.playlistViewController]; - [navController loadTheme]; - - appDelegate.revealController.contentViewController = navController; - [appDelegate.revealController toggleSidebar:NO duration:kGHRevealSidebarDefaultAnimationDuration]; - - [appDelegate.playlistViewController performSelector:@selector(openMovieFromURL:) withObject:itemURL afterDelay:kGHRevealSidebarDefaultAnimationDuration]; + [appDelegate openMovieFromURL:itemURL]; } } } else if (_serverType == kVLCServerTypeFTP) { @@ -350,8 +343,7 @@ - (void)_openURLStringAndDismiss:(NSString *)url { VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate; - [appDelegate.menuViewController selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; - [appDelegate.playlistViewController performSelector:@selector(openMovieFromURL:) withObject:[NSURL URLWithString:url] afterDelay:kGHRevealSidebarDefaultAnimationDuration]; + [appDelegate openMovieFromURL:[NSURL URLWithString:url]]; } @end diff --git a/AspenProject/VLCLocalServerListViewController.m b/AspenProject/VLCLocalServerListViewController.m index 09fc5277..6ceddd82 100644 --- a/AspenProject/VLCLocalServerListViewController.m +++ b/AspenProject/VLCLocalServerListViewController.m @@ -241,14 +241,7 @@ _loginViewController.serverAddressField.text = @""; } else if (section == 2) { VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate; - - UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:appDelegate.playlistViewController]; - [navController loadTheme]; - - appDelegate.revealController.contentViewController = navController; - [appDelegate.revealController toggleSidebar:NO duration:kGHRevealSidebarDefaultAnimationDuration]; - - [appDelegate.playlistViewController performSelector:@selector(openMovieFromURL:) withObject:[[_sapDiscoverer.discoveredMedia mediaAtIndex:row] url] afterDelay:kGHRevealSidebarDefaultAnimationDuration]; + [appDelegate openMovieFromURL:[[_sapDiscoverer.discoveredMedia mediaAtIndex:row] url]]; } } diff --git a/AspenProject/VLCMovieViewController.m b/AspenProject/VLCMovieViewController.m index 24bfb29a..3a752aa6 100644 --- a/AspenProject/VLCMovieViewController.m +++ b/AspenProject/VLCMovieViewController.m @@ -674,7 +674,7 @@ - (IBAction)closePlayback:(id)sender { [self setControlsHidden:NO animated:NO]; - [self.navigationController popViewControllerAnimated:YES]; + [self.navigationController dismissViewControllerAnimated:YES completion:nil]; } - (IBAction)positionSliderAction:(UISlider *)sender diff --git a/AspenProject/VLCOpenNetworkStreamViewController.m b/AspenProject/VLCOpenNetworkStreamViewController.m index a556dce3..9745c0f9 100644 --- a/AspenProject/VLCOpenNetworkStreamViewController.m +++ b/AspenProject/VLCOpenNetworkStreamViewController.m @@ -174,7 +174,7 @@ { VLCAppDelegate* appDelegate = [UIApplication sharedApplication].delegate; [appDelegate.menuViewController selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionNone]; - [appDelegate.playlistViewController performSelector:@selector(openMovieFromURL:) withObject:[NSURL URLWithString:url] afterDelay:kGHRevealSidebarDefaultAnimationDuration]; + [appDelegate openMovieFromURL:[NSURL URLWithString:url]]; } #pragma mark - text view delegate diff --git a/AspenProject/VLCPlaylistViewController.h b/AspenProject/VLCPlaylistViewController.h index e4c2540a..a23bfad4 100644 --- a/AspenProject/VLCPlaylistViewController.h +++ b/AspenProject/VLCPlaylistViewController.h @@ -18,18 +18,15 @@ typedef enum { VLCLibraryModeAllSeries = 2 } VLCLibraryMode; -@class VLCMovieViewController; @class EmptyLibraryView; @interface VLCPlaylistViewController : UIViewController -@property (nonatomic, strong) VLCMovieViewController *movieViewController; @property (nonatomic, strong) UIViewController *menuViewController; - (IBAction)leftButtonAction:(id)sender; - (void)updateViewContents; -- (void)openMovieFromURL:(NSURL *)url; - (void)removeMediaObject:(MLFile *)mediaObject; - (void)setLibraryMode:(VLCLibraryMode)mode; diff --git a/AspenProject/VLCPlaylistViewController.m b/AspenProject/VLCPlaylistViewController.m index d4a669b2..674e51e7 100644 --- a/AspenProject/VLCPlaylistViewController.m +++ b/AspenProject/VLCPlaylistViewController.m @@ -179,19 +179,8 @@ [self.navigationItem.leftBarButtonItem setTitle:NSLocalizedString(@"LIBRARY_SERIES", @"")]; self.title = [(MLShow*)mediaObject name]; [self reloadViews]; - } else { - if (!self.movieViewController) - self.movieViewController = [[VLCMovieViewController alloc] initWithNibName:nil bundle:nil]; - - if ([mediaObject isKindOfClass:[MLFile class]]) - self.movieViewController.mediaItem = (MLFile *)mediaObject; - else if ([mediaObject isKindOfClass:[MLAlbumTrack class]]) - self.movieViewController.mediaItem = [(MLAlbumTrack*)mediaObject files].anyObject; - else if ([mediaObject isKindOfClass:[MLShowEpisode class]]) - self.movieViewController.mediaItem = [(MLShowEpisode*)mediaObject files].anyObject; - - [self.navigationController pushViewController:self.movieViewController animated:YES]; - } + } else + [(VLCAppDelegate*)[UIApplication sharedApplication].delegate openMediaFromManagedObject:mediaObject]; } - (void)removeMediaObject:(MLFile *)mediaObject @@ -472,17 +461,6 @@ #pragma mark - coin coin -- (void)openMovieFromURL:(NSURL *)url -{ - if (!self.movieViewController) - self.movieViewController = [[VLCMovieViewController alloc] initWithNibName:nil bundle:nil]; - - if (self.navigationController.topViewController != self.movieViewController) - [self.navigationController pushViewController:self.movieViewController animated:YES]; - - self.movieViewController.url = url; -} - - (void)setLibraryMode:(VLCLibraryMode)mode { _libraryMode = mode; -- GitLab