Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 44d2f1caa9
Fetching contributors…

Cannot retrieve contributors at this time

file 102 lines (83 sloc) 4.526 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
/*
* This project constitutes a work of the United States Government and is
* not subject to domestic copyright protection under 17 USC § 105.
*
* However, because the project utilizes code licensed from contributors
* and other third parties, it therefore is licensed under the MIT
* License. http://opensource.org/licenses/mit-license.php. Under that
* license, permission is granted free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the conditions that any appropriate copyright notices and this
* permission notice are included in all copies or substantial portions
* of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/

//
// UIViewController+WHFeedItemPresentation.m
// WhiteHouseApp
//
//

#import "UIViewController+WHFeedItemPresentation.h"

#import <MediaPlayer/MediaPlayer.h>
#import "WHYouTubePlayerViewController.h"
#import "WHArticleViewController.h"
#import "WHFeedItem.h"

@implementation UIViewController (WHFeedItemPresentation)


- (NSString *)trackingPathComponent
{
    return [@"/" stringByAppendingString:self.title];
}


- (void)displayFeedItem:(WHFeedItem *)item
{
    [[GANTracker sharedTracker] trackPageview:[NSString stringWithFormat:@"%@/%@", [self trackingPathComponent], [item trackingPathCompontent]] withError:nil];
    
    if (item.enclosureURL) {
        NSString *host = item.enclosureURL.host;
        if ([host rangeOfString:@"youtube"].location != NSNotFound || [host rangeOfString:@"youtu.be"].location != NSNotFound) {
            WHYouTubePlayerViewController *videoPlayer = [[WHYouTubePlayerViewController alloc] initWithVideoURL:item.enclosureURL];
            [self.navigationController pushViewController:videoPlayer animated:YES];
        } else {
            MPMoviePlayerViewController *player = [[MPMoviePlayerViewController alloc] initWithContentURL:item.enclosureURL];
            [self presentMoviePlayerViewControllerAnimated:player];
            [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(movieFinished:) name:MPMoviePlayerPlaybackDidFinishNotification object:player.moviePlayer];
        }
    } else {
        WHArticleViewController *web = [[WHArticleViewController alloc] initWithNibName:nil bundle:nil];
        web.feedItem = item;
        [self.navigationController pushViewController:web animated:YES];
    }
}


#pragma mark - movie player methods


- (void)unregister
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
}


- (void)movieFinished:(NSNotification *)notification
{
    DebugLog(@"movie finished: %@", notification.userInfo);
    NSInteger reason = [[notification.userInfo objectForKey:MPMoviePlayerPlaybackDidFinishReasonUserInfoKey] intValue];
    if (reason == MPMovieFinishReasonPlaybackError) {
        NSError *error = [notification.userInfo objectForKey:@"error"];
        
        NSString *errorTitle = NSLocalizedString(@"VideoErrorTitle", @"Title for video playback error alert");
        NSString *localizedErrorMessage = NSLocalizedString(@"VideoErrorMessage", @"Error shown when video fails to play");
        NSString *errorMessage = [NSString stringWithFormat:@"%@\n\n (%@)", localizedErrorMessage, [error localizedDescription]];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:errorTitle
                                                        message:errorMessage
                                                       delegate:nil
                                              cancelButtonTitle:@"OK"
                                              otherButtonTitles:nil];
        [alert show];
    }
    
    [self performSelector:@selector(unregister) withObject:nil afterDelay:0.1];
}


@end
Something went wrong with that request. Please try again.