mirror of
https://github.com/samuelclay/NewsBlur.git
synced 2025-08-05 16:58:59 +00:00
iOS: tweaked #825 (dark mode)
Eliminated the old WYPopoverController from the code, since it isn’t needed and isn’t compatible with theming. All popovers now use the modern UIPopoverPresentationController mechanism.
This commit is contained in:
parent
1b31f27276
commit
07e667a95d
20 changed files with 120 additions and 3717 deletions
|
@ -133,10 +133,9 @@
|
||||||
|
|
||||||
- (IBAction)doCancelButton {
|
- (IBAction)doCancelButton {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
appDelegate.feedsViewController.popoverController = nil;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,12 +309,11 @@
|
||||||
[self.errorLabel setHidden:NO];
|
[self.errorLabel setHidden:NO];
|
||||||
} else {
|
} else {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
appDelegate.feedsViewController.popoverController = nil;
|
|
||||||
}
|
}
|
||||||
[appDelegate reloadFeedsView:NO];
|
[self.appDelegate reloadFeedsView:NO];
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -189,10 +189,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[appDelegate.feedDetailViewController.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
appDelegate.feedDetailViewController.popoverController = nil;
|
|
||||||
}
|
}
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#import "ASIHTTPRequest.h"
|
#import "ASIHTTPRequest.h"
|
||||||
#import "BaseViewController.h"
|
#import "BaseViewController.h"
|
||||||
#import "Utilities.h"
|
#import "Utilities.h"
|
||||||
#import "WYPopoverController.h"
|
|
||||||
#import "NBNotifier.h"
|
#import "NBNotifier.h"
|
||||||
#import "MCSwipeTableViewCell.h"
|
#import "MCSwipeTableViewCell.h"
|
||||||
|
|
||||||
|
@ -22,7 +21,7 @@
|
||||||
@interface FeedDetailViewController : BaseViewController
|
@interface FeedDetailViewController : BaseViewController
|
||||||
<UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate,
|
<UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate,
|
||||||
UIPopoverControllerDelegate, ASIHTTPRequestDelegate,
|
UIPopoverControllerDelegate, ASIHTTPRequestDelegate,
|
||||||
WYPopoverControllerDelegate, MCSwipeTableViewCellDelegate,
|
MCSwipeTableViewCellDelegate,
|
||||||
UIGestureRecognizerDelegate, UISearchBarDelegate> {
|
UIGestureRecognizerDelegate, UISearchBarDelegate> {
|
||||||
NewsBlurAppDelegate *appDelegate;
|
NewsBlurAppDelegate *appDelegate;
|
||||||
|
|
||||||
|
@ -37,7 +36,6 @@
|
||||||
|
|
||||||
UITableView * storyTitlesTable;
|
UITableView * storyTitlesTable;
|
||||||
UIBarButtonItem * feedMarkReadButton;
|
UIBarButtonItem * feedMarkReadButton;
|
||||||
WYPopoverController *popoverController;
|
|
||||||
Class popoverClass;
|
Class popoverClass;
|
||||||
NBNotifier *notifier;
|
NBNotifier *notifier;
|
||||||
}
|
}
|
||||||
|
@ -50,7 +48,6 @@
|
||||||
@property (nonatomic) IBOutlet UIBarButtonItem * spacer2BarButton;
|
@property (nonatomic) IBOutlet UIBarButtonItem * spacer2BarButton;
|
||||||
@property (nonatomic) IBOutlet UIBarButtonItem * separatorBarButton;
|
@property (nonatomic) IBOutlet UIBarButtonItem * separatorBarButton;
|
||||||
@property (nonatomic) IBOutlet UIBarButtonItem * titleImageBarButton;
|
@property (nonatomic) IBOutlet UIBarButtonItem * titleImageBarButton;
|
||||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
|
||||||
@property (nonatomic, retain) NBNotifier *notifier;
|
@property (nonatomic, retain) NBNotifier *notifier;
|
||||||
@property (nonatomic, retain) StoriesCollection *storiesCollection;
|
@property (nonatomic, retain) StoriesCollection *storiesCollection;
|
||||||
@property (nonatomic) UISearchBar *searchBar;
|
@property (nonatomic) UISearchBar *searchBar;
|
||||||
|
|
|
@ -23,7 +23,6 @@
|
||||||
#import "NSObject+SBJSON.h"
|
#import "NSObject+SBJSON.h"
|
||||||
#import "StringHelper.h"
|
#import "StringHelper.h"
|
||||||
#import "Utilities.h"
|
#import "Utilities.h"
|
||||||
#import "WYPopoverController.h"
|
|
||||||
#import "UIBarButtonItem+Image.h"
|
#import "UIBarButtonItem+Image.h"
|
||||||
#import "FeedDetailMenuViewController.h"
|
#import "FeedDetailMenuViewController.h"
|
||||||
#import "MarkReadMenuViewController.h"
|
#import "MarkReadMenuViewController.h"
|
||||||
|
@ -51,7 +50,6 @@
|
||||||
|
|
||||||
@implementation FeedDetailViewController
|
@implementation FeedDetailViewController
|
||||||
|
|
||||||
@synthesize popoverController;
|
|
||||||
@synthesize storyTitlesTable, feedMarkReadButton;
|
@synthesize storyTitlesTable, feedMarkReadButton;
|
||||||
@synthesize settingsBarButton;
|
@synthesize settingsBarButton;
|
||||||
@synthesize separatorBarButton;
|
@synthesize separatorBarButton;
|
||||||
|
@ -87,7 +85,6 @@
|
||||||
name:UIContentSizeCategoryDidChangeNotification
|
name:UIContentSizeCategoryDidChangeNotification
|
||||||
object:nil];
|
object:nil];
|
||||||
|
|
||||||
popoverClass = [WYPopoverController class];
|
|
||||||
self.storyTitlesTable.backgroundColor = UIColorFromRGB(0xf4f4f4);
|
self.storyTitlesTable.backgroundColor = UIColorFromRGB(0xf4f4f4);
|
||||||
self.storyTitlesTable.separatorColor = UIColorFromRGB(0xE9E8E4);
|
self.storyTitlesTable.separatorColor = UIColorFromRGB(0xE9E8E4);
|
||||||
|
|
||||||
|
@ -431,8 +428,7 @@
|
||||||
[super viewDidDisappear:animated];
|
[super viewDidDisappear:animated];
|
||||||
|
|
||||||
[self.searchBar resignFirstResponder];
|
[self.searchBar resignFirstResponder];
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
self.popoverController = nil;
|
|
||||||
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
|
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
|
||||||
|
|
||||||
if (self.isMovingToParentViewController) {
|
if (self.isMovingToParentViewController) {
|
||||||
|
@ -1818,8 +1814,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)doOpenMarkReadMenu:(id)sender {
|
- (IBAction)doOpenMarkReadMenu:(id)sender {
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
self.popoverController = nil;
|
|
||||||
|
|
||||||
void (^pop)(void) = ^{
|
void (^pop)(void) = ^{
|
||||||
if (!self.isPhoneOrCompact) {
|
if (!self.isPhoneOrCompact) {
|
||||||
|
@ -1865,30 +1860,13 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!self.isPhoneOrCompact) {
|
[self.appDelegate.feedDetailMenuViewController buildMenuOptions];
|
||||||
[appDelegate.masterContainerViewController showFeedDetailMenuPopover:self.settingsBarButton];
|
[self.appDelegate.feedDetailMenuViewController view];
|
||||||
} else {
|
NSInteger menuCount = [self.appDelegate.feedDetailMenuViewController.menuOptions count] + 2;
|
||||||
if (self.popoverController == nil) {
|
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
|
||||||
initWithContentViewController:(UIViewController *)appDelegate.feedDetailMenuViewController];
|
|
||||||
[appDelegate.feedDetailMenuViewController buildMenuOptions];
|
|
||||||
self.popoverController.delegate = self;
|
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
NSInteger menuCount = [appDelegate.feedDetailMenuViewController.menuOptions count] + 2;
|
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(260, 38 * menuCount)];
|
|
||||||
[self.popoverController presentPopoverFromBarButtonItem:self.settingsBarButton
|
|
||||||
permittedArrowDirections:UIPopoverArrowDirectionUp
|
|
||||||
animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.feedDetailMenuViewController contentSize:CGSizeMake(260, 38 * menuCount) barButtonItem:self.settingsBarButton];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
- (void)confirmDeleteSite {
|
- (void)confirmDeleteSite {
|
||||||
UIAlertView *deleteConfirm = [[UIAlertView alloc]
|
UIAlertView *deleteConfirm = [[UIAlertView alloc]
|
||||||
initWithTitle:@"Positive?"
|
initWithTitle:@"Positive?"
|
||||||
|
@ -2247,17 +2225,4 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
||||||
[appDelegate informError:error];
|
[appDelegate informError:error];
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark WYPopoverControllerDelegate implementation
|
|
||||||
|
|
||||||
- (void)popoverControllerDidDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//Safe to release the popover here
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//The popover is automatically dismissed if you click outside it, unless you return NO here
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -126,10 +126,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
appDelegate.feedsViewController.popoverController = nil;
|
|
||||||
}
|
}
|
||||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||||
|
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
@property (nonatomic) CALayer *leftBorder;
|
@property (nonatomic) CALayer *leftBorder;
|
||||||
@property (nonatomic) CALayer *rightBorder;
|
@property (nonatomic) CALayer *rightBorder;
|
||||||
@property (atomic, strong) IBOutlet NewsBlurAppDelegate *appDelegate;
|
@property (atomic, strong) IBOutlet NewsBlurAppDelegate *appDelegate;
|
||||||
|
@property (nonatomic, readonly) UINavigationController *masterNavigationController;
|
||||||
|
|
||||||
|
|
||||||
- (void)syncNextPreviousButtons;
|
- (void)syncNextPreviousButtons;
|
||||||
|
@ -49,12 +50,6 @@
|
||||||
|
|
||||||
- (void)dragStoryToolbar:(int)yCoordinate;
|
- (void)dragStoryToolbar:(int)yCoordinate;
|
||||||
- (void)showUserProfilePopover:(id)sender;
|
- (void)showUserProfilePopover:(id)sender;
|
||||||
- (void)showFeedMenuPopover:(id)sender;
|
|
||||||
- (void)showFeedDetailMenuPopover:(id)sender;
|
|
||||||
- (void)showFontSettingsPopover:(id)sender;
|
|
||||||
- (void)showTrainingPopover:(id)sender;
|
- (void)showTrainingPopover:(id)sender;
|
||||||
- (void)showUserTagsPopover:(id)sender;
|
|
||||||
- (void)showSitePopover:(id)sender;
|
|
||||||
- (BOOL)hidePopoverAnimated:(BOOL)animated;
|
|
||||||
- (void)hidePopover;
|
|
||||||
@end
|
@end
|
||||||
|
|
|
@ -303,115 +303,39 @@
|
||||||
|
|
||||||
# pragma mark Modals and Popovers
|
# pragma mark Modals and Popovers
|
||||||
|
|
||||||
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize barButtonItem:(UIBarButtonItem *)barButtonItem {
|
|
||||||
[self showPopoverWithViewController:viewController contentSize:contentSize barButtonItem:barButtonItem sourceView:nil sourceRect:CGRectZero];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect {
|
|
||||||
[self showPopoverWithViewController:viewController contentSize:contentSize barButtonItem:nil sourceView:sourceView sourceRect:sourceRect];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize barButtonItem:(UIBarButtonItem *)barButtonItem sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect {
|
|
||||||
if (viewController == self.masterNavigationController.presentedViewController)
|
|
||||||
return; // nothing to do, already showing this controller
|
|
||||||
|
|
||||||
[self hidePopoverAnimated:YES];
|
|
||||||
|
|
||||||
viewController.modalPresentationStyle = UIModalPresentationPopover;
|
|
||||||
viewController.preferredContentSize = contentSize;
|
|
||||||
|
|
||||||
UIPopoverPresentationController *popoverPresentationController = viewController.popoverPresentationController;
|
|
||||||
popoverPresentationController.delegate = self;
|
|
||||||
popoverPresentationController.backgroundColor = UIColorFromRGB(NEWSBLUR_WHITE_COLOR);
|
|
||||||
popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
|
|
||||||
|
|
||||||
if (barButtonItem) {
|
|
||||||
popoverPresentationController.barButtonItem = barButtonItem;
|
|
||||||
} else {
|
|
||||||
popoverPresentationController.sourceView = sourceView;
|
|
||||||
popoverPresentationController.sourceRect = sourceRect;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.masterNavigationController presentViewController:viewController animated:YES completion:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showUserProfilePopover:(id)sender {
|
- (void)showUserProfilePopover:(id)sender {
|
||||||
if ([sender class] == [InteractionCell class] ||
|
if ([sender class] == [InteractionCell class] ||
|
||||||
[sender class] == [ActivityCell class]) {
|
[sender class] == [ActivityCell class]) {
|
||||||
InteractionCell *cell = (InteractionCell *)sender;
|
InteractionCell *cell = (InteractionCell *)sender;
|
||||||
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:cell sourceRect:cell.bounds];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:cell sourceRect:cell.bounds];
|
||||||
} else if ([sender class] == [FeedTableCell class]) {
|
} else if ([sender class] == [FeedTableCell class]) {
|
||||||
FeedTableCell *cell = (FeedTableCell *)sender;
|
FeedTableCell *cell = (FeedTableCell *)sender;
|
||||||
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:cell sourceRect:cell.bounds];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:cell sourceRect:cell.bounds];
|
||||||
} else if ([sender class] == [UIBarButtonItem class]) {
|
} else if ([sender class] == [UIBarButtonItem class]) {
|
||||||
[self showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) barButtonItem:sender];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) barButtonItem:sender];
|
||||||
} else {
|
} else {
|
||||||
CGRect frame = [sender CGRectValue];
|
CGRect frame = [sender CGRectValue];
|
||||||
[self showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:self.storyPageControl.view sourceRect:frame];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) sourceView:self.storyPageControl.view sourceRect:frame];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showSitePopover:(id)sender {
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.addSiteViewController contentSize:CGSizeMake(320, 355) barButtonItem:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showFeedMenuPopover:(id)sender {
|
|
||||||
[self.appDelegate.feedsMenuViewController view];
|
|
||||||
NSInteger menuCount = [self.appDelegate.feedsMenuViewController.menuOptions count];
|
|
||||||
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.feedsMenuViewController contentSize:CGSizeMake(200, 38 * menuCount) barButtonItem:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showFeedDetailMenuPopover:(id)sender {
|
|
||||||
[appDelegate.feedDetailMenuViewController buildMenuOptions];
|
|
||||||
[appDelegate.feedDetailMenuViewController view];
|
|
||||||
NSInteger menuCount = [self.appDelegate.feedDetailMenuViewController.menuOptions count] + 2;
|
|
||||||
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.feedDetailMenuViewController contentSize:CGSizeMake(260, 38 * menuCount) barButtonItem:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showFontSettingsPopover:(id)sender {
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.fontSettingsNavigationController contentSize:CGSizeMake(240.0, 306.0) barButtonItem:sender];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)showTrainingPopover:(id)sender {
|
- (void)showTrainingPopover:(id)sender {
|
||||||
if ([sender class] == [UIBarButtonItem class]) {
|
if ([sender class] == [UIBarButtonItem class]) {
|
||||||
[self showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) barButtonItem:sender];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) barButtonItem:sender];
|
||||||
} else if ([sender class] == [FeedTableCell class]) {
|
} else if ([sender class] == [FeedTableCell class]) {
|
||||||
FeedTableCell *cell = (FeedTableCell *)sender;
|
FeedTableCell *cell = (FeedTableCell *)sender;
|
||||||
[self showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:cell sourceRect:cell.bounds];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:cell sourceRect:cell.bounds];
|
||||||
} else if ([sender class] == [FeedDetailTableCell class]) {
|
} else if ([sender class] == [FeedDetailTableCell class]) {
|
||||||
FeedDetailTableCell *cell = (FeedDetailTableCell *)sender;
|
FeedDetailTableCell *cell = (FeedDetailTableCell *)sender;
|
||||||
[self showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:cell sourceRect:cell.bounds];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:cell sourceRect:cell.bounds];
|
||||||
} else {
|
} else {
|
||||||
CGRect frame = [sender CGRectValue];
|
CGRect frame = [sender CGRectValue];
|
||||||
[self showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:self.storyPageControl.view sourceRect:frame];
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.trainerViewController contentSize:CGSizeMake(420, 382) sourceView:self.storyPageControl.view sourceRect:frame];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)showUserTagsPopover:(id)sender {
|
|
||||||
[appDelegate.userTagsViewController view]; // Force viewDidLoad
|
|
||||||
CGRect frame = [sender CGRectValue];
|
|
||||||
[self showPopoverWithViewController:self.appDelegate.userTagsViewController contentSize:CGSizeMake(220, 382) sourceView:self.storyPageControl.view sourceRect:frame];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)hidePopoverAnimated:(BOOL)animated {
|
|
||||||
UIViewController *presentedViewController = self.masterNavigationController.presentedViewController;
|
|
||||||
if (!presentedViewController)
|
|
||||||
return NO;
|
|
||||||
|
|
||||||
[presentedViewController dismissViewControllerAnimated:animated completion:nil];
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)hidePopover {
|
|
||||||
[self hidePopoverAnimated:YES];
|
|
||||||
[appDelegate.modalNavigationController dismissViewControllerAnimated:YES completion:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
- (void)syncNextPreviousButtons {
|
- (void)syncNextPreviousButtons {
|
||||||
[self.storyPageControl setNextPreviousButtons];
|
[self.storyPageControl setNextPreviousButtons];
|
||||||
}
|
}
|
||||||
|
@ -581,7 +505,7 @@
|
||||||
[self transitionToFeedDetail:YES];
|
[self transitionToFeedDetail:YES];
|
||||||
}
|
}
|
||||||
- (void)transitionToFeedDetail:(BOOL)resetLayout {
|
- (void)transitionToFeedDetail:(BOOL)resetLayout {
|
||||||
[self hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
if (self.feedDetailIsVisible) resetLayout = NO;
|
if (self.feedDetailIsVisible) resetLayout = NO;
|
||||||
self.feedDetailIsVisible = YES;
|
self.feedDetailIsVisible = YES;
|
||||||
|
|
||||||
|
@ -856,7 +780,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[self hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
|
|
||||||
if (self.isSharingStory) {
|
if (self.isSharingStory) {
|
||||||
[self transitionFromShareView];
|
[self transitionFromShareView];
|
||||||
|
@ -936,7 +860,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[self hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
CGRect vb = [self.view bounds];
|
CGRect vb = [self.view bounds];
|
||||||
self.isSharingStory = YES;
|
self.isSharingStory = YES;
|
||||||
self.storyPageControl.traverseView.hidden = YES;
|
self.storyPageControl.traverseView.hidden = YES;
|
||||||
|
@ -970,7 +894,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
[self hidePopover];
|
[self.appDelegate hidePopover];
|
||||||
CGRect vb = [self.view bounds];
|
CGRect vb = [self.view bounds];
|
||||||
self.isSharingStory = NO;
|
self.isSharingStory = NO;
|
||||||
self.storyPageControl.traverseView.hidden = NO;
|
self.storyPageControl.traverseView.hidden = NO;
|
||||||
|
|
|
@ -11,7 +11,6 @@
|
||||||
#import "BaseViewController.h"
|
#import "BaseViewController.h"
|
||||||
#import "FMDatabaseQueue.h"
|
#import "FMDatabaseQueue.h"
|
||||||
#import "EventWindow.h"
|
#import "EventWindow.h"
|
||||||
#import "WYPopoverController.h"
|
|
||||||
|
|
||||||
#define FEED_DETAIL_VIEW_TAG 1000001
|
#define FEED_DETAIL_VIEW_TAG 1000001
|
||||||
#define STORY_DETAIL_VIEW_TAG 1000002
|
#define STORY_DETAIL_VIEW_TAG 1000002
|
||||||
|
@ -50,7 +49,7 @@
|
||||||
@class TMCache;
|
@class TMCache;
|
||||||
|
|
||||||
@interface NewsBlurAppDelegate : BaseViewController
|
@interface NewsBlurAppDelegate : BaseViewController
|
||||||
<UIApplicationDelegate, UIAlertViewDelegate, UINavigationControllerDelegate, UIPopoverPresentationControllerDelegate, WYPopoverControllerDelegate,
|
<UIApplicationDelegate, UIAlertViewDelegate, UINavigationControllerDelegate, UIPopoverPresentationControllerDelegate,
|
||||||
SFSafariViewControllerDelegate> {
|
SFSafariViewControllerDelegate> {
|
||||||
EventWindow *window;
|
EventWindow *window;
|
||||||
UINavigationController *ftuxNavigationController;
|
UINavigationController *ftuxNavigationController;
|
||||||
|
@ -86,7 +85,6 @@ SFSafariViewControllerDelegate> {
|
||||||
UINavigationController *originalStoryViewNavController;
|
UINavigationController *originalStoryViewNavController;
|
||||||
UserProfileViewController *userProfileViewController;
|
UserProfileViewController *userProfileViewController;
|
||||||
IASKAppSettingsViewController *preferencesViewController;
|
IASKAppSettingsViewController *preferencesViewController;
|
||||||
WYPopoverController *popoverController;
|
|
||||||
|
|
||||||
NSString * activeUsername;
|
NSString * activeUsername;
|
||||||
NSString * activeUserProfileId;
|
NSString * activeUserProfileId;
|
||||||
|
@ -175,7 +173,6 @@ SFSafariViewControllerDelegate> {
|
||||||
@property (nonatomic) IBOutlet FontSettingsViewController *fontSettingsViewController;
|
@property (nonatomic) IBOutlet FontSettingsViewController *fontSettingsViewController;
|
||||||
@property (nonatomic) IBOutlet UserProfileViewController *userProfileViewController;
|
@property (nonatomic) IBOutlet UserProfileViewController *userProfileViewController;
|
||||||
@property (nonatomic) IBOutlet IASKAppSettingsViewController *preferencesViewController;
|
@property (nonatomic) IBOutlet IASKAppSettingsViewController *preferencesViewController;
|
||||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
|
||||||
@property (nonatomic, strong) UINavigationController *fontSettingsNavigationController;
|
@property (nonatomic, strong) UINavigationController *fontSettingsNavigationController;
|
||||||
@property (nonatomic, strong) MarkReadMenuViewController *markReadMenuViewController;
|
@property (nonatomic, strong) MarkReadMenuViewController *markReadMenuViewController;
|
||||||
@property (nonatomic) IBOutlet FirstTimeUserViewController *firstTimeUserViewController;
|
@property (nonatomic) IBOutlet FirstTimeUserViewController *firstTimeUserViewController;
|
||||||
|
@ -349,6 +346,11 @@ SFSafariViewControllerDelegate> {
|
||||||
- (void)showMarkReadMenuWithFeedIds:(NSArray *)feedIds collectionTitle:(NSString *)collectionTitle sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect completionHandler:(void (^)(BOOL marked))completionHandler;
|
- (void)showMarkReadMenuWithFeedIds:(NSArray *)feedIds collectionTitle:(NSString *)collectionTitle sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect completionHandler:(void (^)(BOOL marked))completionHandler;
|
||||||
- (void)showMarkOlderNewerReadMenuWithStoriesCollection:(StoriesCollection *)olderNewerCollection story:(NSDictionary *)olderNewerStory sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect completionHandler:(void (^)(BOOL marked))completionHandler;
|
- (void)showMarkOlderNewerReadMenuWithStoriesCollection:(StoriesCollection *)olderNewerCollection story:(NSDictionary *)olderNewerStory sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect completionHandler:(void (^)(BOOL marked))completionHandler;
|
||||||
|
|
||||||
|
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize barButtonItem:(UIBarButtonItem *)barButtonItem;
|
||||||
|
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect;
|
||||||
|
- (BOOL)hidePopoverAnimated:(BOOL)animated;
|
||||||
|
- (void)hidePopover;
|
||||||
|
|
||||||
+ (int)computeStoryScore:(NSDictionary *)intelligence;
|
+ (int)computeStoryScore:(NSDictionary *)intelligence;
|
||||||
- (NSString *)extractFolderName:(NSString *)folderName;
|
- (NSString *)extractFolderName:(NSString *)folderName;
|
||||||
- (NSString *)extractParentFolderName:(NSString *)folderName;
|
- (NSString *)extractParentFolderName:(NSString *)folderName;
|
||||||
|
|
|
@ -103,7 +103,6 @@
|
||||||
@synthesize originalStoryViewNavController;
|
@synthesize originalStoryViewNavController;
|
||||||
@synthesize userProfileViewController;
|
@synthesize userProfileViewController;
|
||||||
@synthesize preferencesViewController;
|
@synthesize preferencesViewController;
|
||||||
@synthesize popoverController;
|
|
||||||
|
|
||||||
@synthesize firstTimeUserViewController;
|
@synthesize firstTimeUserViewController;
|
||||||
@synthesize firstTimeUserAddSitesViewController;
|
@synthesize firstTimeUserAddSitesViewController;
|
||||||
|
@ -445,7 +444,7 @@
|
||||||
|
|
||||||
- (void)hideUserProfileModal {
|
- (void)hideUserProfileModal {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[self.masterContainerViewController hidePopover];
|
[self hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
@ -610,7 +609,7 @@
|
||||||
}];
|
}];
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
BOOL fromPopover = [self.masterContainerViewController hidePopoverAnimated:NO];
|
BOOL fromPopover = [self hidePopoverAnimated:NO];
|
||||||
[self.masterContainerViewController presentViewController:activityViewController animated:!fromPopover completion:nil];
|
[self.masterContainerViewController presentViewController:activityViewController animated:!fromPopover completion:nil];
|
||||||
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
|
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
|
||||||
// iOS 8+
|
// iOS 8+
|
||||||
|
@ -808,27 +807,9 @@
|
||||||
self.userTagsViewController = [[UserTagsViewController alloc] init];
|
self.userTagsViewController = [[UserTagsViewController alloc] init];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
|
||||||
[self.masterContainerViewController showUserTagsPopover:sender];
|
|
||||||
} else {
|
|
||||||
if (self.popoverController == nil) {
|
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
|
||||||
initWithContentViewController:self.userTagsViewController];
|
|
||||||
|
|
||||||
self.popoverController.delegate = self;
|
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.userTagsViewController view]; // Force viewDidLoad
|
[self.userTagsViewController view]; // Force viewDidLoad
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(220, 38 * MIN(6.5, [[self.dictSavedStoryTags allKeys] count] + [self.activeStory[@"user_tags"] count] + 1))];
|
|
||||||
CGRect frame = [sender CGRectValue];
|
CGRect frame = [sender CGRectValue];
|
||||||
[self.popoverController presentPopoverFromRect:frame
|
[self showPopoverWithViewController:self.userTagsViewController contentSize:CGSizeMake(220, 382) sourceView:self.storyPageControl.view sourceRect:frame];
|
||||||
inView:self.storyPageControl.currentPage.view
|
|
||||||
permittedArrowDirections:WYPopoverArrowDirectionAny
|
|
||||||
animated:YES];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark - UIPopoverPresentationControllerDelegate
|
#pragma mark - UIPopoverPresentationControllerDelegate
|
||||||
|
@ -837,19 +818,6 @@
|
||||||
return UIModalPresentationNone;
|
return UIModalPresentationNone;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark WYPopoverControllerDelegate implementation
|
|
||||||
|
|
||||||
- (void)popoverControllerDidDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//Safe to release the popover here
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//The popover is automatically dismissed if you click outside it, unless you return NO here
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
|
|
||||||
- (void)reloadFeedsView:(BOOL)showLoader {
|
- (void)reloadFeedsView:(BOOL)showLoader {
|
||||||
|
@ -926,9 +894,8 @@
|
||||||
[self loadFeedDetailView];
|
[self loadFeedDetailView];
|
||||||
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||||
if (self.feedsViewController.popoverController) {
|
[self hidePopoverAnimated:YES];
|
||||||
[self.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
|
||||||
}
|
|
||||||
if (self.navigationController.presentedViewController) {
|
if (self.navigationController.presentedViewController) {
|
||||||
[self.navigationController dismissViewControllerAnimated:YES completion:^{
|
[self.navigationController dismissViewControllerAnimated:YES completion:^{
|
||||||
[self loadFeedDetailView];
|
[self loadFeedDetailView];
|
||||||
|
@ -944,9 +911,7 @@
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||||
if (self.feedsViewController.popoverController) {
|
[self hidePopoverAnimated:NO];
|
||||||
[self.feedsViewController.popoverController dismissPopoverAnimated:NO];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.inFindingStoryMode = YES;
|
self.inFindingStoryMode = YES;
|
||||||
|
@ -1232,9 +1197,7 @@
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||||
if (self.feedsViewController.popoverController) {
|
[self hidePopoverAnimated:NO];
|
||||||
[self.feedsViewController.popoverController dismissPopoverAnimated:NO];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
self.inFindingStoryMode = YES;
|
self.inFindingStoryMode = YES;
|
||||||
|
@ -2098,6 +2061,61 @@
|
||||||
[self.navigationController presentViewController:self.markReadMenuViewController animated:YES completion:nil];
|
[self.navigationController presentViewController:self.markReadMenuViewController animated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize barButtonItem:(UIBarButtonItem *)barButtonItem {
|
||||||
|
[self showPopoverWithViewController:viewController contentSize:contentSize barButtonItem:barButtonItem sourceView:nil sourceRect:CGRectZero];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect {
|
||||||
|
[self showPopoverWithViewController:viewController contentSize:contentSize barButtonItem:nil sourceView:sourceView sourceRect:sourceRect];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)showPopoverWithViewController:(UIViewController *)viewController contentSize:(CGSize)contentSize barButtonItem:(UIBarButtonItem *)barButtonItem sourceView:(UIView *)sourceView sourceRect:(CGRect)sourceRect {
|
||||||
|
if (viewController == self.navigationControllerForPopover.presentedViewController) {
|
||||||
|
return; // nothing to do, already showing this controller
|
||||||
|
}
|
||||||
|
|
||||||
|
[self hidePopoverAnimated:YES];
|
||||||
|
|
||||||
|
viewController.modalPresentationStyle = UIModalPresentationPopover;
|
||||||
|
viewController.preferredContentSize = contentSize;
|
||||||
|
|
||||||
|
UIPopoverPresentationController *popoverPresentationController = viewController.popoverPresentationController;
|
||||||
|
popoverPresentationController.delegate = self;
|
||||||
|
popoverPresentationController.backgroundColor = UIColorFromRGB(NEWSBLUR_WHITE_COLOR);
|
||||||
|
popoverPresentationController.permittedArrowDirections = UIPopoverArrowDirectionAny;
|
||||||
|
|
||||||
|
if (barButtonItem) {
|
||||||
|
popoverPresentationController.barButtonItem = barButtonItem;
|
||||||
|
} else {
|
||||||
|
popoverPresentationController.sourceView = sourceView;
|
||||||
|
popoverPresentationController.sourceRect = sourceRect;
|
||||||
|
}
|
||||||
|
|
||||||
|
[self.navigationControllerForPopover presentViewController:viewController animated:YES completion:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (BOOL)hidePopoverAnimated:(BOOL)animated {
|
||||||
|
UIViewController *presentedViewController = self.navigationControllerForPopover.presentedViewController;
|
||||||
|
if (!presentedViewController || presentedViewController.presentationController.presentationStyle != UIModalPresentationPopover)
|
||||||
|
return NO;
|
||||||
|
|
||||||
|
[presentedViewController dismissViewControllerAnimated:animated completion:nil];
|
||||||
|
return YES;
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)hidePopover {
|
||||||
|
[self hidePopoverAnimated:YES];
|
||||||
|
[self.modalNavigationController dismissViewControllerAnimated:YES completion:nil];
|
||||||
|
}
|
||||||
|
|
||||||
|
- (UINavigationController *)navigationControllerForPopover {
|
||||||
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
|
return self.masterContainerViewController.masterNavigationController;
|
||||||
|
} else {
|
||||||
|
return self.navigationController;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#pragma mark -
|
#pragma mark -
|
||||||
#pragma mark Story functions
|
#pragma mark Story functions
|
||||||
|
|
||||||
|
|
|
@ -12,7 +12,6 @@
|
||||||
#import "ASIHTTPRequest.h"
|
#import "ASIHTTPRequest.h"
|
||||||
#import "PullToRefreshView.h"
|
#import "PullToRefreshView.h"
|
||||||
#import "BaseViewController.h"
|
#import "BaseViewController.h"
|
||||||
#import "WYPopoverController.h"
|
|
||||||
#import "NBNotifier.h"
|
#import "NBNotifier.h"
|
||||||
#import "IASKAppSettingsViewController.h"
|
#import "IASKAppSettingsViewController.h"
|
||||||
#import "MCSwipeTableViewCell.h"
|
#import "MCSwipeTableViewCell.h"
|
||||||
|
@ -23,7 +22,6 @@
|
||||||
<UITableViewDelegate, UITableViewDataSource,
|
<UITableViewDelegate, UITableViewDataSource,
|
||||||
UIAlertViewDelegate, PullToRefreshViewDelegate,
|
UIAlertViewDelegate, PullToRefreshViewDelegate,
|
||||||
ASIHTTPRequestDelegate, NSCacheDelegate,
|
ASIHTTPRequestDelegate, NSCacheDelegate,
|
||||||
WYPopoverControllerDelegate,
|
|
||||||
UIPopoverControllerDelegate,
|
UIPopoverControllerDelegate,
|
||||||
IASKSettingsDelegate,
|
IASKSettingsDelegate,
|
||||||
MCSwipeTableViewCellDelegate,
|
MCSwipeTableViewCellDelegate,
|
||||||
|
@ -50,8 +48,6 @@ UIGestureRecognizerDelegate> {
|
||||||
UIBarButtonItem * settingsBarButton;
|
UIBarButtonItem * settingsBarButton;
|
||||||
UIBarButtonItem * activitiesButton;
|
UIBarButtonItem * activitiesButton;
|
||||||
UISegmentedControl * intelligenceControl;
|
UISegmentedControl * intelligenceControl;
|
||||||
WYPopoverController *popoverController;
|
|
||||||
Class popoverClass;
|
|
||||||
NBNotifier *notifier;
|
NBNotifier *notifier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -80,7 +76,6 @@ UIGestureRecognizerDelegate> {
|
||||||
@property (nonatomic) NSDate *lastUpdate;
|
@property (nonatomic) NSDate *lastUpdate;
|
||||||
@property (nonatomic) NSCache *imageCache;
|
@property (nonatomic) NSCache *imageCache;
|
||||||
@property (nonatomic) IBOutlet UISegmentedControl * intelligenceControl;
|
@property (nonatomic) IBOutlet UISegmentedControl * intelligenceControl;
|
||||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
|
||||||
@property (nonatomic) NSIndexPath *currentRowAtIndexPath;
|
@property (nonatomic) NSIndexPath *currentRowAtIndexPath;
|
||||||
@property (nonatomic) NSInteger currentSection;
|
@property (nonatomic) NSInteger currentSection;
|
||||||
@property (strong, nonatomic) IBOutlet UIView *noFocusMessage;
|
@property (strong, nonatomic) IBOutlet UIView *noFocusMessage;
|
||||||
|
|
|
@ -70,7 +70,6 @@ static UIFont *userLabelFont;
|
||||||
@synthesize pull;
|
@synthesize pull;
|
||||||
@synthesize lastUpdate;
|
@synthesize lastUpdate;
|
||||||
@synthesize imageCache;
|
@synthesize imageCache;
|
||||||
@synthesize popoverController;
|
|
||||||
@synthesize currentRowAtIndexPath;
|
@synthesize currentRowAtIndexPath;
|
||||||
@synthesize currentSection;
|
@synthesize currentSection;
|
||||||
@synthesize noFocusMessage;
|
@synthesize noFocusMessage;
|
||||||
|
@ -103,8 +102,6 @@ static UIFont *userLabelFont;
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
- (void)viewDidLoad {
|
||||||
[super viewDidLoad];
|
[super viewDidLoad];
|
||||||
popoverClass = [WYPopoverController class];
|
|
||||||
|
|
||||||
pull = [[PullToRefreshView alloc] initWithScrollView:self.feedTitlesTable];
|
pull = [[PullToRefreshView alloc] initWithScrollView:self.feedTitlesTable];
|
||||||
self.pull.tintColor = UIColorFromLightDarkRGB(0x0, 0xffffff);
|
self.pull.tintColor = UIColorFromLightDarkRGB(0x0, 0xffffff);
|
||||||
self.pull.backgroundColor = UIColorFromRGB(0xE3E6E0);
|
self.pull.backgroundColor = UIColorFromRGB(0xE3E6E0);
|
||||||
|
@ -329,8 +326,7 @@ static UIFont *userLabelFont;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)viewWillDisappear:(BOOL)animated {
|
- (void)viewWillDisappear:(BOOL)animated {
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
self.popoverController = nil;
|
|
||||||
[super viewWillDisappear:animated];
|
[super viewWillDisappear:animated];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -834,67 +830,22 @@ static UIFont *userLabelFont;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)tapAddSite:(id)sender {
|
- (IBAction)tapAddSite:(id)sender {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.addSiteViewController contentSize:CGSizeMake(320, 355) barButtonItem:self.addBarButton];
|
||||||
[appDelegate.masterContainerViewController showSitePopover:self.addBarButton];
|
[self.appDelegate.addSiteViewController reload];
|
||||||
} else {
|
|
||||||
if (self.popoverController == nil) {
|
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
|
||||||
initWithContentViewController:appDelegate.addSiteViewController];
|
|
||||||
|
|
||||||
self.popoverController.delegate = self;
|
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(self.view.frame.size.width - 36,
|
|
||||||
MIN(self.view.frame.size.height - 28, 355))];
|
|
||||||
[self.popoverController presentPopoverFromBarButtonItem:self.addBarButton
|
|
||||||
permittedArrowDirections:UIPopoverArrowDirectionDown
|
|
||||||
animated:YES];
|
|
||||||
}
|
|
||||||
|
|
||||||
[appDelegate.addSiteViewController reload];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)showSettingsPopover:(id)sender {
|
- (IBAction)showSettingsPopover:(id)sender {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
[self.appDelegate.feedsMenuViewController view];
|
||||||
[appDelegate.masterContainerViewController showFeedMenuPopover:self.settingsBarButton];
|
NSInteger menuCount = [self.appDelegate.feedsMenuViewController.menuOptions count];
|
||||||
} else {
|
|
||||||
if (self.popoverController == nil) {
|
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
|
||||||
initWithContentViewController:appDelegate.feedsMenuViewController];
|
|
||||||
|
|
||||||
self.popoverController.delegate = self;
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.feedsMenuViewController contentSize:CGSizeMake(200, 38 * menuCount) barButtonItem:self.settingsBarButton];
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[appDelegate.feedsMenuViewController view]; // Force viewDidLoad
|
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(200, 38 * [appDelegate.feedsMenuViewController.menuOptions count])];
|
|
||||||
[self.popoverController presentPopoverFromBarButtonItem:self.settingsBarButton
|
|
||||||
permittedArrowDirections:UIPopoverArrowDirectionDown
|
|
||||||
animated:YES];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)showInteractionsPopover:(id)sender {
|
- (IBAction)showInteractionsPopover:(id)sender {
|
||||||
if (self.popoverController == nil) {
|
CGSize size = CGSizeMake(self.view.frame.size.width - 36,
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
self.view.frame.size.height - 60);
|
||||||
initWithContentViewController:appDelegate.dashboardViewController];
|
|
||||||
|
|
||||||
self.popoverController.delegate = self;
|
[self.appDelegate showPopoverWithViewController:self.appDelegate.dashboardViewController contentSize:size barButtonItem:self.activitiesButton];
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(self.view.frame.size.width - 36,
|
|
||||||
self.view.frame.size.height - 60)];
|
|
||||||
[self.popoverController presentPopoverFromBarButtonItem:self.activitiesButton
|
|
||||||
permittedArrowDirections:UIPopoverArrowDirectionUp
|
|
||||||
animated:YES];
|
|
||||||
|
|
||||||
[appDelegate.dashboardViewController refreshInteractions];
|
[appDelegate.dashboardViewController refreshInteractions];
|
||||||
[appDelegate.dashboardViewController refreshActivity];
|
[appDelegate.dashboardViewController refreshActivity];
|
||||||
|
@ -1002,8 +953,7 @@ static UIFont *userLabelFont;
|
||||||
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
|
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
[self.appDelegate hidePopoverAnimated:YES];
|
||||||
self.popoverController = nil;
|
|
||||||
|
|
||||||
self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x8F918B);
|
self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x8F918B);
|
||||||
self.navigationController.navigationBar.barTintColor = UIColorFromRGB(0xE3E6E0);
|
self.navigationController.navigationBar.barTintColor = UIColorFromRGB(0xE3E6E0);
|
||||||
|
@ -1955,19 +1905,6 @@ heightForHeaderInSection:(NSInteger)section {
|
||||||
return self.lastUpdate;
|
return self.lastUpdate;
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark WYPopoverControllerDelegate implementation
|
|
||||||
|
|
||||||
- (void)popoverControllerDidDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//Safe to release the popover here
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//The popover is automatically dismissed if you click outside it, unless you return NO here
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)resetToolbar {
|
- (void)resetToolbar {
|
||||||
self.navigationItem.leftBarButtonItem = nil;
|
self.navigationItem.leftBarButtonItem = nil;
|
||||||
self.navigationItem.titleView = nil;
|
self.navigationItem.titleView = nil;
|
||||||
|
|
|
@ -1506,7 +1506,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
||||||
- (void)showOriginalStory:(UIGestureRecognizer *)gesture {
|
- (void)showOriginalStory:(UIGestureRecognizer *)gesture {
|
||||||
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
||||||
objectForKey:@"story_permalink"]];
|
objectForKey:@"story_permalink"]];
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[appDelegate hidePopover];
|
||||||
|
|
||||||
if (!gesture || [gesture isKindOfClass:[UITapGestureRecognizer class]]) {
|
if (!gesture || [gesture isKindOfClass:[UITapGestureRecognizer class]]) {
|
||||||
[appDelegate showOriginalStory:url];
|
[appDelegate showOriginalStory:url];
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
#import "BaseViewController.h"
|
#import "BaseViewController.h"
|
||||||
#import "NewsBlurAppDelegate.h"
|
#import "NewsBlurAppDelegate.h"
|
||||||
#import "WYPopoverController.h"
|
|
||||||
#import "THCircularProgressView.h"
|
#import "THCircularProgressView.h"
|
||||||
#import "NBNotifier.h"
|
#import "NBNotifier.h"
|
||||||
|
|
||||||
|
@ -17,7 +16,7 @@
|
||||||
@class ASIHTTPRequest;
|
@class ASIHTTPRequest;
|
||||||
|
|
||||||
@interface StoryPageControl : BaseViewController
|
@interface StoryPageControl : BaseViewController
|
||||||
<UIScrollViewDelegate, UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate, UIGestureRecognizerDelegate, WYPopoverControllerDelegate> {
|
<UIScrollViewDelegate, UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate, UIGestureRecognizerDelegate> {
|
||||||
|
|
||||||
NewsBlurAppDelegate *appDelegate;
|
NewsBlurAppDelegate *appDelegate;
|
||||||
|
|
||||||
|
@ -31,9 +30,6 @@
|
||||||
UIView *progressView;
|
UIView *progressView;
|
||||||
UIView *progressViewContainer;
|
UIView *progressViewContainer;
|
||||||
|
|
||||||
WYPopoverController *popoverController;
|
|
||||||
Class popoverClass;
|
|
||||||
|
|
||||||
BOOL isDraggingScrollview;
|
BOOL isDraggingScrollview;
|
||||||
BOOL isAnimatedIntoPlace;
|
BOOL isAnimatedIntoPlace;
|
||||||
BOOL inRotation;
|
BOOL inRotation;
|
||||||
|
@ -82,8 +78,6 @@
|
||||||
@property (nonatomic, strong) NBNotifier *notifier;
|
@property (nonatomic, strong) NBNotifier *notifier;
|
||||||
@property (nonatomic) NSInteger scrollingToPage;
|
@property (nonatomic) NSInteger scrollingToPage;
|
||||||
|
|
||||||
@property (nonatomic, strong) WYPopoverController *popoverController;
|
|
||||||
|
|
||||||
- (void)resizeScrollView;
|
- (void)resizeScrollView;
|
||||||
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController;
|
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController;
|
||||||
- (void)layoutForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
|
- (void)layoutForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
|
||||||
|
|
|
@ -45,7 +45,6 @@
|
||||||
@synthesize buttonBack;
|
@synthesize buttonBack;
|
||||||
@synthesize bottomSize;
|
@synthesize bottomSize;
|
||||||
@synthesize bottomSizeHeightConstraint;
|
@synthesize bottomSizeHeightConstraint;
|
||||||
@synthesize popoverController;
|
|
||||||
@synthesize loadingIndicator;
|
@synthesize loadingIndicator;
|
||||||
@synthesize inTouchMove;
|
@synthesize inTouchMove;
|
||||||
@synthesize isDraggingScrollview;
|
@synthesize isDraggingScrollview;
|
||||||
|
@ -102,8 +101,6 @@
|
||||||
[self.scrollView sizeToFit];
|
[self.scrollView sizeToFit];
|
||||||
// NSLog(@"Scroll view frame post 2: %@", NSStringFromCGRect(self.scrollView.frame));
|
// NSLog(@"Scroll view frame post 2: %@", NSStringFromCGRect(self.scrollView.frame));
|
||||||
|
|
||||||
popoverClass = [WYPopoverController class];
|
|
||||||
|
|
||||||
// adding HUD for progress bar
|
// adding HUD for progress bar
|
||||||
CGFloat radius = 8;
|
CGFloat radius = 8;
|
||||||
circularProgressView = [[THCircularProgressView alloc]
|
circularProgressView = [[THCircularProgressView alloc]
|
||||||
|
@ -1078,7 +1075,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
- (IBAction)showOriginalSubview:(id)sender {
|
- (IBAction)showOriginalSubview:(id)sender {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[appDelegate hidePopover];
|
||||||
|
|
||||||
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
||||||
objectForKey:@"story_permalink"]];
|
objectForKey:@"story_permalink"]];
|
||||||
|
@ -1156,26 +1153,6 @@
|
||||||
// popPC.sourceRect = [sender frame];
|
// popPC.sourceRect = [sender frame];
|
||||||
|
|
||||||
[self presentViewController:self.appDelegate.fontSettingsNavigationController animated:YES completion:nil];
|
[self presentViewController:self.appDelegate.fontSettingsNavigationController animated:YES completion:nil];
|
||||||
return;
|
|
||||||
|
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
|
||||||
[appDelegate.masterContainerViewController showFontSettingsPopover:self.fontSettingsButton];
|
|
||||||
} else {
|
|
||||||
if (self.popoverController == nil) {
|
|
||||||
self.popoverController = [[WYPopoverController alloc]
|
|
||||||
initWithContentViewController:appDelegate.fontSettingsNavigationController];
|
|
||||||
|
|
||||||
self.popoverController.delegate = self;
|
|
||||||
} else {
|
|
||||||
[self.popoverController dismissPopoverAnimated:YES];
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
[self.popoverController setPopoverContentSize:CGSizeMake(240.0, 302.0)];
|
|
||||||
[self.popoverController presentPopoverFromBarButtonItem:self.fontSettingsButton
|
|
||||||
permittedArrowDirections:UIPopoverArrowDirectionAny
|
|
||||||
animated:YES];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)setFontStyle:(NSString *)fontStyle {
|
- (void)setFontStyle:(NSString *)fontStyle {
|
||||||
|
@ -1292,19 +1269,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#pragma mark -
|
|
||||||
#pragma mark WYPopoverControllerDelegate implementation
|
|
||||||
|
|
||||||
- (void)popoverControllerDidDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//Safe to release the popover here
|
|
||||||
self.popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)thePopoverController {
|
|
||||||
//The popover is automatically dismissed if you click outside it, unless you return NO here
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
#pragma mark - UIPopoverPresentationControllerDelegate
|
#pragma mark - UIPopoverPresentationControllerDelegate
|
||||||
|
|
||||||
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
|
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
|
||||||
|
|
|
@ -100,7 +100,7 @@
|
||||||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC),
|
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC),
|
||||||
dispatch_get_main_queue(), ^() {
|
dispatch_get_main_queue(), ^() {
|
||||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[appDelegate hidePopover];
|
||||||
} else {
|
} else {
|
||||||
[appDelegate.navigationController dismissViewControllerAnimated:YES completion:nil];
|
[appDelegate.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
@ -540,7 +540,7 @@
|
||||||
#pragma mark Actions
|
#pragma mark Actions
|
||||||
|
|
||||||
- (IBAction)doCloseDialog:(id)sender {
|
- (IBAction)doCloseDialog:(id)sender {
|
||||||
[appDelegate.masterContainerViewController hidePopover];
|
[appDelegate hidePopover];
|
||||||
[appDelegate.trainerViewController dismissViewControllerAnimated:YES completion:nil];
|
[appDelegate.trainerViewController dismissViewControllerAnimated:YES completion:nil];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -307,8 +307,6 @@
|
||||||
FF6281FA1A09614C00271FDB /* all@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281F91A09614C00271FDB /* all@3x.png */; };
|
FF6281FA1A09614C00271FDB /* all@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281F91A09614C00271FDB /* all@3x.png */; };
|
||||||
FF6281FC1A0962FA00271FDB /* unread_green@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281FB1A0962FA00271FDB /* unread_green@3x.png */; };
|
FF6281FC1A0962FA00271FDB /* unread_green@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281FB1A0962FA00271FDB /* unread_green@3x.png */; };
|
||||||
FF6281FE1A09641100271FDB /* unread_yellow@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281FD1A09641100271FDB /* unread_yellow@3x.png */; };
|
FF6281FE1A09641100271FDB /* unread_yellow@3x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF6281FD1A09641100271FDB /* unread_yellow@3x.png */; };
|
||||||
FF62820A1A098EA800271FDB /* WYPopoverController.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6282071A098EA800271FDB /* WYPopoverController.m */; };
|
|
||||||
FF62820B1A098EA800271FDB /* WYStoryboardPopoverSegue.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6282091A098EA800271FDB /* WYStoryboardPopoverSegue.m */; };
|
|
||||||
FF62820E1A1160DD00271FDB /* add_tag.png in Resources */ = {isa = PBXBuildFile; fileRef = FF62820C1A1160DD00271FDB /* add_tag.png */; };
|
FF62820E1A1160DD00271FDB /* add_tag.png in Resources */ = {isa = PBXBuildFile; fileRef = FF62820C1A1160DD00271FDB /* add_tag.png */; };
|
||||||
FF62820F1A1160DD00271FDB /* add_tag@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF62820D1A1160DD00271FDB /* add_tag@2x.png */; };
|
FF62820F1A1160DD00271FDB /* add_tag@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = FF62820D1A1160DD00271FDB /* add_tag@2x.png */; };
|
||||||
FF6282151A11613900271FDB /* UserTagsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6282141A11613900271FDB /* UserTagsViewController.m */; };
|
FF6282151A11613900271FDB /* UserTagsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6282141A11613900271FDB /* UserTagsViewController.m */; };
|
||||||
|
@ -923,10 +921,6 @@
|
||||||
FF6281F91A09614C00271FDB /* all@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "all@3x.png"; sourceTree = "<group>"; };
|
FF6281F91A09614C00271FDB /* all@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "all@3x.png"; sourceTree = "<group>"; };
|
||||||
FF6281FB1A0962FA00271FDB /* unread_green@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unread_green@3x.png"; sourceTree = "<group>"; };
|
FF6281FB1A0962FA00271FDB /* unread_green@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unread_green@3x.png"; sourceTree = "<group>"; };
|
||||||
FF6281FD1A09641100271FDB /* unread_yellow@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unread_yellow@3x.png"; sourceTree = "<group>"; };
|
FF6281FD1A09641100271FDB /* unread_yellow@3x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unread_yellow@3x.png"; sourceTree = "<group>"; };
|
||||||
FF6282061A098EA800271FDB /* WYPopoverController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYPopoverController.h; sourceTree = "<group>"; };
|
|
||||||
FF6282071A098EA800271FDB /* WYPopoverController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYPopoverController.m; sourceTree = "<group>"; };
|
|
||||||
FF6282081A098EA800271FDB /* WYStoryboardPopoverSegue.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WYStoryboardPopoverSegue.h; sourceTree = "<group>"; };
|
|
||||||
FF6282091A098EA800271FDB /* WYStoryboardPopoverSegue.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WYStoryboardPopoverSegue.m; sourceTree = "<group>"; };
|
|
||||||
FF62820C1A1160DD00271FDB /* add_tag.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_tag.png; sourceTree = "<group>"; };
|
FF62820C1A1160DD00271FDB /* add_tag.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = add_tag.png; sourceTree = "<group>"; };
|
||||||
FF62820D1A1160DD00271FDB /* add_tag@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "add_tag@2x.png"; sourceTree = "<group>"; };
|
FF62820D1A1160DD00271FDB /* add_tag@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "add_tag@2x.png"; sourceTree = "<group>"; };
|
||||||
FF6282131A11613900271FDB /* UserTagsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserTagsViewController.h; sourceTree = "<group>"; };
|
FF6282131A11613900271FDB /* UserTagsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UserTagsViewController.h; sourceTree = "<group>"; };
|
||||||
|
@ -1301,7 +1295,6 @@
|
||||||
FF2EB77E1AA65504002549A7 /* InAppSettingsKit */,
|
FF2EB77E1AA65504002549A7 /* InAppSettingsKit */,
|
||||||
FF753CC2175858FC00344EC9 /* fmdb */,
|
FF753CC2175858FC00344EC9 /* fmdb */,
|
||||||
FF22FE5316E53ADC0046165A /* Underscore */,
|
FF22FE5316E53ADC0046165A /* Underscore */,
|
||||||
FF6282051A098EA800271FDB /* WYPopoverController */,
|
|
||||||
FF1F13CC18A9C2BE00FDA816 /* TMCache */,
|
FF1F13CC18A9C2BE00FDA816 /* TMCache */,
|
||||||
43A4C3E615B0099B008787B5 /* NewsBlur_Prefix.pch */,
|
43A4C3E615B0099B008787B5 /* NewsBlur_Prefix.pch */,
|
||||||
43A4C3B915B00966008787B5 /* ABTableViewCell.h */,
|
43A4C3B915B00966008787B5 /* ABTableViewCell.h */,
|
||||||
|
@ -2065,18 +2058,6 @@
|
||||||
name = Activities;
|
name = Activities;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
FF6282051A098EA800271FDB /* WYPopoverController */ = {
|
|
||||||
isa = PBXGroup;
|
|
||||||
children = (
|
|
||||||
FF6282061A098EA800271FDB /* WYPopoverController.h */,
|
|
||||||
FF6282071A098EA800271FDB /* WYPopoverController.m */,
|
|
||||||
FF6282081A098EA800271FDB /* WYStoryboardPopoverSegue.h */,
|
|
||||||
FF6282091A098EA800271FDB /* WYStoryboardPopoverSegue.m */,
|
|
||||||
);
|
|
||||||
name = WYPopoverController;
|
|
||||||
path = "Other Sources/WYPopoverController";
|
|
||||||
sourceTree = "<group>";
|
|
||||||
};
|
|
||||||
FF753CC2175858FC00344EC9 /* fmdb */ = {
|
FF753CC2175858FC00344EC9 /* fmdb */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
@ -2668,7 +2649,6 @@
|
||||||
7843F50511EEB1A000675F64 /* FeedDetailTableCell.m in Sources */,
|
7843F50511EEB1A000675F64 /* FeedDetailTableCell.m in Sources */,
|
||||||
784B50ED127E3F68008F90EA /* LoginViewController.m in Sources */,
|
784B50ED127E3F68008F90EA /* LoginViewController.m in Sources */,
|
||||||
78095E34128EF30C00230C8E /* ASIAuthenticationDialog.m in Sources */,
|
78095E34128EF30C00230C8E /* ASIAuthenticationDialog.m in Sources */,
|
||||||
FF62820B1A098EA800271FDB /* WYStoryboardPopoverSegue.m in Sources */,
|
|
||||||
78095E35128EF30D00230C8E /* ASIDownloadCache.m in Sources */,
|
78095E35128EF30D00230C8E /* ASIDownloadCache.m in Sources */,
|
||||||
FF2EB7B41AA65504002549A7 /* IASKSettingsReader.m in Sources */,
|
FF2EB7B41AA65504002549A7 /* IASKSettingsReader.m in Sources */,
|
||||||
78095E36128EF30D00230C8E /* ASIFormDataRequest.m in Sources */,
|
78095E36128EF30D00230C8E /* ASIFormDataRequest.m in Sources */,
|
||||||
|
@ -2688,7 +2668,6 @@
|
||||||
FF5EA47F143B691000B7563D /* AddSiteViewController.m in Sources */,
|
FF5EA47F143B691000B7563D /* AddSiteViewController.m in Sources */,
|
||||||
FF1F13D818AAC97900FDA816 /* UIImage+Resize.m in Sources */,
|
FF1F13D818AAC97900FDA816 /* UIImage+Resize.m in Sources */,
|
||||||
FFD887F01445F1E800385399 /* AddSiteAutocompleteCell.m in Sources */,
|
FFD887F01445F1E800385399 /* AddSiteAutocompleteCell.m in Sources */,
|
||||||
FF62820A1A098EA800271FDB /* WYPopoverController.m in Sources */,
|
|
||||||
FF8D1ECD1BAA311000725D8A /* SBJson4StreamParser.m in Sources */,
|
FF8D1ECD1BAA311000725D8A /* SBJson4StreamParser.m in Sources */,
|
||||||
FFE5322F144C8AC300ACFDE0 /* Utilities.m in Sources */,
|
FFE5322F144C8AC300ACFDE0 /* Utilities.m in Sources */,
|
||||||
FFD1D7311459B63500E46F89 /* BaseViewController.m in Sources */,
|
FFD1D7311459B63500E46F89 /* BaseViewController.m in Sources */,
|
||||||
|
|
|
@ -1,278 +0,0 @@
|
||||||
/*
|
|
||||||
Version 0.3.6
|
|
||||||
|
|
||||||
WYPopoverController is available under the MIT license.
|
|
||||||
|
|
||||||
Copyright © 2013 Nicolas CHENG
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#import <QuartzCore/QuartzCore.h>
|
|
||||||
|
|
||||||
@protocol WYPopoverControllerDelegate;
|
|
||||||
@class WYPopoverTheme;
|
|
||||||
|
|
||||||
#ifndef WY_POPOVER_DEFAULT_ANIMATION_DURATION
|
|
||||||
#define WY_POPOVER_DEFAULT_ANIMATION_DURATION .25f
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifndef WY_POPOVER_MIN_SIZE
|
|
||||||
#define WY_POPOVER_MIN_SIZE CGSizeMake(240, 160)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
typedef NS_OPTIONS(NSUInteger, WYPopoverArrowDirection) {
|
|
||||||
WYPopoverArrowDirectionUp = 1UL << 0,
|
|
||||||
WYPopoverArrowDirectionDown = 1UL << 1,
|
|
||||||
WYPopoverArrowDirectionLeft = 1UL << 2,
|
|
||||||
WYPopoverArrowDirectionRight = 1UL << 3,
|
|
||||||
WYPopoverArrowDirectionNone = 1UL << 4,
|
|
||||||
WYPopoverArrowDirectionAny = WYPopoverArrowDirectionUp | WYPopoverArrowDirectionDown | WYPopoverArrowDirectionLeft | WYPopoverArrowDirectionRight,
|
|
||||||
WYPopoverArrowDirectionUnknown = NSUIntegerMax
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef NS_OPTIONS(NSUInteger, WYPopoverAnimationOptions) {
|
|
||||||
WYPopoverAnimationOptionFade = 1UL << 0, // default
|
|
||||||
WYPopoverAnimationOptionScale = 1UL << 1,
|
|
||||||
WYPopoverAnimationOptionFadeWithScale = WYPopoverAnimationOptionFade | WYPopoverAnimationOptionScale
|
|
||||||
};
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@interface WYPopoverBackgroundView : UIView
|
|
||||||
|
|
||||||
// UI_APPEARANCE_SELECTOR doesn't support BOOLs on iOS 7,
|
|
||||||
// so these two need to be NSUInteger instead
|
|
||||||
@property (nonatomic, assign) NSUInteger usesRoundedArrow UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger dimsBackgroundViewsTintColor UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *tintColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, strong) UIColor *fillTopColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, strong) UIColor *fillBottomColor UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *glossShadowColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) CGSize glossShadowOffset UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger glossShadowBlurRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, assign) NSUInteger borderWidth UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger arrowBase UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger arrowHeight UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *outerShadowColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, strong) UIColor *outerStrokeColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger outerShadowBlurRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) CGSize outerShadowOffset UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger outerCornerRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger minOuterCornerRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *innerShadowColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, strong) UIColor *innerStrokeColor UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger innerShadowBlurRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) CGSize innerShadowOffset UI_APPEARANCE_SELECTOR;
|
|
||||||
@property (nonatomic, assign) NSUInteger innerCornerRadius UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, assign) UIEdgeInsets viewContentInsets UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *overlayColor UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@property(nonatomic) CGFloat preferredAlpha UI_APPEARANCE_SELECTOR;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@interface WYPopoverController : NSObject <UIAppearanceContainer>
|
|
||||||
|
|
||||||
@property (nonatomic, weak) id <WYPopoverControllerDelegate> delegate;
|
|
||||||
|
|
||||||
@property (nonatomic, assign) BOOL dismissOnTap;
|
|
||||||
@property (nonatomic, copy) NSArray *passthroughViews;
|
|
||||||
@property (nonatomic, assign) BOOL dismissOnPassthroughViewTap;
|
|
||||||
@property (nonatomic, assign) BOOL wantsDefaultContentAppearance;
|
|
||||||
@property (nonatomic, assign) UIEdgeInsets popoverLayoutMargins;
|
|
||||||
@property (nonatomic, readonly, getter=isPopoverVisible) BOOL popoverVisible;
|
|
||||||
@property (nonatomic, strong, readonly) UIViewController *contentViewController;
|
|
||||||
@property (nonatomic, assign) CGSize popoverContentSize;
|
|
||||||
@property (nonatomic, assign) float animationDuration;
|
|
||||||
@property (nonatomic, assign) BOOL implicitAnimationsDisabled;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) WYPopoverTheme *theme;
|
|
||||||
|
|
||||||
@property (nonatomic, copy) void (^dismissCompletionBlock)(WYPopoverController *dimissedController);
|
|
||||||
|
|
||||||
+ (void)setDefaultTheme:(WYPopoverTheme *)theme;
|
|
||||||
+ (WYPopoverTheme *)defaultTheme;
|
|
||||||
|
|
||||||
// initialization
|
|
||||||
|
|
||||||
- (id)initWithContentViewController:(UIViewController *)viewController;
|
|
||||||
|
|
||||||
// theme
|
|
||||||
|
|
||||||
- (void)beginThemeUpdates;
|
|
||||||
- (void)endThemeUpdates;
|
|
||||||
|
|
||||||
// Present popover from classic views methods
|
|
||||||
|
|
||||||
- (void)presentPopoverFromRect:(CGRect)rect
|
|
||||||
inView:(UIView *)view
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromRect:(CGRect)rect
|
|
||||||
inView:(UIView *)view
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromRect:(CGRect)rect
|
|
||||||
inView:(UIView *)view
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromRect:(CGRect)rect
|
|
||||||
inView:(UIView *)view
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
// Present popover from bar button items methods
|
|
||||||
|
|
||||||
- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options;
|
|
||||||
|
|
||||||
- (void)presentPopoverFromBarButtonItem:(UIBarButtonItem *)item
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
// Present popover as dialog methods
|
|
||||||
|
|
||||||
- (void)presentPopoverAsDialogAnimated:(BOOL)animated;
|
|
||||||
|
|
||||||
- (void)presentPopoverAsDialogAnimated:(BOOL)animated
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
- (void)presentPopoverAsDialogAnimated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options;
|
|
||||||
|
|
||||||
- (void)presentPopoverAsDialogAnimated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
// Dismiss popover methods
|
|
||||||
|
|
||||||
- (void)dismissPopoverAnimated:(BOOL)animated;
|
|
||||||
|
|
||||||
- (void)dismissPopoverAnimated:(BOOL)animated
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
- (void)dismissPopoverAnimated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)aOptions;
|
|
||||||
|
|
||||||
- (void)dismissPopoverAnimated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)aOptions
|
|
||||||
completion:(void (^)(void))completion;
|
|
||||||
|
|
||||||
// Misc
|
|
||||||
|
|
||||||
- (void)setPopoverContentSize:(CGSize)size animated:(BOOL)animated;
|
|
||||||
- (void)performWithoutAnimation:(void (^)(void))aBlock;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@protocol WYPopoverControllerDelegate <NSObject>
|
|
||||||
@optional
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldDismissPopover:(WYPopoverController *)popoverController;
|
|
||||||
|
|
||||||
- (void)popoverControllerDidPresentPopover:(WYPopoverController *)popoverController;
|
|
||||||
|
|
||||||
- (void)popoverControllerDidDismissPopover:(WYPopoverController *)popoverController;
|
|
||||||
|
|
||||||
- (void)popoverController:(WYPopoverController *)popoverController willRepositionPopoverToRect:(inout CGRect *)rect inView:(inout UIView **)view;
|
|
||||||
|
|
||||||
- (BOOL)popoverControllerShouldIgnoreKeyboardBounds:(WYPopoverController *)popoverController;
|
|
||||||
|
|
||||||
- (void)popoverController:(WYPopoverController *)popoverController willTranslatePopoverWithYOffset:(float *)value;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@interface WYPopoverTheme : NSObject
|
|
||||||
|
|
||||||
// These two can be BOOLs, because implicit casting
|
|
||||||
// between BOOLs and NSUIntegers works fine
|
|
||||||
@property (nonatomic, assign) BOOL usesRoundedArrow;
|
|
||||||
@property (nonatomic, assign) BOOL dimsBackgroundViewsTintColor;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *tintColor;
|
|
||||||
@property (nonatomic, strong) UIColor *fillTopColor;
|
|
||||||
@property (nonatomic, strong) UIColor *fillBottomColor;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *glossShadowColor;
|
|
||||||
@property (nonatomic, assign) CGSize glossShadowOffset;
|
|
||||||
@property (nonatomic, assign) NSUInteger glossShadowBlurRadius;
|
|
||||||
|
|
||||||
@property (nonatomic, assign) NSUInteger borderWidth;
|
|
||||||
@property (nonatomic, assign) NSUInteger arrowBase;
|
|
||||||
@property (nonatomic, assign) NSUInteger arrowHeight;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *outerShadowColor;
|
|
||||||
@property (nonatomic, strong) UIColor *outerStrokeColor;
|
|
||||||
@property (nonatomic, assign) NSUInteger outerShadowBlurRadius;
|
|
||||||
@property (nonatomic, assign) CGSize outerShadowOffset;
|
|
||||||
@property (nonatomic, assign) NSUInteger outerCornerRadius;
|
|
||||||
@property (nonatomic, assign) NSUInteger minOuterCornerRadius;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *innerShadowColor;
|
|
||||||
@property (nonatomic, strong) UIColor *innerStrokeColor;
|
|
||||||
@property (nonatomic, assign) NSUInteger innerShadowBlurRadius;
|
|
||||||
@property (nonatomic, assign) CGSize innerShadowOffset;
|
|
||||||
@property (nonatomic, assign) NSUInteger innerCornerRadius;
|
|
||||||
|
|
||||||
@property (nonatomic, assign) UIEdgeInsets viewContentInsets;
|
|
||||||
|
|
||||||
@property (nonatomic, strong) UIColor *overlayColor;
|
|
||||||
|
|
||||||
@property (nonatomic) CGFloat preferredAlpha;
|
|
||||||
|
|
||||||
+ (instancetype)theme;
|
|
||||||
+ (instancetype)themeForIOS6;
|
|
||||||
+ (instancetype)themeForIOS7;
|
|
||||||
|
|
||||||
@end
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,40 +0,0 @@
|
||||||
/*
|
|
||||||
Version 0.3.6
|
|
||||||
|
|
||||||
WYPopoverController is available under the MIT license.
|
|
||||||
|
|
||||||
Copyright © 2013 Nicolas CHENG
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
#import "WYPopoverController.h"
|
|
||||||
|
|
||||||
@interface WYStoryboardPopoverSegue : UIStoryboardSegue
|
|
||||||
|
|
||||||
- (WYPopoverController*)popoverControllerWithSender:(id)sender
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated;
|
|
||||||
|
|
||||||
- (WYPopoverController*)popoverControllerWithSender:(id)sender
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)arrowDirections
|
|
||||||
animated:(BOOL)animated
|
|
||||||
options:(WYPopoverAnimationOptions)options;
|
|
||||||
|
|
||||||
@end
|
|
|
@ -1,97 +0,0 @@
|
||||||
/*
|
|
||||||
Version 0.3.6
|
|
||||||
|
|
||||||
WYPopoverController is available under the MIT license.
|
|
||||||
|
|
||||||
Copyright © 2013 Nicolas CHENG
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
|
||||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
|
||||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
||||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#import "WYStoryboardPopoverSegue.h"
|
|
||||||
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@interface WYStoryboardPopoverSegue()
|
|
||||||
{
|
|
||||||
WYPopoverController *_popoverController;
|
|
||||||
id _sender;
|
|
||||||
WYPopoverArrowDirection _arrowDirections;
|
|
||||||
WYPopoverAnimationOptions _options;
|
|
||||||
BOOL _animated;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
@implementation WYStoryboardPopoverSegue
|
|
||||||
|
|
||||||
- (void)perform
|
|
||||||
{
|
|
||||||
if ([_sender isKindOfClass:[UIBarButtonItem class]])
|
|
||||||
{
|
|
||||||
[_popoverController presentPopoverFromBarButtonItem:(UIBarButtonItem*)_sender
|
|
||||||
permittedArrowDirections:_arrowDirections
|
|
||||||
animated:_animated
|
|
||||||
options:_options];
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
UIView *view = (UIView *)_sender;
|
|
||||||
[_popoverController presentPopoverFromRect:view.bounds
|
|
||||||
inView:view
|
|
||||||
permittedArrowDirections:_arrowDirections
|
|
||||||
animated:_animated
|
|
||||||
options:_options];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
- (WYPopoverController *)popoverControllerWithSender:(id)aSender
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)aArrowDirections
|
|
||||||
animated:(BOOL)aAnimated
|
|
||||||
{
|
|
||||||
return [self popoverControllerWithSender:aSender
|
|
||||||
permittedArrowDirections:aArrowDirections
|
|
||||||
animated:aAnimated
|
|
||||||
options:WYPopoverAnimationOptionFade];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (WYPopoverController *)popoverControllerWithSender:(id)aSender
|
|
||||||
permittedArrowDirections:(WYPopoverArrowDirection)aArrowDirections
|
|
||||||
animated:(BOOL)aAnimated
|
|
||||||
options:(WYPopoverAnimationOptions)aOptions
|
|
||||||
{
|
|
||||||
_sender = aSender;
|
|
||||||
_arrowDirections = aArrowDirections;
|
|
||||||
_animated = aAnimated;
|
|
||||||
_options = aOptions;
|
|
||||||
|
|
||||||
_popoverController = [[WYPopoverController alloc] initWithContentViewController:self.destinationViewController];
|
|
||||||
|
|
||||||
return _popoverController;
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)dealloc
|
|
||||||
{
|
|
||||||
_sender = nil;
|
|
||||||
_popoverController = nil;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
Loading…
Add table
Reference in a new issue