mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-31 21:41:33 +00:00
iOS: done #735 (non-modal story notifications)
This commit is contained in:
parent
42fed5b36d
commit
d8f79528dd
5 changed files with 46 additions and 58 deletions
|
@ -46,10 +46,9 @@ typedef enum {
|
||||||
|
|
||||||
- (void)show;
|
- (void)show;
|
||||||
- (void)showIn:(float)time;
|
- (void)showIn:(float)time;
|
||||||
- (void)showFor:(float)time;
|
|
||||||
|
|
||||||
- (void)hide;
|
- (void)hide;
|
||||||
- (void)hideAfter:(float)seconds;
|
- (void)hideNow;
|
||||||
- (void)hideIn:(float)seconds;
|
- (void)hideIn:(float)seconds;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -204,71 +204,34 @@
|
||||||
CGRect frame = self.frame;
|
CGRect frame = self.frame;
|
||||||
frame.size.width = self.view.frame.size.width;
|
frame.size.width = self.view.frame.size.width;
|
||||||
self.frame = frame;
|
self.frame = frame;
|
||||||
|
self.hidden = NO;
|
||||||
|
|
||||||
[UIView beginAnimations:nil context:nil];
|
[UIView animateWithDuration:time animations:^{
|
||||||
[UIView setAnimationDuration:time];
|
|
||||||
|
|
||||||
CGRect move = self.frame;
|
|
||||||
move.origin.y = self.view.frame.size.height - NOTIFIER_HEIGHT - self.offset.y;
|
|
||||||
self.frame = move;
|
|
||||||
|
|
||||||
[UIView commitAnimations];
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showFor:(float)time{
|
|
||||||
showing = YES;
|
|
||||||
[UIView beginAnimations:nil context:nil];
|
|
||||||
[UIView setAnimationDuration:0.3f];
|
|
||||||
|
|
||||||
CGRect move = self.frame;
|
|
||||||
move.origin.y = self.view.frame.size.height - NOTIFIER_HEIGHT - self.offset.y;
|
|
||||||
self.frame = move;
|
|
||||||
|
|
||||||
[UIView commitAnimations];
|
|
||||||
|
|
||||||
[self hideAfter:time];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)hideAfter:(float)seconds{
|
|
||||||
|
|
||||||
if (!showing) return;
|
|
||||||
|
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, seconds * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
|
|
||||||
|
|
||||||
[UIView beginAnimations:nil context:nil];
|
|
||||||
[UIView setAnimationDuration:0.3f];
|
|
||||||
[UIView setAnimationDelegate: self]; //or some other object that has necessary method
|
|
||||||
// [UIView setAnimationDidStopSelector: @selector(removeFromSuperview)];
|
|
||||||
|
|
||||||
|
|
||||||
CGRect move = self.frame;
|
CGRect move = self.frame;
|
||||||
move.origin.y += NOTIFIER_HEIGHT;
|
move.origin.y = self.view.frame.size.height - NOTIFIER_HEIGHT - self.offset.y;
|
||||||
self.frame = move;
|
self.frame = move;
|
||||||
|
} completion:nil];
|
||||||
[UIView commitAnimations];
|
|
||||||
});
|
|
||||||
showing = NO;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)hide {
|
- (void)hide {
|
||||||
[self hideIn:0.3f];
|
[self hideIn:0.3f];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)hideNow {
|
||||||
|
[self hideIn:0.0f];
|
||||||
|
}
|
||||||
|
|
||||||
- (void)hideIn:(float)seconds {
|
- (void)hideIn:(float)seconds {
|
||||||
|
|
||||||
if (!showing) return;
|
if (!showing) return;
|
||||||
|
|
||||||
[UIView beginAnimations:nil context:nil];
|
[UIView animateWithDuration:seconds animations:^{
|
||||||
[UIView setAnimationDuration:seconds];
|
CGRect move = self.frame;
|
||||||
[UIView setAnimationDelegate: self]; //or some other object that has necessary method
|
move.origin.y = self.view.frame.size.height - self.offset.y;
|
||||||
// [UIView setAnimationDidStopSelector: @selector(removeFromSuperview)];
|
self.frame = move;
|
||||||
|
} completion:^(BOOL finished) {
|
||||||
|
self.hidden = YES;
|
||||||
CGRect move = self.frame;
|
}];
|
||||||
move.origin.y = self.view.frame.size.height - self.offset.y;
|
|
||||||
self.frame = move;
|
|
||||||
|
|
||||||
[UIView commitAnimations];
|
|
||||||
|
|
||||||
showing = NO;
|
showing = NO;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2104,9 +2104,10 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
||||||
self.inTextView = YES;
|
self.inTextView = YES;
|
||||||
// NSLog(@"Fetching Text: %@", [self.activeStory objectForKey:@"story_title"]);
|
// NSLog(@"Fetching Text: %@", [self.activeStory objectForKey:@"story_title"]);
|
||||||
dispatch_async(dispatch_get_main_queue(), ^{
|
dispatch_async(dispatch_get_main_queue(), ^{
|
||||||
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
// [MBProgressHUD hideHUDForView:self.webView animated:YES];
|
||||||
MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.webView animated:YES];
|
// MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.webView animated:YES];
|
||||||
HUD.labelText = @"Fetching text...";
|
// HUD.labelText = @"Fetching text...";
|
||||||
|
[self.appDelegate.storyPageControl showFetchingTextNotifier];
|
||||||
});
|
});
|
||||||
|
|
||||||
NSString *urlString = [NSString stringWithFormat:@"%@/rss_feeds/original_text",
|
NSString *urlString = [NSString stringWithFormat:@"%@/rss_feeds/original_text",
|
||||||
|
@ -2122,6 +2123,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)failedFetchText:(ASIHTTPRequest *)request {
|
- (void)failedFetchText:(ASIHTTPRequest *)request {
|
||||||
|
[self.appDelegate.storyPageControl hideNotifier];
|
||||||
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
||||||
[self informError:@"Could not fetch text"];
|
[self informError:@"Could not fetch text"];
|
||||||
self.inTextView = NO;
|
self.inTextView = NO;
|
||||||
|
@ -2144,6 +2146,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
||||||
|
|
||||||
if (![[request.userInfo objectForKey:@"storyId"]
|
if (![[request.userInfo objectForKey:@"storyId"]
|
||||||
isEqualToString:[self.activeStory objectForKey:@"id"]]) {
|
isEqualToString:[self.activeStory objectForKey:@"id"]]) {
|
||||||
|
[self.appDelegate.storyPageControl hideNotifier];
|
||||||
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
||||||
self.inTextView = NO;
|
self.inTextView = NO;
|
||||||
[appDelegate.storyPageControl setTextButton:self];
|
[appDelegate.storyPageControl setTextButton:self];
|
||||||
|
@ -2157,6 +2160,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
||||||
}
|
}
|
||||||
self.activeStory = newActiveStory;
|
self.activeStory = newActiveStory;
|
||||||
|
|
||||||
|
[self.appDelegate.storyPageControl hideNotifier];
|
||||||
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
||||||
|
|
||||||
self.inTextView = YES;
|
self.inTextView = YES;
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
#import "NewsBlurAppDelegate.h"
|
#import "NewsBlurAppDelegate.h"
|
||||||
#import "WYPopoverController.h"
|
#import "WYPopoverController.h"
|
||||||
#import "THCircularProgressView.h"
|
#import "THCircularProgressView.h"
|
||||||
|
#import "NBNotifier.h"
|
||||||
|
|
||||||
@class NewsBlurAppDelegate;
|
@class NewsBlurAppDelegate;
|
||||||
@class ASIHTTPRequest;
|
@class ASIHTTPRequest;
|
||||||
|
@ -75,6 +76,7 @@
|
||||||
@property (assign) BOOL isAnimatedIntoPlace;
|
@property (assign) BOOL isAnimatedIntoPlace;
|
||||||
@property (assign) BOOL waitingForNextUnreadFromServer;
|
@property (assign) BOOL waitingForNextUnreadFromServer;
|
||||||
@property (nonatomic) MBProgressHUD *storyHUD;
|
@property (nonatomic) MBProgressHUD *storyHUD;
|
||||||
|
@property (nonatomic, strong) NBNotifier *notifier;
|
||||||
@property (nonatomic) NSInteger scrollingToPage;
|
@property (nonatomic) NSInteger scrollingToPage;
|
||||||
|
|
||||||
@property (nonatomic, strong) WYPopoverController *popoverController;
|
@property (nonatomic, strong) WYPopoverController *popoverController;
|
||||||
|
@ -114,6 +116,8 @@
|
||||||
- (void)changeFontSize:(NSString *)fontSize;
|
- (void)changeFontSize:(NSString *)fontSize;
|
||||||
- (void)changeLineSpacing:(NSString *)lineSpacing;
|
- (void)changeLineSpacing:(NSString *)lineSpacing;
|
||||||
- (void)showShareHUD:(NSString *)msg;
|
- (void)showShareHUD:(NSString *)msg;
|
||||||
|
- (void)showFetchingTextNotifier;
|
||||||
|
- (void)hideNotifier;
|
||||||
|
|
||||||
- (IBAction)showOriginalSubview:(id)sender;
|
- (IBAction)showOriginalSubview:(id)sender;
|
||||||
|
|
||||||
|
|
|
@ -179,6 +179,11 @@
|
||||||
action:@selector(transitionFromFeedDetail)];
|
action:@selector(transitionFromFeedDetail)];
|
||||||
self.buttonBack = backButton;
|
self.buttonBack = backButton;
|
||||||
|
|
||||||
|
self.notifier = [[NBNotifier alloc] initWithTitle:@"Fetching text..."
|
||||||
|
inView:self.view
|
||||||
|
withOffset:CGPointMake(0.0, 0.0 /*self.bottomSize.frame.size.height*/)];
|
||||||
|
[self.view addSubview:self.notifier];
|
||||||
|
[self.notifier hideNow];
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||||
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:
|
self.navigationItem.rightBarButtonItems = [NSArray arrayWithObjects:
|
||||||
|
@ -413,6 +418,7 @@
|
||||||
previousPage.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.notifier hide];
|
||||||
// self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * currentPage.pageIndex, 0);
|
// self.scrollView.contentOffset = CGPointMake(self.scrollView.frame.size.width * currentPage.pageIndex, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,6 +437,7 @@
|
||||||
[self.scrollView scrollRectToVisible:frame animated:NO];
|
[self.scrollView scrollRectToVisible:frame animated:NO];
|
||||||
|
|
||||||
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
[MBProgressHUD hideHUDForView:self.view animated:YES];
|
||||||
|
[self.notifier hide];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)refreshHeaders {
|
- (void)refreshHeaders {
|
||||||
|
@ -1066,6 +1073,17 @@
|
||||||
[[self currentPage] flashCheckmarkHud:messageType];
|
[[self currentPage] flashCheckmarkHud:messageType];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)showFetchingTextNotifier {
|
||||||
|
self.notifier.style = NBSyncingStyle;
|
||||||
|
self.notifier.title = @"Fetching text...";
|
||||||
|
[self.notifier setProgress:0];
|
||||||
|
[self.notifier show];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)hideNotifier {
|
||||||
|
[self.notifier hide];
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Story Traversal
|
#pragma mark Story Traversal
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue