diff --git a/media/iphone/Classes/NewsBlurAppDelegate.h b/media/iphone/Classes/NewsBlurAppDelegate.h index 7f1422f2d..2a1a76876 100644 --- a/media/iphone/Classes/NewsBlurAppDelegate.h +++ b/media/iphone/Classes/NewsBlurAppDelegate.h @@ -153,7 +153,7 @@ - (void)showDashboard; - (void)loadRiverFeedDetailView; - (void)loadStoryDetailView; -- (void)adjustStoryDetailWebView:(BOOL)init shouldCheckLayout:(BOOL)checkLayout; +- (void)adjustStoryDetailWebView; - (void)reloadFeedsView:(BOOL)showLoader; - (void)hideNavigationBar:(BOOL)animated; - (void)showNavigationBar:(BOOL)animated; diff --git a/media/iphone/Classes/NewsBlurAppDelegate.m b/media/iphone/Classes/NewsBlurAppDelegate.m index db93bef2c..4d60b3642 100644 --- a/media/iphone/Classes/NewsBlurAppDelegate.m +++ b/media/iphone/Classes/NewsBlurAppDelegate.m @@ -380,10 +380,33 @@ [feedDetailViewController fetchRiverPage:1 withCallback:nil]; } -- (void)adjustStoryDetailWebView:(BOOL)init shouldCheckLayout:(BOOL)checkLayout { +- (void)adjustStoryDetailWebView { if (!self.inStoryDetail) { return; } + + UIImage *slide; + + if (self.splitStoryController.isShowingMaster) { + slide = [[UIImage imageNamed: @"slide_left.png"] retain]; + + [self.storyDetailViewController.toggleViewButton setImage:slide]; + + self.splitStoryDetailViewController.navigationItem.titleView = nil; + } else { + slide = [[UIImage imageNamed: @"slide_right.png"] retain]; + [self.storyDetailViewController.toggleViewButton setImage:slide]; + + UIView *titleLabel = [self makeFeedTitle:self.activeFeed]; + if (splitStoryDetailViewController.navigationItem){ + splitStoryDetailViewController.navigationItem.titleView = titleLabel; + } + } + + int contentWidth = splitStoryDetailViewController.view.frame.size.width; + // set the styles inside the UIWebView + + [storyDetailViewController changeWebViewWidth:contentWidth]; if (UIInterfaceOrientationIsPortrait(splitStoryDetailViewController.interfaceOrientation)) { storyDetailViewController.view.frame = CGRectMake(0, @@ -397,13 +420,14 @@ splitStoryDetailViewController.view.frame.size.height); } - int contentWidth = splitStoryDetailViewController.view.frame.size.width; - // set the styles inside the UIWebView - - [storyDetailViewController changeWebViewWidth:contentWidth]; + [slide release]; } - (void)animateHidingMasterView { + if (!self.splitStoryController.isShowingMaster) { + return; + } + int width = storyDetailViewController.view.frame.size.width + 291; [UIView animateWithDuration:0.1 animations:^{ storyDetailViewController.view.frame = CGRectMake(0, @@ -411,10 +435,16 @@ width, storyDetailViewController.view.frame.size.height); }]; - [storyDetailViewController changeWebViewWidth:width]; + + [self.splitStoryController toggleMasterView:nil]; + [self performSelector:@selector(adjustStoryDetailWebView) withObject:self afterDelay:0.1 ]; } - (void)animateShowingMasterView { + if (self.splitStoryController.isShowingMaster) { + return; + } + int width = storyDetailViewController.view.frame.size.width - 291; [UIView animateWithDuration:0.50 animations:^{ storyDetailViewController.view.frame = CGRectMake(0, @@ -422,8 +452,9 @@ width, storyDetailViewController.view.frame.size.height); }]; - [storyDetailViewController changeWebViewWidth:width]; + [self.splitStoryController toggleMasterView:nil]; + [self performSelector:@selector(adjustStoryDetailWebView) withObject:self afterDelay:.1 ]; } - (void)dragFeedDetailView:(float)y { @@ -440,7 +471,7 @@ [userPreferences setInteger:self.feedDetailPortraitYCoordinate forKey:@"feedDetailPortraitYCoordinate"]; [userPreferences synchronize]; - [self adjustStoryDetailWebView:NO shouldCheckLayout:YES]; + [self adjustStoryDetailWebView]; } } @@ -467,7 +498,7 @@ } [subviews release]; - [self adjustStoryDetailWebView:NO shouldCheckLayout:NO]; + [self adjustStoryDetailWebView]; storyDetailViewController.view.tag = STORY_DETAIL_VIEW_TAG; [splitStoryDetailViewController.view addSubview:storyDetailViewController.view]; diff --git a/media/iphone/Classes/StoryDetailViewController.h b/media/iphone/Classes/StoryDetailViewController.h index e2413d490..123f2527c 100644 --- a/media/iphone/Classes/StoryDetailViewController.h +++ b/media/iphone/Classes/StoryDetailViewController.h @@ -21,6 +21,7 @@ UIBarButtonItem *buttonPrevious; UIBarButtonItem *buttonNext; UIBarButtonItem *activity; + UIBarButtonItem *toggleViewButton; UIActivityIndicatorView *loadingIndicator; IBOutlet UIPopoverController *popoverController; } @@ -34,6 +35,7 @@ @property (nonatomic, retain) IBOutlet UIBarButtonItem *buttonPrevious; @property (nonatomic, retain) IBOutlet UIBarButtonItem *buttonNext; @property (nonatomic, retain) IBOutlet UIBarButtonItem *activity; +@property (nonatomic, retain) IBOutlet UIBarButtonItem *toggleViewButton; @property (nonatomic, retain) IBOutlet UIBarButtonItem *buttonAction; @property (nonatomic, retain) IBOutlet UIView *feedTitleGradient; @property (retain,nonatomic) UIPopoverController *popoverController; @@ -41,6 +43,7 @@ - (void)setNextPreviousButtons; - (void)markStoryAsRead; +- (void)toggleView; - (void)showStory; - (void)showOriginalSubview:(id)sender; - (IBAction)doNextUnreadStory; diff --git a/media/iphone/Classes/StoryDetailViewController.m b/media/iphone/Classes/StoryDetailViewController.m index a5f3e5b15..ce38b0843 100644 --- a/media/iphone/Classes/StoryDetailViewController.m +++ b/media/iphone/Classes/StoryDetailViewController.m @@ -32,6 +32,7 @@ @synthesize feedTitleGradient; @synthesize popoverController; @synthesize buttonNextStory; +@synthesize toggleViewButton; #pragma mark - #pragma mark View boilerplate @@ -58,6 +59,7 @@ [popoverController release]; [buttonNextStory release]; [buttonNextStory release]; + [toggleViewButton release]; [super dealloc]; } @@ -109,19 +111,43 @@ 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; + + + if (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad) { appDelegate.splitStoryDetailViewController.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:originalButton, fontSettingsButton, nil]; + appDelegate.splitStoryDetailViewController.navigationItem.leftBarButtonItem = self.toggleViewButton; + } else { self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:originalButton, fontSettingsButton, nil]; + self.navigationItem.rightBarButtonItem = self.toggleViewButton; } + [toggleButton release]; [originalButton release]; [fontSettingsButton release]; - [super viewDidAppear:animated]; } +- (void)toggleView { + if (appDelegate.splitStoryController.isShowingMaster){ + [appDelegate animateHidingMasterView]; + } else { + [appDelegate animateShowingMasterView]; + } +} + - (void)viewDidDisappear:(BOOL)animated { Class viewClass = [appDelegate.navigationController.visibleViewController class]; if (viewClass == [appDelegate.feedDetailViewController class] || diff --git a/media/iphone/NewsBlur.xcodeproj/project.pbxproj b/media/iphone/NewsBlur.xcodeproj/project.pbxproj index f4f55370d..44a16afd4 100755 --- a/media/iphone/NewsBlur.xcodeproj/project.pbxproj +++ b/media/iphone/NewsBlur.xcodeproj/project.pbxproj @@ -59,6 +59,10 @@ 4307BEE41565EDF8007A932A /* warning.png in Resources */ = {isa = PBXBuildFile; fileRef = 4307BE7F1565EDF8007A932A /* warning.png */; }; 4307BEE61565EDF8007A932A /* world.png in Resources */ = {isa = PBXBuildFile; fileRef = 4307BE801565EDF8007A932A /* world.png */; }; 4307BEFE1565EEBC007A932A /* Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = 4307BEFD1565EEBC007A932A /* Base64.m */; }; + 4315E95C159E910500A117C0 /* slide_left.png in Resources */ = {isa = PBXBuildFile; fileRef = 4315E958159E910500A117C0 /* slide_left.png */; }; + 4315E95D159E910500A117C0 /* slide_left@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4315E959159E910500A117C0 /* slide_left@2x.png */; }; + 4315E95E159E910500A117C0 /* slide_right.png in Resources */ = {isa = PBXBuildFile; fileRef = 4315E95A159E910500A117C0 /* slide_right.png */; }; + 4315E95F159E910500A117C0 /* slide_right@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 4315E95B159E910500A117C0 /* slide_right@2x.png */; }; 433323B015886FA80025064D /* logo_newsblur.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323AF15886FA80025064D /* logo_newsblur.png */; }; 433323B8158901A40025064D /* fountain_pen.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323B6158901A40025064D /* fountain_pen.png */; }; 433323B9158901A40025064D /* fountain_pen@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = 433323B7158901A40025064D /* fountain_pen@2x.png */; }; @@ -301,6 +305,10 @@ 4307BE801565EDF8007A932A /* world.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = world.png; sourceTree = ""; }; 4307BEFC1565EEBC007A932A /* Base64.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Base64.h; sourceTree = ""; }; 4307BEFD1565EEBC007A932A /* Base64.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Base64.m; sourceTree = ""; }; + 4315E958159E910500A117C0 /* slide_left.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slide_left.png; sourceTree = ""; }; + 4315E959159E910500A117C0 /* slide_left@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "slide_left@2x.png"; sourceTree = ""; }; + 4315E95A159E910500A117C0 /* slide_right.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slide_right.png; sourceTree = ""; }; + 4315E95B159E910500A117C0 /* slide_right@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "slide_right@2x.png"; sourceTree = ""; }; 433323AF15886FA80025064D /* logo_newsblur.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo_newsblur.png; sourceTree = ""; }; 433323B6158901A40025064D /* fountain_pen.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fountain_pen.png; sourceTree = ""; }; 433323B7158901A40025064D /* fountain_pen@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "fountain_pen@2x.png"; sourceTree = ""; }; @@ -760,6 +768,10 @@ 4307BE511565EDF8007A932A /* Resources */ = { isa = PBXGroup; children = ( + 4315E958159E910500A117C0 /* slide_left.png */, + 4315E959159E910500A117C0 /* slide_left@2x.png */, + 4315E95A159E910500A117C0 /* slide_right.png */, + 4315E95B159E910500A117C0 /* slide_right@2x.png */, 43F44B0A159CE98B00F48F8A /* 06-arrow-south.png */, 43F44B0B159CE98B00F48F8A /* 06-arrow-south@2x.png */, 4389E9E8159B931900BEA604 /* Screen Shot 2012-06-27 at 12.14.10 PM.png */, @@ -1471,6 +1483,10 @@ 43F44B15159D42F400F48F8A /* Default-Landscape~ipad.png in Resources */, 43F44B18159D454100F48F8A /* logo_72.png in Resources */, 43F44B19159D454100F48F8A /* logo_144.png in Resources */, + 4315E95C159E910500A117C0 /* slide_left.png in Resources */, + 4315E95D159E910500A117C0 /* slide_left@2x.png in Resources */, + 4315E95E159E910500A117C0 /* slide_right.png in Resources */, + 4315E95F159E910500A117C0 /* slide_right@2x.png in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/media/iphone/Resources/slide_left.png b/media/iphone/Resources/slide_left.png new file mode 100644 index 000000000..a87aadc63 Binary files /dev/null and b/media/iphone/Resources/slide_left.png differ diff --git a/media/iphone/Resources/slide_left@2x.png b/media/iphone/Resources/slide_left@2x.png new file mode 100644 index 000000000..b950533b6 Binary files /dev/null and b/media/iphone/Resources/slide_left@2x.png differ diff --git a/media/iphone/Resources/slide_right.png b/media/iphone/Resources/slide_right.png new file mode 100644 index 000000000..6cd742d82 Binary files /dev/null and b/media/iphone/Resources/slide_right.png differ diff --git a/media/iphone/Resources/slide_right@2x.png b/media/iphone/Resources/slide_right@2x.png new file mode 100644 index 000000000..dcb16c05e Binary files /dev/null and b/media/iphone/Resources/slide_right@2x.png differ diff --git a/media/iphone/SplitStoryDetailViewController.h b/media/iphone/SplitStoryDetailViewController.h index 0ed2c5303..10d85fd43 100644 --- a/media/iphone/SplitStoryDetailViewController.h +++ b/media/iphone/SplitStoryDetailViewController.h @@ -21,7 +21,6 @@ @property (nonatomic, retain) IBOutlet NewsBlurAppDelegate *appDelegate; @property (nonatomic, retain) UIPopoverController *popoverController; -- (void)configureView; - (void)onFingerSwipeLeft; - (void)onFingerSwipeRight; diff --git a/media/iphone/SplitStoryDetailViewController.m b/media/iphone/SplitStoryDetailViewController.m index 34ff7ba88..79a9369d7 100644 --- a/media/iphone/SplitStoryDetailViewController.m +++ b/media/iphone/SplitStoryDetailViewController.m @@ -64,8 +64,9 @@ - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { - [appDelegate adjustStoryDetailWebView:NO shouldCheckLayout:YES]; + [appDelegate adjustStoryDetailWebView]; + // copy the title from the master view to detail view if (appDelegate.splitStoryController.isShowingMaster) { self.navigationItem.titleView = nil; } else { @@ -79,38 +80,15 @@ #pragma mark Gestures - (void)onFingerSwipeLeft { - if (appDelegate.splitStoryController.isShowingMaster && appDelegate.inStoryDetail){ - - UIView *titleLabel = [appDelegate makeFeedTitle:appDelegate.activeFeed]; - self.navigationItem.titleView = titleLabel; - - [appDelegate.splitStoryController toggleMasterView:nil]; - [appDelegate adjustStoryDetailWebView:YES shouldCheckLayout:YES]; - [self configureView]; + if (appDelegate.inStoryDetail){ [appDelegate animateHidingMasterView]; } } - (void)onFingerSwipeRight { - - self.navigationItem.titleView = nil; - - if (!appDelegate.splitStoryController.isShowingMaster && appDelegate.inStoryDetail){ - [appDelegate.splitStoryController toggleMasterView:nil]; - [appDelegate adjustStoryDetailWebView:YES shouldCheckLayout:YES]; - [self configureView]; + if (appDelegate.inStoryDetail){ [appDelegate animateShowingMasterView]; } } -- (void)configureView -{ -// // Update the user interface for the detail item. -// detailDescriptionLabel.text = [detailItem description]; -// toggleItem.title = ([splitController isShowingMaster]) ? @"Hide Sites" : @"Show Sites"; // "I... AM... THE MASTER!" Derek Jacobi. Gave me chills. -// verticalItem.title = (splitController.vertical) ? @"Horizontal Split" : @"Vertical Split"; -// dividerStyleItem.title = (splitController.dividerStyle == MGSplitViewDividerStyleThin) ? @"Enable Dragging" : @"Disable Dragging"; -// masterBeforeDetailItem.title = (splitController.masterBeforeDetail) ? @"Detail First" : @"Master First"; -} - @end \ No newline at end of file