瀏覽代碼

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.
Felix Paul Kühne 11 年之前
父節點
當前提交
f11f96b551

+ 3 - 0
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;

+ 32 - 0
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

+ 2 - 10
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

+ 1 - 8
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]];
     }
 }
 

+ 1 - 1
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

+ 1 - 1
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

+ 0 - 3
AspenProject/VLCPlaylistViewController.h

@@ -18,18 +18,15 @@ typedef enum {
     VLCLibraryModeAllSeries = 2
 } VLCLibraryMode;
 
-@class VLCMovieViewController;
 @class EmptyLibraryView;
 
 @interface VLCPlaylistViewController : UIViewController <UITabBarDelegate, UIPopoverControllerDelegate>
 
-@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;

+ 2 - 24
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;