mirror of
https://github.com/viq/NewsBlur.git
synced 2025-09-18 21:43:31 +00:00
Eureka, got a third 'previous' page in the mix for story page controls on iOS. This could be it. No bounce, no redraw, and flawless movement.
This commit is contained in:
parent
e06310f070
commit
68d4d2786f
7 changed files with 125 additions and 94 deletions
|
@ -583,6 +583,7 @@
|
||||||
// change UIWebView
|
// change UIWebView
|
||||||
[storyPageControl.currentPage changeWebViewWidth];
|
[storyPageControl.currentPage changeWebViewWidth];
|
||||||
[storyPageControl.nextPage changeWebViewWidth];
|
[storyPageControl.nextPage changeWebViewWidth];
|
||||||
|
[storyPageControl.previousPage changeWebViewWidth];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)calibrateStoryTitles {
|
- (void)calibrateStoryTitles {
|
||||||
|
|
|
@ -68,7 +68,7 @@
|
||||||
|
|
||||||
self.webView.scalesPageToFit = YES;
|
self.webView.scalesPageToFit = YES;
|
||||||
self.webView.multipleTouchEnabled = NO;
|
self.webView.multipleTouchEnabled = NO;
|
||||||
self.pageIndex = -1;
|
self.pageIndex = -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
|
||||||
|
@ -113,6 +113,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)drawStory {
|
- (void)drawStory {
|
||||||
|
if (self.activeStoryId == [self.activeStory objectForKey:@"id"]) {
|
||||||
|
NSLog(@"Already drawn story. Ignoring.");
|
||||||
|
// return;
|
||||||
|
}
|
||||||
|
|
||||||
NSString *shareBarString = [self getShareBar];
|
NSString *shareBarString = [self getShareBar];
|
||||||
NSString *commentString = [self getComments];
|
NSString *commentString = [self getComments];
|
||||||
NSString *headerString;
|
NSString *headerString;
|
||||||
|
@ -282,6 +287,8 @@
|
||||||
[self.webView.scrollView addObserver:self forKeyPath:@"contentOffset"
|
[self.webView.scrollView addObserver:self forKeyPath:@"contentOffset"
|
||||||
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
|
options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld
|
||||||
context:nil];
|
context:nil];
|
||||||
|
|
||||||
|
self.activeStoryId = [self.activeStory objectForKey:@"id"];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showStory {
|
- (void)showStory {
|
||||||
|
@ -290,10 +297,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)clearStory {
|
- (void)clearStory {
|
||||||
|
self.activeStoryId = nil;
|
||||||
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
|
[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"about:blank"]]];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)hideStory {
|
- (void)hideStory {
|
||||||
|
self.activeStoryId = nil;
|
||||||
self.webView.hidden = YES;
|
self.webView.hidden = YES;
|
||||||
self.noStorySelectedLabel.hidden = NO;
|
self.noStorySelectedLabel.hidden = NO;
|
||||||
}
|
}
|
||||||
|
@ -745,7 +754,6 @@
|
||||||
} else {
|
} else {
|
||||||
self.activeStory = appDelegate.activeStory;
|
self.activeStory = appDelegate.activeStory;
|
||||||
}
|
}
|
||||||
self.activeStoryId = [self.activeStory objectForKey:@"id"];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (BOOL)webView:(UIWebView *)webView
|
- (BOOL)webView:(UIWebView *)webView
|
||||||
|
|
|
@ -37,6 +37,7 @@
|
||||||
@property (nonatomic) IBOutlet NewsBlurAppDelegate *appDelegate;
|
@property (nonatomic) IBOutlet NewsBlurAppDelegate *appDelegate;
|
||||||
@property (nonatomic) StoryDetailViewController *currentPage;
|
@property (nonatomic) StoryDetailViewController *currentPage;
|
||||||
@property (nonatomic) StoryDetailViewController *nextPage;
|
@property (nonatomic) StoryDetailViewController *nextPage;
|
||||||
|
@property (nonatomic) StoryDetailViewController *previousPage;
|
||||||
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
|
@property (nonatomic, strong) IBOutlet UIScrollView *scrollView;
|
||||||
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
|
@property (nonatomic, strong) IBOutlet UIPageControl *pageControl;
|
||||||
|
|
||||||
|
@ -57,6 +58,7 @@
|
||||||
@property (readwrite) CGFloat inTouchMove;
|
@property (readwrite) CGFloat inTouchMove;
|
||||||
@property (assign) BOOL isDraggingScrollview;
|
@property (assign) BOOL isDraggingScrollview;
|
||||||
@property (nonatomic) MBProgressHUD *storyHUD;
|
@property (nonatomic) MBProgressHUD *storyHUD;
|
||||||
|
@property (nonatomic) int scrollingToPage;
|
||||||
|
|
||||||
@property (nonatomic, strong) WEPopoverController *popoverController;
|
@property (nonatomic, strong) WEPopoverController *popoverController;
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
@implementation StoryPageControl
|
@implementation StoryPageControl
|
||||||
|
|
||||||
@synthesize appDelegate;
|
@synthesize appDelegate;
|
||||||
@synthesize currentPage, nextPage;
|
@synthesize currentPage, nextPage, previousPage;
|
||||||
@synthesize progressView;
|
@synthesize progressView;
|
||||||
@synthesize progressViewContainer;
|
@synthesize progressViewContainer;
|
||||||
@synthesize toolbar;
|
@synthesize toolbar;
|
||||||
|
@ -46,7 +46,7 @@
|
||||||
@synthesize inTouchMove;
|
@synthesize inTouchMove;
|
||||||
@synthesize isDraggingScrollview;
|
@synthesize isDraggingScrollview;
|
||||||
@synthesize storyHUD;
|
@synthesize storyHUD;
|
||||||
|
@synthesize scrollingToPage;
|
||||||
|
|
||||||
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
|
||||||
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
|
||||||
|
@ -59,12 +59,18 @@
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
currentPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
currentPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||||
nextPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
nextPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||||
|
previousPage = [[StoryDetailViewController alloc] initWithNibName:@"StoryDetailViewController" bundle:nil];
|
||||||
|
|
||||||
currentPage.appDelegate = appDelegate;
|
currentPage.appDelegate = appDelegate;
|
||||||
nextPage.appDelegate = appDelegate;
|
nextPage.appDelegate = appDelegate;
|
||||||
|
previousPage.appDelegate = appDelegate;
|
||||||
currentPage.view.frame = self.scrollView.frame;
|
currentPage.view.frame = self.scrollView.frame;
|
||||||
nextPage.view.frame = self.scrollView.frame;
|
nextPage.view.frame = self.scrollView.frame;
|
||||||
|
previousPage.view.frame = self.scrollView.frame;
|
||||||
|
|
||||||
[self.scrollView addSubview:currentPage.view];
|
[self.scrollView addSubview:currentPage.view];
|
||||||
[self.scrollView addSubview:nextPage.view];
|
[self.scrollView addSubview:nextPage.view];
|
||||||
|
[self.scrollView addSubview:previousPage.view];
|
||||||
[self.scrollView setPagingEnabled:YES];
|
[self.scrollView setPagingEnabled:YES];
|
||||||
[self.scrollView setScrollEnabled:YES];
|
[self.scrollView setScrollEnabled:YES];
|
||||||
[self.scrollView setShowsHorizontalScrollIndicator:NO];
|
[self.scrollView setShowsHorizontalScrollIndicator:NO];
|
||||||
|
@ -137,6 +143,8 @@
|
||||||
[self setNextPreviousButtons];
|
[self setNextPreviousButtons];
|
||||||
[appDelegate adjustStoryDetailWebView];
|
[appDelegate adjustStoryDetailWebView];
|
||||||
|
|
||||||
|
previousPage.view.hidden = YES;
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||||
if (!appDelegate.isSocialView) {
|
if (!appDelegate.isSocialView) {
|
||||||
UIImage *titleImage;
|
UIImage *titleImage;
|
||||||
|
@ -188,6 +196,7 @@
|
||||||
// self.subscribeButton.tintColor = UIColorFromRGB(0x0a6720);
|
// self.subscribeButton.tintColor = UIColorFromRGB(0x0a6720);
|
||||||
}
|
}
|
||||||
appDelegate.isTryFeedView = NO;
|
appDelegate.isTryFeedView = NO;
|
||||||
|
previousPage.view.hidden = NO;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)transitionFromFeedDetail {
|
- (void)transitionFromFeedDetail {
|
||||||
|
@ -200,24 +209,30 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)resetPages {
|
- (void)resetPages {
|
||||||
|
NSLog(@"resetPages");
|
||||||
[currentPage clearStory];
|
[currentPage clearStory];
|
||||||
[nextPage clearStory];
|
[nextPage clearStory];
|
||||||
|
// [previousPage clearStory];
|
||||||
|
|
||||||
[currentPage hideStory];
|
[currentPage hideStory];
|
||||||
[nextPage hideStory];
|
[nextPage hideStory];
|
||||||
|
// [previousPage hideStory];
|
||||||
|
|
||||||
currentPage.pageIndex = -1;
|
currentPage.pageIndex = -2;
|
||||||
nextPage.pageIndex = -1;
|
nextPage.pageIndex = -2;
|
||||||
|
previousPage.pageIndex = -2;
|
||||||
|
|
||||||
self.scrollView.contentOffset = CGPointMake(0, 0);
|
self.scrollView.contentOffset = CGPointMake(0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)refreshPages {
|
- (void)refreshPages {
|
||||||
|
NSLog(@"refreshPages");
|
||||||
[self resizeScrollView];
|
[self resizeScrollView];
|
||||||
[appDelegate adjustStoryDetailWebView];
|
[appDelegate adjustStoryDetailWebView];
|
||||||
int pageIndex = currentPage.pageIndex;
|
int pageIndex = currentPage.pageIndex;
|
||||||
currentPage.pageIndex = -1;
|
currentPage.pageIndex = -2;
|
||||||
nextPage.pageIndex = -1;
|
nextPage.pageIndex = -2;
|
||||||
|
previousPage.pageIndex = -2;
|
||||||
[self changePage:pageIndex animated:NO];
|
[self changePage:pageIndex animated:NO];
|
||||||
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
||||||
// self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * currentPage.pageIndex, 0);
|
// self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * currentPage.pageIndex, 0);
|
||||||
|
@ -263,23 +278,29 @@
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Side scroll view
|
#pragma mark Side scroll view
|
||||||
|
|
||||||
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController
|
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController {
|
||||||
{
|
|
||||||
NSInteger pageCount = [[appDelegate activeFeedStoryLocations] count];
|
NSInteger pageCount = [[appDelegate activeFeedStoryLocations] count];
|
||||||
BOOL outOfBounds = newIndex >= pageCount || newIndex < 0;
|
BOOL outOfBounds = newIndex >= pageCount || newIndex < 0;
|
||||||
|
|
||||||
if (!outOfBounds) {
|
if (!outOfBounds) {
|
||||||
|
// NSLog(@"Apply index was: %d, now %d", pageController.pageIndex, newIndex);
|
||||||
CGRect pageFrame = pageController.view.frame;
|
CGRect pageFrame = pageController.view.frame;
|
||||||
pageFrame.origin.y = 0;
|
pageFrame.origin.y = 0;
|
||||||
pageFrame.origin.x = self.scrollView.frame.size.width * newIndex;
|
pageFrame.origin.x = self.scrollView.frame.size.width * newIndex;
|
||||||
|
pageFrame.size.height = self.scrollView.frame.size.height;
|
||||||
pageController.view.frame = pageFrame;
|
pageController.view.frame = pageFrame;
|
||||||
} else {
|
} else {
|
||||||
|
// NSLog(@"Out of bounds: was %d, now %d", pageController.pageIndex, newIndex);
|
||||||
CGRect pageFrame = pageController.view.frame;
|
CGRect pageFrame = pageController.view.frame;
|
||||||
pageFrame.origin.y = self.scrollView.frame.size.height / 2;
|
pageFrame.origin.x = self.scrollView.frame.size.width * newIndex;
|
||||||
|
pageFrame.origin.y = self.scrollView.frame.size.height;
|
||||||
|
pageFrame.size.height = 0;
|
||||||
pageController.view.frame = pageFrame;
|
pageController.view.frame = pageFrame;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int wasIndex = pageController.pageIndex;
|
||||||
pageController.pageIndex = newIndex;
|
pageController.pageIndex = newIndex;
|
||||||
|
NSLog(@"Applied Index: Was %d, now %d (%d/%d/%d)", wasIndex, newIndex, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||||
|
|
||||||
if (newIndex >= [appDelegate.activeFeedStoryLocations count]) {
|
if (newIndex >= [appDelegate.activeFeedStoryLocations count]) {
|
||||||
if (self.appDelegate.feedDetailViewController.feedPage < 50 &&
|
if (self.appDelegate.feedDetailViewController.feedPage < 50 &&
|
||||||
|
@ -296,55 +317,71 @@
|
||||||
// animated:YES];
|
// animated:YES];
|
||||||
// [appDelegate hideStoryDetailView];
|
// [appDelegate hideStoryDetailView];
|
||||||
}
|
}
|
||||||
} else {
|
} else if (!outOfBounds) {
|
||||||
int location = [appDelegate indexFromLocation:pageController.pageIndex];
|
int location = [appDelegate indexFromLocation:pageController.pageIndex];
|
||||||
[pageController setActiveStoryAtIndex:location];
|
[pageController setActiveStoryAtIndex:location];
|
||||||
[pageController initStory];
|
[pageController clearStory];
|
||||||
[pageController drawStory];
|
if (self.isDraggingScrollview || abs(newIndex - self.scrollingToPage) <= 1) {
|
||||||
|
[pageController initStory];
|
||||||
|
[pageController drawStory];
|
||||||
|
} else {
|
||||||
|
NSLog(@"Skipping drawing %d (waiting for %d)", newIndex, self.scrollingToPage);
|
||||||
|
}
|
||||||
|
} else if (outOfBounds) {
|
||||||
|
[pageController clearStory];
|
||||||
}
|
}
|
||||||
|
|
||||||
[self resizeScrollView];
|
[self resizeScrollView];
|
||||||
[self.loadingIndicator stopAnimating];
|
[self.loadingIndicator stopAnimating];
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)scrollViewDidScroll:(UIScrollView *)sender
|
- (void)scrollViewDidScroll:(UIScrollView *)sender {
|
||||||
{
|
|
||||||
[sender setContentOffset:CGPointMake(sender.contentOffset.x, 0)];
|
[sender setContentOffset:CGPointMake(sender.contentOffset.x, 0)];
|
||||||
CGFloat pageWidth = self.scrollView.frame.size.width;
|
CGFloat pageWidth = self.scrollView.frame.size.width;
|
||||||
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||||
|
|
||||||
NSInteger lowerNumber = floor(fractionalPage);
|
NSInteger lowerNumber = floor(fractionalPage);
|
||||||
NSInteger upperNumber = lowerNumber + 1;
|
NSInteger upperNumber = lowerNumber + 1;
|
||||||
|
NSInteger previousNumber = lowerNumber - 1;
|
||||||
|
|
||||||
if (lowerNumber == currentPage.pageIndex)
|
// NSLog(@"Did Scroll: %f = %d (%d/%d/%d)", fractionalPage, lowerNumber, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||||
{
|
if (lowerNumber == currentPage.pageIndex) {
|
||||||
if (upperNumber != nextPage.pageIndex)
|
if (upperNumber != nextPage.pageIndex) {
|
||||||
{
|
NSLog(@"Next was %d, now %d (A)", nextPage.pageIndex, upperNumber);
|
||||||
[self applyNewIndex:upperNumber pageController:nextPage];
|
[self applyNewIndex:upperNumber pageController:nextPage];
|
||||||
}
|
}
|
||||||
}
|
if (previousNumber != previousPage.pageIndex) {
|
||||||
else if (upperNumber == currentPage.pageIndex)
|
NSLog(@"Prev was %d, now %d (A)", previousPage.pageIndex, previousNumber);
|
||||||
{
|
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||||
if (lowerNumber != nextPage.pageIndex)
|
|
||||||
{
|
|
||||||
[self applyNewIndex:lowerNumber pageController:nextPage];
|
|
||||||
}
|
}
|
||||||
}
|
} else if (upperNumber == currentPage.pageIndex) {
|
||||||
else
|
// Going backwards
|
||||||
{
|
if (lowerNumber != previousPage.pageIndex) {
|
||||||
if (lowerNumber == nextPage.pageIndex)
|
NSLog(@"Prev was %d, now %d (B)", previousPage.pageIndex, previousNumber);
|
||||||
{
|
[self applyNewIndex:lowerNumber pageController:previousPage];
|
||||||
[self applyNewIndex:upperNumber pageController:currentPage];
|
|
||||||
}
|
}
|
||||||
else if (upperNumber == nextPage.pageIndex)
|
[self setStoryFromScroll];
|
||||||
{
|
} else {
|
||||||
|
// Going forwards
|
||||||
|
if (lowerNumber == nextPage.pageIndex) {
|
||||||
|
NSLog(@"Prev was %d, now %d (C1)", previousPage.pageIndex, previousNumber);
|
||||||
|
// [self applyNewIndex:upperNumber pageController:nextPage];
|
||||||
|
// [self applyNewIndex:lowerNumber pageController:currentPage];
|
||||||
|
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||||
|
} else if (upperNumber == nextPage.pageIndex) {
|
||||||
|
NSLog(@"Prev was %d, now %d (C2)", previousPage.pageIndex, previousNumber);
|
||||||
[self applyNewIndex:lowerNumber pageController:currentPage];
|
[self applyNewIndex:lowerNumber pageController:currentPage];
|
||||||
}
|
[self applyNewIndex:previousNumber pageController:previousPage];
|
||||||
else
|
} else {
|
||||||
{
|
NSLog(@"Next was %d, now %d (C3)", nextPage.pageIndex, upperNumber);
|
||||||
|
NSLog(@"Prev was %d, now %d (C3)", previousPage.pageIndex, previousNumber);
|
||||||
[self applyNewIndex:lowerNumber pageController:currentPage];
|
[self applyNewIndex:lowerNumber pageController:currentPage];
|
||||||
[self applyNewIndex:upperNumber pageController:nextPage];
|
[self applyNewIndex:upperNumber pageController:nextPage];
|
||||||
|
// [self applyNewIndex:previousNumber pageController:previousPage];
|
||||||
}
|
}
|
||||||
|
[self setStoryFromScroll];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -352,9 +389,18 @@
|
||||||
self.isDraggingScrollview = YES;
|
self.isDraggingScrollview = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)scrollViewDidEndDecelerating:(UIScrollView *)newScrollView
|
||||||
|
{
|
||||||
|
[self scrollViewDidEndScrollingAnimation:newScrollView];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)newScrollView
|
- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)newScrollView
|
||||||
{
|
{
|
||||||
self.isDraggingScrollview = NO;
|
self.isDraggingScrollview = NO;
|
||||||
|
CGFloat pageWidth = self.scrollView.frame.size.width;
|
||||||
|
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||||
|
NSInteger nearestNumber = lround(fractionalPage);
|
||||||
|
self.scrollingToPage = nearestNumber;
|
||||||
[self setStoryFromScroll];
|
[self setStoryFromScroll];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -370,12 +416,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)scrollViewDidEndDecelerating:(UIScrollView *)newScrollView
|
|
||||||
{
|
|
||||||
[self scrollViewDidEndScrollingAnimation:newScrollView];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)changePage:(NSInteger)pageIndex {
|
- (void)changePage:(NSInteger)pageIndex {
|
||||||
[self changePage:pageIndex animated:YES];
|
[self changePage:pageIndex animated:YES];
|
||||||
}
|
}
|
||||||
|
@ -388,6 +428,8 @@
|
||||||
frame.origin.x = frame.size.width * pageIndex;
|
frame.origin.x = frame.size.width * pageIndex;
|
||||||
frame.origin.y = 0;
|
frame.origin.y = 0;
|
||||||
|
|
||||||
|
self.scrollingToPage = pageIndex;
|
||||||
|
|
||||||
if (self.scrollView.contentOffset.x == frame.origin.x) {
|
if (self.scrollView.contentOffset.x == frame.origin.x) {
|
||||||
[self applyNewIndex:pageIndex pageController:currentPage];
|
[self applyNewIndex:pageIndex pageController:currentPage];
|
||||||
[self setStoryFromScroll];
|
[self setStoryFromScroll];
|
||||||
|
@ -404,16 +446,27 @@
|
||||||
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
|
||||||
NSInteger nearestNumber = lround(fractionalPage);
|
NSInteger nearestNumber = lround(fractionalPage);
|
||||||
|
|
||||||
if (currentPage.pageIndex != nearestNumber)
|
if (currentPage.pageIndex < nearestNumber) {
|
||||||
{
|
NSLog(@"Swap next into current, current into previous: %d / %d", currentPage.pageIndex, nearestNumber);
|
||||||
StoryDetailViewController *swapController = currentPage;
|
StoryDetailViewController *swapCurrentController = currentPage;
|
||||||
|
StoryDetailViewController *swapPreviousController = previousPage;
|
||||||
currentPage = nextPage;
|
currentPage = nextPage;
|
||||||
nextPage = swapController;
|
previousPage = swapCurrentController;
|
||||||
}
|
nextPage = swapPreviousController;
|
||||||
|
} else if (currentPage.pageIndex > nearestNumber) {
|
||||||
|
NSLog(@"Swap previous into current: %d / %d", currentPage.pageIndex, nearestNumber);
|
||||||
|
StoryDetailViewController *swapCurrentController = currentPage;
|
||||||
|
StoryDetailViewController *swapNextController = nextPage;
|
||||||
|
currentPage = previousPage;
|
||||||
|
nextPage = swapCurrentController;
|
||||||
|
previousPage = swapNextController;
|
||||||
|
}
|
||||||
|
|
||||||
|
NSLog(@"Set Story from scroll: %f = %d (%d/%d/%d)", fractionalPage, nearestNumber, previousPage.pageIndex, currentPage.pageIndex, nextPage.pageIndex);
|
||||||
if (currentPage.pageIndex == -1) return;
|
if (currentPage.pageIndex == -1) return;
|
||||||
|
|
||||||
nextPage.webView.scrollView.scrollsToTop = NO;
|
nextPage.webView.scrollView.scrollsToTop = NO;
|
||||||
|
previousPage.webView.scrollView.scrollsToTop = NO;
|
||||||
currentPage.webView.scrollView.scrollsToTop = YES;
|
currentPage.webView.scrollView.scrollsToTop = YES;
|
||||||
self.scrollView.scrollsToTop = NO;
|
self.scrollView.scrollsToTop = NO;
|
||||||
|
|
||||||
|
@ -436,13 +489,18 @@
|
||||||
[self setNextPreviousButtons];
|
[self setNextPreviousButtons];
|
||||||
[appDelegate changeActiveFeedDetailRow];
|
[appDelegate changeActiveFeedDetailRow];
|
||||||
|
|
||||||
|
|
||||||
if (self.currentPage.pageIndex != location) {
|
if (self.currentPage.pageIndex != location) {
|
||||||
|
NSLog(@"Updating Current: %d", location);
|
||||||
[self applyNewIndex:location pageController:self.currentPage];
|
[self applyNewIndex:location pageController:self.currentPage];
|
||||||
}
|
}
|
||||||
if (self.nextPage.pageIndex != location+1) {
|
if (self.nextPage.pageIndex != location+1) {
|
||||||
|
NSLog(@"Updating Next: %d", location+1);
|
||||||
[self applyNewIndex:location+1 pageController:self.nextPage];
|
[self applyNewIndex:location+1 pageController:self.nextPage];
|
||||||
}
|
}
|
||||||
|
if (self.previousPage.pageIndex != location-1) {
|
||||||
|
NSLog(@"Updating Previous: %d", location-1);
|
||||||
|
[self applyNewIndex:location-1 pageController:self.previousPage];
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)requestFailed:(ASIHTTPRequest *)request {
|
- (void)requestFailed:(ASIHTTPRequest *)request {
|
||||||
|
@ -765,11 +823,13 @@
|
||||||
- (void)setFontStyle:(NSString *)fontStyle {
|
- (void)setFontStyle:(NSString *)fontStyle {
|
||||||
[self.currentPage setFontStyle:fontStyle];
|
[self.currentPage setFontStyle:fontStyle];
|
||||||
[self.nextPage setFontStyle:fontStyle];
|
[self.nextPage setFontStyle:fontStyle];
|
||||||
|
[self.previousPage setFontStyle:fontStyle];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)changeFontSize:(NSString *)fontSize {
|
- (void)changeFontSize:(NSString *)fontSize {
|
||||||
[self.currentPage changeFontSize:fontSize];
|
[self.currentPage changeFontSize:fontSize];
|
||||||
[self.nextPage changeFontSize:fontSize];
|
[self.nextPage changeFontSize:fontSize];
|
||||||
|
[self.previousPage changeFontSize:fontSize];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showShareHUD:(NSString *)msg {
|
- (void)showShareHUD:(NSString *)msg {
|
||||||
|
@ -779,6 +839,7 @@
|
||||||
self.storyHUD.margin = 20.0f;
|
self.storyHUD.margin = 20.0f;
|
||||||
self.currentPage.noStorySelectedLabel.hidden = YES;
|
self.currentPage.noStorySelectedLabel.hidden = YES;
|
||||||
self.nextPage.noStorySelectedLabel.hidden = YES;
|
self.nextPage.noStorySelectedLabel.hidden = YES;
|
||||||
|
self.previousPage.noStorySelectedLabel.hidden = YES;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
|
@ -1173,14 +1173,14 @@
|
||||||
431B857415A1324200DCE497 /* Story */ = {
|
431B857415A1324200DCE497 /* Story */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
FF6A233016448E0700E15989 /* StoryPageControl.h */,
|
||||||
|
FF6A233116448E0700E15989 /* StoryPageControl.m */,
|
||||||
7842ECF511D44A530066CF9D /* StoryDetailViewController.h */,
|
7842ECF511D44A530066CF9D /* StoryDetailViewController.h */,
|
||||||
7842ECF611D44A530066CF9D /* StoryDetailViewController.m */,
|
7842ECF611D44A530066CF9D /* StoryDetailViewController.m */,
|
||||||
43763ACE158F90B100B3DBE2 /* FontSettingsViewController.h */,
|
43763ACE158F90B100B3DBE2 /* FontSettingsViewController.h */,
|
||||||
43763ACF158F90B100B3DBE2 /* FontSettingsViewController.m */,
|
43763ACF158F90B100B3DBE2 /* FontSettingsViewController.m */,
|
||||||
78095EC6128F30B500230C8E /* OriginalStoryViewController.h */,
|
78095EC6128F30B500230C8E /* OriginalStoryViewController.h */,
|
||||||
78095EC7128F30B500230C8E /* OriginalStoryViewController.m */,
|
78095EC7128F30B500230C8E /* OriginalStoryViewController.m */,
|
||||||
FF6A233016448E0700E15989 /* StoryPageControl.h */,
|
|
||||||
FF6A233116448E0700E15989 /* StoryPageControl.m */,
|
|
||||||
);
|
);
|
||||||
name = Story;
|
name = Story;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
|
|
|
@ -2,47 +2,6 @@
|
||||||
<Bucket
|
<Bucket
|
||||||
type = "1"
|
type = "1"
|
||||||
version = "1.0">
|
version = "1.0">
|
||||||
<FileBreakpoints>
|
|
||||||
<FileBreakpoint
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Classes/StoryPageControl.m"
|
|
||||||
timestampString = "374533637.198323"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "835"
|
|
||||||
endingLineNumber = "835"
|
|
||||||
landmarkName = "-doNextStory"
|
|
||||||
landmarkType = "5">
|
|
||||||
</FileBreakpoint>
|
|
||||||
<FileBreakpoint
|
|
||||||
shouldBeEnabled = "No"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Other Sources/MBProgressHUD.m"
|
|
||||||
timestampString = "374190717.134082"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "105"
|
|
||||||
endingLineNumber = "105"
|
|
||||||
landmarkName = "+hideHUDForView:animated:"
|
|
||||||
landmarkType = "5">
|
|
||||||
</FileBreakpoint>
|
|
||||||
<FileBreakpoint
|
|
||||||
shouldBeEnabled = "Yes"
|
|
||||||
ignoreCount = "0"
|
|
||||||
continueAfterRunningActions = "No"
|
|
||||||
filePath = "Other Sources/MBProgressHUD.m"
|
|
||||||
timestampString = "374190721.59204"
|
|
||||||
startingColumnNumber = "9223372036854775807"
|
|
||||||
endingColumnNumber = "9223372036854775807"
|
|
||||||
startingLineNumber = "115"
|
|
||||||
endingLineNumber = "115"
|
|
||||||
landmarkName = "+hideAllHUDsForView:animated:"
|
|
||||||
landmarkType = "5">
|
|
||||||
</FileBreakpoint>
|
|
||||||
</FileBreakpoints>
|
|
||||||
<SymbolicBreakpoints>
|
<SymbolicBreakpoints>
|
||||||
<SymbolicBreakpoint
|
<SymbolicBreakpoint
|
||||||
shouldBeEnabled = "Yes"
|
shouldBeEnabled = "Yes"
|
||||||
|
|
|
@ -15,8 +15,8 @@
|
||||||
// #define BACKGROUND_REFRESH_SECONDS -5
|
// #define BACKGROUND_REFRESH_SECONDS -5
|
||||||
#define BACKGROUND_REFRESH_SECONDS -10*60
|
#define BACKGROUND_REFRESH_SECONDS -10*60
|
||||||
|
|
||||||
// #define NEWSBLUR_URL [NSString stringWithFormat:@"nb.local.com"]
|
#define NEWSBLUR_URL [NSString stringWithFormat:@"nb.local.com"]
|
||||||
#define NEWSBLUR_URL [NSString stringWithFormat:@"www.newsblur.com"]
|
// #define NEWSBLUR_URL [NSString stringWithFormat:@"www.newsblur.com"]
|
||||||
|
|
||||||
#define NEWSBLUR_LINK_COLOR 0x405BA8
|
#define NEWSBLUR_LINK_COLOR 0x405BA8
|
||||||
#define NEWSBLUR_HIGHLIGHT_COLOR 0xd2e6fd
|
#define NEWSBLUR_HIGHLIGHT_COLOR 0xd2e6fd
|
||||||
|
|
Loading…
Add table
Reference in a new issue