NewsBlur/media/ios/Classes/StoryDetailContainerViewController.m
2012-07-23 15:27:20 -07:00

155 lines
5.4 KiB
Objective-C

//
// StoryDetailContainerViewController.m
// NewsBlur
//
// Created by Roy Yang on 7/23/12.
// Copyright (c) 2012 NewsBlur. All rights reserved.
//
#import "StoryDetailContainerViewController.h"
#import "NewsBlurAppDelegate.h"
#import "StoryDetailViewController.h"
#import "MGSplitViewController.h"
#import "FontSettingsViewController.h"
@implementation StoryDetailContainerViewController
@synthesize appDelegate;
@synthesize toggleViewButton;
@synthesize popoverController;
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
[self.view addSubview:appDelegate.storyDetailViewController.view];
[self addChildViewController:appDelegate.storyDetailViewController];
self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
UIBarButtonItem *originalButton = [[UIBarButtonItem alloc]
initWithTitle:@"Original"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(showOriginalSubview:)
];
UIBarButtonItem *fontSettingsButton = [[UIBarButtonItem alloc]
initWithTitle:@"Aa"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleFontSize:)
];
UIImage *slide = [UIImage imageNamed: appDelegate.splitStoryController.isShowingMaster ? @"slide_left.png" : @"slide_right.png"];
UIBarButtonItem *toggleButton = [[UIBarButtonItem alloc]
initWithImage:slide
style:UIBarButtonItemStylePlain
target:self
action:@selector(toggleView)];
self.toggleViewButton = toggleButton;
self.navigationItem.hidesBackButton = YES;
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:originalButton, fontSettingsButton, nil];
}
- (void)viewDidUnload {
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (UIInterfaceOrientationIsPortrait(orientation)) {
self.navigationItem.leftBarButtonItem = self.toggleViewButton;
} else {
self.navigationItem.leftBarButtonItem = nil;
}
}
- (void)viewDidDisappear:(BOOL)animated {
[popoverController dismissPopoverAnimated:YES];
[appDelegate hideShareView:YES];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation {
// copy the title from the master view to detail view
if (appDelegate.splitStoryController.isShowingMaster) {
self.navigationItem.titleView = nil;
} else {
UIView *titleLabel = [appDelegate makeFeedTitle:appDelegate.activeFeed];
self.navigationItem.titleView = titleLabel;
}
if (UIInterfaceOrientationIsPortrait(fromInterfaceOrientation)) {
self.navigationItem.leftBarButtonItem = nil;
} else {
self.navigationItem.leftBarButtonItem = self.toggleViewButton;
}
[appDelegate adjustStoryDetailWebView];
}
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
[appDelegate slideOutStoryTitlesWithAnimation:NO];
}
}
- (IBAction)toggleFontSize:(id)sender {
if (popoverController == nil) {
popoverController = [[UIPopoverController alloc]
initWithContentViewController:appDelegate.fontSettingsViewController];
popoverController.delegate = self;
} else {
if (popoverController.isPopoverVisible) {
[popoverController dismissPopoverAnimated:YES];
return;
}
[popoverController setContentViewController:appDelegate.fontSettingsViewController];
}
[popoverController setPopoverContentSize:CGSizeMake(274.0, 130.0)];
[popoverController presentPopoverFromBarButtonItem:sender
permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
- (void)showOriginalSubview:(id)sender {
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
objectForKey:@"story_permalink"]];
[appDelegate showOriginalStory:url];
}
#pragma mark -
#pragma mark Controlling Views
- (void)toggleView {
if (appDelegate.splitStoryController.isShowingMaster){
[appDelegate animateHidingMasterView];
} else {
[appDelegate animateShowingMasterView];
}
}
@end