mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-09-18 21:50:56 +00:00
NewsBlur iOS: #1238 (statistics)
- Added a Statistics item to the feed detail menu (please provide an icon). - This command will show the statistics web page in a popover on iPad, or pushed on iPhone. - Extended the “original” view controller to support showing a custom page without changing the title or including the navigation bar buttons.
This commit is contained in:
parent
a50bb09141
commit
fa3f60a531
6 changed files with 76 additions and 43 deletions
|
@ -2502,8 +2502,9 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
|||
- (void)openStatisticsWithFeed:(NSString *)feedId {
|
||||
NSString *urlString = [NSString stringWithFormat:@"%@/rss_feeds/statistics_embedded/%@", appDelegate.url, feedId];
|
||||
NSURL *url = [NSURL URLWithString:urlString];
|
||||
NSString *title = appDelegate.storiesCollection.activeFeed[@"feed_title"];
|
||||
|
||||
[appDelegate showSafariViewControllerWithURL:url useReader:NO];
|
||||
[appDelegate showInAppBrowser:url withCustomTitle:title fromBarButtonItem:settingsBarButton];
|
||||
}
|
||||
|
||||
- (void)openRenameSite {
|
||||
|
|
|
@ -357,6 +357,7 @@ SFSafariViewControllerDelegate> {
|
|||
- (void)reloadFeedsView:(BOOL)showLoader;
|
||||
- (void)setTitle:(NSString *)title;
|
||||
- (void)showOriginalStory:(NSURL *)url;
|
||||
- (void)showInAppBrowser:(NSURL *)url withCustomTitle:(NSString *)customTitle fromBarButtonItem:(UIBarButtonItem *)barButtonItem;
|
||||
- (void)showSafariViewControllerWithURL:(NSURL *)url useReader:(BOOL)useReader;
|
||||
- (void)closeOriginalStory;
|
||||
- (void)hideStoryDetailView;
|
||||
|
|
|
@ -2066,24 +2066,35 @@
|
|||
} else if ([storyBrowser isEqualToString:@"inappsafarireader"]) {
|
||||
[self showSafariViewControllerWithURL:url useReader:YES];
|
||||
} else {
|
||||
if (!originalStoryViewController) {
|
||||
originalStoryViewController = [[OriginalStoryViewController alloc] init];
|
||||
}
|
||||
|
||||
self.activeOriginalStoryURL = url;
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[self.masterContainerViewController transitionToOriginalView];
|
||||
} else {
|
||||
if ([[navigationController viewControllers]
|
||||
containsObject:originalStoryViewController]) {
|
||||
return;
|
||||
}
|
||||
[navigationController pushViewController:originalStoryViewController
|
||||
animated:YES];
|
||||
[self showInAppBrowser:url withCustomTitle:nil fromBarButtonItem:nil];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)showInAppBrowser:(NSURL *)url withCustomTitle:(NSString *)customTitle fromBarButtonItem:(UIBarButtonItem *)barButtonItem {
|
||||
if (!originalStoryViewController) {
|
||||
originalStoryViewController = [[OriginalStoryViewController alloc] init];
|
||||
}
|
||||
|
||||
self.activeOriginalStoryURL = url;
|
||||
originalStoryViewController.customPageTitle = customTitle;
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
if (barButtonItem) {
|
||||
[originalStoryViewController view]; // Force viewDidLoad
|
||||
[originalStoryViewController loadInitialStory];
|
||||
[self showPopoverWithViewController:originalStoryViewController contentSize:CGSizeMake(600.0, 1000.0) barButtonItem:barButtonItem];
|
||||
} else {
|
||||
[self.masterContainerViewController transitionToOriginalView];
|
||||
}
|
||||
} else {
|
||||
if ([[navigationController viewControllers]
|
||||
containsObject:originalStoryViewController]) {
|
||||
return;
|
||||
}
|
||||
[navigationController pushViewController:originalStoryViewController
|
||||
animated:YES];
|
||||
[originalStoryViewController view]; // Force viewDidLoad
|
||||
[originalStoryViewController loadInitialStory];
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ UIGestureRecognizerDelegate> {
|
|||
@property (nonatomic) IBOutlet WKWebView *webView;
|
||||
//@property (strong, nonatomic) SloppySwiper *swiper;
|
||||
@property (nonatomic) NJKWebViewProgressView *progressView;
|
||||
@property (nonatomic, strong) NSString *customPageTitle;
|
||||
|
||||
- (void)resetProgressBar;
|
||||
- (void)loadInitialStory;
|
||||
|
|
|
@ -32,20 +32,6 @@
|
|||
self.view.layer.shadowOpacity = 0.5;
|
||||
self.view.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.view.bounds].CGPath;
|
||||
|
||||
UIImage *separatorImage = [UIImage imageNamed:@"bar-separator.png"];
|
||||
if ([ThemeManager themeManager].isDarkTheme) {
|
||||
separatorImage = [UIImage imageNamed:@"bar_separator_dark"];
|
||||
}
|
||||
UIBarButtonItem *separatorBarButton = [UIBarButtonItem barItemWithImage:separatorImage
|
||||
target:nil
|
||||
action:nil];
|
||||
[separatorBarButton setEnabled:NO];
|
||||
|
||||
UIBarButtonItem *sendToBarButton = [UIBarButtonItem
|
||||
barItemWithImage:[UIImage imageNamed:@"barbutton_sendto"]
|
||||
target:self
|
||||
action:@selector(doOpenActionSheet:)];
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
closeButton = [UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"ios7_back_button"]
|
||||
target:self
|
||||
|
@ -53,12 +39,6 @@
|
|||
self.navigationItem.leftBarButtonItem = closeButton;
|
||||
}
|
||||
|
||||
backBarButton = [UIBarButtonItem
|
||||
barItemWithImage:[UIImage imageNamed:@"barbutton_back"]
|
||||
target:self
|
||||
action:@selector(webViewGoBack:)];
|
||||
backBarButton.enabled = NO;
|
||||
|
||||
titleView = [[UILabel alloc] init];
|
||||
titleView.textColor = UIColorFromRGB(0x303030);
|
||||
titleView.font = [UIFont fontWithName:@"Helvetica-Bold" size:14.0];
|
||||
|
@ -67,11 +47,6 @@
|
|||
titleView.autoresizingMask = UIViewAutoresizingFlexibleWidth;
|
||||
self.navigationItem.titleView = titleView;
|
||||
|
||||
self.navigationItem.rightBarButtonItems = @[sendToBarButton,
|
||||
separatorBarButton,
|
||||
backBarButton
|
||||
];
|
||||
|
||||
webView = [[WKWebView alloc] initWithFrame:self.view.frame];
|
||||
[webView sizeToFit];
|
||||
webView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
|
||||
|
@ -207,6 +182,9 @@
|
|||
}
|
||||
|
||||
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer{
|
||||
if (self.customPageTitle != nil) {
|
||||
return NO;
|
||||
}
|
||||
CGPoint velocity = CGPointMake(0, 0);
|
||||
if ([gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]) {
|
||||
velocity = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:self.view];
|
||||
|
@ -285,10 +263,44 @@
|
|||
}
|
||||
}
|
||||
|
||||
- (void)updateBarItems {
|
||||
if (self.customPageTitle != nil) {
|
||||
self.navigationItem.rightBarButtonItems = nil;
|
||||
} else {
|
||||
UIBarButtonItem *sendToBarButton = [UIBarButtonItem
|
||||
barItemWithImage:[UIImage imageNamed:@"barbutton_sendto"]
|
||||
target:self
|
||||
action:@selector(doOpenActionSheet:)];
|
||||
|
||||
UIImage *separatorImage = [UIImage imageNamed:@"bar-separator.png"];
|
||||
if ([ThemeManager themeManager].isDarkTheme) {
|
||||
separatorImage = [UIImage imageNamed:@"bar_separator_dark"];
|
||||
}
|
||||
|
||||
UIBarButtonItem *separatorBarButton = [UIBarButtonItem barItemWithImage:separatorImage
|
||||
target:nil
|
||||
action:nil];
|
||||
[separatorBarButton setEnabled:NO];
|
||||
|
||||
backBarButton = [UIBarButtonItem
|
||||
barItemWithImage:[UIImage imageNamed:@"barbutton_back"]
|
||||
target:self
|
||||
action:@selector(webViewGoBack:)];
|
||||
backBarButton.enabled = NO;
|
||||
|
||||
self.navigationItem.rightBarButtonItems = @[sendToBarButton,
|
||||
separatorBarButton,
|
||||
backBarButton
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
- (void)loadInitialStory {
|
||||
finishedLoading = NO;
|
||||
activeUrl = nil;
|
||||
|
||||
[self updateBarItems];
|
||||
|
||||
[MBProgressHUD hideHUDForView:self.webView animated:YES];
|
||||
MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.webView animated:YES];
|
||||
HUD.labelText = @"On its way...";
|
||||
|
@ -366,8 +378,13 @@
|
|||
|
||||
- (void)updateTitle:(WKWebView*)aWebView
|
||||
{
|
||||
NSString *pageTitleValue = webView.title;
|
||||
titleView.text = [pageTitleValue stringByDecodingHTMLEntities];
|
||||
if (self.customPageTitle != nil) {
|
||||
titleView.text = self.customPageTitle;
|
||||
} else {
|
||||
NSString *pageTitleValue = webView.title;
|
||||
titleView.text = [pageTitleValue stringByDecodingHTMLEntities];
|
||||
}
|
||||
|
||||
[titleView sizeToFit];
|
||||
}
|
||||
|
||||
|
|
|
@ -98,6 +98,8 @@
|
|||
</array>
|
||||
<key>LSRequiresIPhoneOS</key>
|
||||
<true/>
|
||||
<key>LSSupportsOpeningDocumentsInPlace</key>
|
||||
<false/>
|
||||
<key>NSAppTransportSecurity</key>
|
||||
<dict>
|
||||
<key>NSAllowsArbitraryLoads</key>
|
||||
|
|
Loading…
Add table
Reference in a new issue