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 {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
} else {
|
||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
||||
appDelegate.feedsViewController.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -310,12 +309,11 @@
|
|||
[self.errorLabel setHidden:NO];
|
||||
} else {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
} else {
|
||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
||||
appDelegate.feedsViewController.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
}
|
||||
[appDelegate reloadFeedsView:NO];
|
||||
[self.appDelegate reloadFeedsView:NO];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -189,10 +189,9 @@
|
|||
}
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
} else {
|
||||
[appDelegate.feedDetailViewController.popoverController dismissPopoverAnimated:YES];
|
||||
appDelegate.feedDetailViewController.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
}
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#import "ASIHTTPRequest.h"
|
||||
#import "BaseViewController.h"
|
||||
#import "Utilities.h"
|
||||
#import "WYPopoverController.h"
|
||||
#import "NBNotifier.h"
|
||||
#import "MCSwipeTableViewCell.h"
|
||||
|
||||
|
@ -22,7 +21,7 @@
|
|||
@interface FeedDetailViewController : BaseViewController
|
||||
<UITableViewDelegate, UITableViewDataSource, UIAlertViewDelegate,
|
||||
UIPopoverControllerDelegate, ASIHTTPRequestDelegate,
|
||||
WYPopoverControllerDelegate, MCSwipeTableViewCellDelegate,
|
||||
MCSwipeTableViewCellDelegate,
|
||||
UIGestureRecognizerDelegate, UISearchBarDelegate> {
|
||||
NewsBlurAppDelegate *appDelegate;
|
||||
|
||||
|
@ -37,7 +36,6 @@
|
|||
|
||||
UITableView * storyTitlesTable;
|
||||
UIBarButtonItem * feedMarkReadButton;
|
||||
WYPopoverController *popoverController;
|
||||
Class popoverClass;
|
||||
NBNotifier *notifier;
|
||||
}
|
||||
|
@ -50,7 +48,6 @@
|
|||
@property (nonatomic) IBOutlet UIBarButtonItem * spacer2BarButton;
|
||||
@property (nonatomic) IBOutlet UIBarButtonItem * separatorBarButton;
|
||||
@property (nonatomic) IBOutlet UIBarButtonItem * titleImageBarButton;
|
||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
||||
@property (nonatomic, retain) NBNotifier *notifier;
|
||||
@property (nonatomic, retain) StoriesCollection *storiesCollection;
|
||||
@property (nonatomic) UISearchBar *searchBar;
|
||||
|
|
|
@ -23,7 +23,6 @@
|
|||
#import "NSObject+SBJSON.h"
|
||||
#import "StringHelper.h"
|
||||
#import "Utilities.h"
|
||||
#import "WYPopoverController.h"
|
||||
#import "UIBarButtonItem+Image.h"
|
||||
#import "FeedDetailMenuViewController.h"
|
||||
#import "MarkReadMenuViewController.h"
|
||||
|
@ -51,7 +50,6 @@
|
|||
|
||||
@implementation FeedDetailViewController
|
||||
|
||||
@synthesize popoverController;
|
||||
@synthesize storyTitlesTable, feedMarkReadButton;
|
||||
@synthesize settingsBarButton;
|
||||
@synthesize separatorBarButton;
|
||||
|
@ -87,7 +85,6 @@
|
|||
name:UIContentSizeCategoryDidChangeNotification
|
||||
object:nil];
|
||||
|
||||
popoverClass = [WYPopoverController class];
|
||||
self.storyTitlesTable.backgroundColor = UIColorFromRGB(0xf4f4f4);
|
||||
self.storyTitlesTable.separatorColor = UIColorFromRGB(0xE9E8E4);
|
||||
|
||||
|
@ -431,8 +428,7 @@
|
|||
[super viewDidDisappear:animated];
|
||||
|
||||
[self.searchBar resignFirstResponder];
|
||||
[self.popoverController dismissPopoverAnimated:YES];
|
||||
self.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
|
||||
|
||||
if (self.isMovingToParentViewController) {
|
||||
|
@ -1818,8 +1814,7 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
|||
}
|
||||
|
||||
- (IBAction)doOpenMarkReadMenu:(id)sender {
|
||||
[self.popoverController dismissPopoverAnimated:YES];
|
||||
self.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
|
||||
void (^pop)(void) = ^{
|
||||
if (!self.isPhoneOrCompact) {
|
||||
|
@ -1865,30 +1860,13 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
|||
return;
|
||||
}
|
||||
|
||||
if (!self.isPhoneOrCompact) {
|
||||
[appDelegate.masterContainerViewController showFeedDetailMenuPopover:self.settingsBarButton];
|
||||
} else {
|
||||
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.feedDetailMenuViewController buildMenuOptions];
|
||||
[self.appDelegate.feedDetailMenuViewController view];
|
||||
NSInteger menuCount = [self.appDelegate.feedDetailMenuViewController.menuOptions count] + 2;
|
||||
|
||||
[self.appDelegate showPopoverWithViewController:self.appDelegate.feedDetailMenuViewController contentSize:CGSizeMake(260, 38 * menuCount) barButtonItem:self.settingsBarButton];
|
||||
}
|
||||
|
||||
|
||||
|
||||
- (void)confirmDeleteSite {
|
||||
UIAlertView *deleteConfirm = [[UIAlertView alloc]
|
||||
initWithTitle:@"Positive?"
|
||||
|
@ -2247,17 +2225,4 @@ didEndSwipingSwipingWithState:(MCSwipeTableViewCellState)state
|
|||
[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
|
||||
|
|
|
@ -126,10 +126,9 @@
|
|||
}
|
||||
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
} else {
|
||||
[appDelegate.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
||||
appDelegate.feedsViewController.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
}
|
||||
[tableView deselectRowAtIndexPath:indexPath animated:YES];
|
||||
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
@property (nonatomic) CALayer *leftBorder;
|
||||
@property (nonatomic) CALayer *rightBorder;
|
||||
@property (atomic, strong) IBOutlet NewsBlurAppDelegate *appDelegate;
|
||||
@property (nonatomic, readonly) UINavigationController *masterNavigationController;
|
||||
|
||||
|
||||
- (void)syncNextPreviousButtons;
|
||||
|
@ -49,12 +50,6 @@
|
|||
|
||||
- (void)dragStoryToolbar:(int)yCoordinate;
|
||||
- (void)showUserProfilePopover:(id)sender;
|
||||
- (void)showFeedMenuPopover:(id)sender;
|
||||
- (void)showFeedDetailMenuPopover:(id)sender;
|
||||
- (void)showFontSettingsPopover:(id)sender;
|
||||
- (void)showTrainingPopover:(id)sender;
|
||||
- (void)showUserTagsPopover:(id)sender;
|
||||
- (void)showSitePopover:(id)sender;
|
||||
- (BOOL)hidePopoverAnimated:(BOOL)animated;
|
||||
- (void)hidePopover;
|
||||
|
||||
@end
|
||||
|
|
|
@ -303,115 +303,39 @@
|
|||
|
||||
# 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 {
|
||||
if ([sender class] == [InteractionCell class] ||
|
||||
[sender class] == [ActivityCell class]) {
|
||||
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]) {
|
||||
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]) {
|
||||
[self showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) barButtonItem:sender];
|
||||
[self.appDelegate showPopoverWithViewController:self.appDelegate.userProfileNavigationController contentSize:CGSizeMake(320, 454) barButtonItem:sender];
|
||||
} else {
|
||||
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 {
|
||||
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]) {
|
||||
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]) {
|
||||
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 {
|
||||
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 {
|
||||
[self.storyPageControl setNextPreviousButtons];
|
||||
}
|
||||
|
@ -581,7 +505,7 @@
|
|||
[self transitionToFeedDetail:YES];
|
||||
}
|
||||
- (void)transitionToFeedDetail:(BOOL)resetLayout {
|
||||
[self hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
if (self.feedDetailIsVisible) resetLayout = NO;
|
||||
self.feedDetailIsVisible = YES;
|
||||
|
||||
|
@ -856,7 +780,7 @@
|
|||
return;
|
||||
}
|
||||
|
||||
[self hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
|
||||
if (self.isSharingStory) {
|
||||
[self transitionFromShareView];
|
||||
|
@ -936,7 +860,7 @@
|
|||
return;
|
||||
}
|
||||
|
||||
[self hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
CGRect vb = [self.view bounds];
|
||||
self.isSharingStory = YES;
|
||||
self.storyPageControl.traverseView.hidden = YES;
|
||||
|
@ -970,7 +894,7 @@
|
|||
return;
|
||||
}
|
||||
|
||||
[self hidePopover];
|
||||
[self.appDelegate hidePopover];
|
||||
CGRect vb = [self.view bounds];
|
||||
self.isSharingStory = NO;
|
||||
self.storyPageControl.traverseView.hidden = NO;
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
#import "BaseViewController.h"
|
||||
#import "FMDatabaseQueue.h"
|
||||
#import "EventWindow.h"
|
||||
#import "WYPopoverController.h"
|
||||
|
||||
#define FEED_DETAIL_VIEW_TAG 1000001
|
||||
#define STORY_DETAIL_VIEW_TAG 1000002
|
||||
|
@ -50,7 +49,7 @@
|
|||
@class TMCache;
|
||||
|
||||
@interface NewsBlurAppDelegate : BaseViewController
|
||||
<UIApplicationDelegate, UIAlertViewDelegate, UINavigationControllerDelegate, UIPopoverPresentationControllerDelegate, WYPopoverControllerDelegate,
|
||||
<UIApplicationDelegate, UIAlertViewDelegate, UINavigationControllerDelegate, UIPopoverPresentationControllerDelegate,
|
||||
SFSafariViewControllerDelegate> {
|
||||
EventWindow *window;
|
||||
UINavigationController *ftuxNavigationController;
|
||||
|
@ -86,7 +85,6 @@ SFSafariViewControllerDelegate> {
|
|||
UINavigationController *originalStoryViewNavController;
|
||||
UserProfileViewController *userProfileViewController;
|
||||
IASKAppSettingsViewController *preferencesViewController;
|
||||
WYPopoverController *popoverController;
|
||||
|
||||
NSString * activeUsername;
|
||||
NSString * activeUserProfileId;
|
||||
|
@ -175,7 +173,6 @@ SFSafariViewControllerDelegate> {
|
|||
@property (nonatomic) IBOutlet FontSettingsViewController *fontSettingsViewController;
|
||||
@property (nonatomic) IBOutlet UserProfileViewController *userProfileViewController;
|
||||
@property (nonatomic) IBOutlet IASKAppSettingsViewController *preferencesViewController;
|
||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
||||
@property (nonatomic, strong) UINavigationController *fontSettingsNavigationController;
|
||||
@property (nonatomic, strong) MarkReadMenuViewController *markReadMenuViewController;
|
||||
@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)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;
|
||||
- (NSString *)extractFolderName:(NSString *)folderName;
|
||||
- (NSString *)extractParentFolderName:(NSString *)folderName;
|
||||
|
|
|
@ -103,7 +103,6 @@
|
|||
@synthesize originalStoryViewNavController;
|
||||
@synthesize userProfileViewController;
|
||||
@synthesize preferencesViewController;
|
||||
@synthesize popoverController;
|
||||
|
||||
@synthesize firstTimeUserViewController;
|
||||
@synthesize firstTimeUserAddSitesViewController;
|
||||
|
@ -445,7 +444,7 @@
|
|||
|
||||
- (void)hideUserProfileModal {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[self.masterContainerViewController hidePopover];
|
||||
[self hidePopover];
|
||||
} else {
|
||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
@ -610,7 +609,7 @@
|
|||
}];
|
||||
|
||||
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];
|
||||
activityViewController.modalPresentationStyle = UIModalPresentationPopover;
|
||||
// iOS 8+
|
||||
|
@ -808,27 +807,9 @@
|
|||
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.popoverController setPopoverContentSize:CGSizeMake(220, 38 * MIN(6.5, [[self.dictSavedStoryTags allKeys] count] + [self.activeStory[@"user_tags"] count] + 1))];
|
||||
CGRect frame = [sender CGRectValue];
|
||||
[self.popoverController presentPopoverFromRect:frame
|
||||
inView:self.storyPageControl.currentPage.view
|
||||
permittedArrowDirections:WYPopoverArrowDirectionAny
|
||||
animated:YES];
|
||||
}
|
||||
[self showPopoverWithViewController:self.userTagsViewController contentSize:CGSizeMake(220, 382) sourceView:self.storyPageControl.view sourceRect:frame];
|
||||
}
|
||||
|
||||
#pragma mark - UIPopoverPresentationControllerDelegate
|
||||
|
@ -837,19 +818,6 @@
|
|||
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 -
|
||||
|
||||
- (void)reloadFeedsView:(BOOL)showLoader {
|
||||
|
@ -926,9 +894,8 @@
|
|||
[self loadFeedDetailView];
|
||||
} else if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
if (self.feedsViewController.popoverController) {
|
||||
[self.feedsViewController.popoverController dismissPopoverAnimated:YES];
|
||||
}
|
||||
[self hidePopoverAnimated:YES];
|
||||
|
||||
if (self.navigationController.presentedViewController) {
|
||||
[self.navigationController dismissViewControllerAnimated:YES completion:^{
|
||||
[self loadFeedDetailView];
|
||||
|
@ -944,9 +911,7 @@
|
|||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||
if (self.feedsViewController.popoverController) {
|
||||
[self.feedsViewController.popoverController dismissPopoverAnimated:NO];
|
||||
}
|
||||
[self hidePopoverAnimated:NO];
|
||||
}
|
||||
|
||||
self.inFindingStoryMode = YES;
|
||||
|
@ -1232,9 +1197,7 @@
|
|||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone) {
|
||||
[self.navigationController popToRootViewControllerAnimated:NO];
|
||||
[self.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||
if (self.feedsViewController.popoverController) {
|
||||
[self.feedsViewController.popoverController dismissPopoverAnimated:NO];
|
||||
}
|
||||
[self hidePopoverAnimated:NO];
|
||||
}
|
||||
|
||||
self.inFindingStoryMode = YES;
|
||||
|
@ -2098,6 +2061,61 @@
|
|||
[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 Story functions
|
||||
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
#import "ASIHTTPRequest.h"
|
||||
#import "PullToRefreshView.h"
|
||||
#import "BaseViewController.h"
|
||||
#import "WYPopoverController.h"
|
||||
#import "NBNotifier.h"
|
||||
#import "IASKAppSettingsViewController.h"
|
||||
#import "MCSwipeTableViewCell.h"
|
||||
|
@ -23,7 +22,6 @@
|
|||
<UITableViewDelegate, UITableViewDataSource,
|
||||
UIAlertViewDelegate, PullToRefreshViewDelegate,
|
||||
ASIHTTPRequestDelegate, NSCacheDelegate,
|
||||
WYPopoverControllerDelegate,
|
||||
UIPopoverControllerDelegate,
|
||||
IASKSettingsDelegate,
|
||||
MCSwipeTableViewCellDelegate,
|
||||
|
@ -50,8 +48,6 @@ UIGestureRecognizerDelegate> {
|
|||
UIBarButtonItem * settingsBarButton;
|
||||
UIBarButtonItem * activitiesButton;
|
||||
UISegmentedControl * intelligenceControl;
|
||||
WYPopoverController *popoverController;
|
||||
Class popoverClass;
|
||||
NBNotifier *notifier;
|
||||
}
|
||||
|
||||
|
@ -80,7 +76,6 @@ UIGestureRecognizerDelegate> {
|
|||
@property (nonatomic) NSDate *lastUpdate;
|
||||
@property (nonatomic) NSCache *imageCache;
|
||||
@property (nonatomic) IBOutlet UISegmentedControl * intelligenceControl;
|
||||
@property (nonatomic, retain) WYPopoverController *popoverController;
|
||||
@property (nonatomic) NSIndexPath *currentRowAtIndexPath;
|
||||
@property (nonatomic) NSInteger currentSection;
|
||||
@property (strong, nonatomic) IBOutlet UIView *noFocusMessage;
|
||||
|
|
|
@ -70,7 +70,6 @@ static UIFont *userLabelFont;
|
|||
@synthesize pull;
|
||||
@synthesize lastUpdate;
|
||||
@synthesize imageCache;
|
||||
@synthesize popoverController;
|
||||
@synthesize currentRowAtIndexPath;
|
||||
@synthesize currentSection;
|
||||
@synthesize noFocusMessage;
|
||||
|
@ -103,8 +102,6 @@ static UIFont *userLabelFont;
|
|||
|
||||
- (void)viewDidLoad {
|
||||
[super viewDidLoad];
|
||||
popoverClass = [WYPopoverController class];
|
||||
|
||||
pull = [[PullToRefreshView alloc] initWithScrollView:self.feedTitlesTable];
|
||||
self.pull.tintColor = UIColorFromLightDarkRGB(0x0, 0xffffff);
|
||||
self.pull.backgroundColor = UIColorFromRGB(0xE3E6E0);
|
||||
|
@ -329,8 +326,7 @@ static UIFont *userLabelFont;
|
|||
}
|
||||
|
||||
- (void)viewWillDisappear:(BOOL)animated {
|
||||
[self.popoverController dismissPopoverAnimated:YES];
|
||||
self.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
[super viewWillDisappear:animated];
|
||||
}
|
||||
|
||||
|
@ -834,67 +830,22 @@ static UIFont *userLabelFont;
|
|||
}
|
||||
|
||||
- (IBAction)tapAddSite:(id)sender {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController showSitePopover:self.addBarButton];
|
||||
} 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];
|
||||
[self.appDelegate showPopoverWithViewController:self.appDelegate.addSiteViewController contentSize:CGSizeMake(320, 355) barButtonItem:self.addBarButton];
|
||||
[self.appDelegate.addSiteViewController reload];
|
||||
}
|
||||
|
||||
- (IBAction)showSettingsPopover:(id)sender {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController showFeedMenuPopover:self.settingsBarButton];
|
||||
} else {
|
||||
if (self.popoverController == nil) {
|
||||
self.popoverController = [[WYPopoverController alloc]
|
||||
initWithContentViewController:appDelegate.feedsMenuViewController];
|
||||
[self.appDelegate.feedsMenuViewController view];
|
||||
NSInteger menuCount = [self.appDelegate.feedsMenuViewController.menuOptions count];
|
||||
|
||||
self.popoverController.delegate = self;
|
||||
} 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];
|
||||
}
|
||||
[self.appDelegate showPopoverWithViewController:self.appDelegate.feedsMenuViewController contentSize:CGSizeMake(200, 38 * menuCount) barButtonItem:self.settingsBarButton];
|
||||
}
|
||||
|
||||
- (IBAction)showInteractionsPopover:(id)sender {
|
||||
if (self.popoverController == nil) {
|
||||
self.popoverController = [[WYPopoverController alloc]
|
||||
initWithContentViewController:appDelegate.dashboardViewController];
|
||||
CGSize size = CGSizeMake(self.view.frame.size.width - 36,
|
||||
self.view.frame.size.height - 60);
|
||||
|
||||
self.popoverController.delegate = self;
|
||||
} 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];
|
||||
[self.appDelegate showPopoverWithViewController:self.appDelegate.dashboardViewController contentSize:size barButtonItem:self.activitiesButton];
|
||||
|
||||
[appDelegate.dashboardViewController refreshInteractions];
|
||||
[appDelegate.dashboardViewController refreshActivity];
|
||||
|
@ -1002,8 +953,7 @@ static UIFont *userLabelFont;
|
|||
[self.presentedViewController dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
[self.popoverController dismissPopoverAnimated:YES];
|
||||
self.popoverController = nil;
|
||||
[self.appDelegate hidePopoverAnimated:YES];
|
||||
|
||||
self.navigationController.navigationBar.tintColor = UIColorFromRGB(0x8F918B);
|
||||
self.navigationController.navigationBar.barTintColor = UIColorFromRGB(0xE3E6E0);
|
||||
|
@ -1955,19 +1905,6 @@ heightForHeaderInSection:(NSInteger)section {
|
|||
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 {
|
||||
self.navigationItem.leftBarButtonItem = nil;
|
||||
self.navigationItem.titleView = nil;
|
||||
|
|
|
@ -1506,7 +1506,7 @@ shouldStartLoadWithRequest:(NSURLRequest *)request
|
|||
- (void)showOriginalStory:(UIGestureRecognizer *)gesture {
|
||||
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
||||
objectForKey:@"story_permalink"]];
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[appDelegate hidePopover];
|
||||
|
||||
if (!gesture || [gesture isKindOfClass:[UITapGestureRecognizer class]]) {
|
||||
[appDelegate showOriginalStory:url];
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
#import <UIKit/UIKit.h>
|
||||
#import "BaseViewController.h"
|
||||
#import "NewsBlurAppDelegate.h"
|
||||
#import "WYPopoverController.h"
|
||||
#import "THCircularProgressView.h"
|
||||
#import "NBNotifier.h"
|
||||
|
||||
|
@ -17,7 +16,7 @@
|
|||
@class ASIHTTPRequest;
|
||||
|
||||
@interface StoryPageControl : BaseViewController
|
||||
<UIScrollViewDelegate, UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate, UIGestureRecognizerDelegate, WYPopoverControllerDelegate> {
|
||||
<UIScrollViewDelegate, UIPopoverControllerDelegate, UIPopoverPresentationControllerDelegate, UIGestureRecognizerDelegate> {
|
||||
|
||||
NewsBlurAppDelegate *appDelegate;
|
||||
|
||||
|
@ -31,9 +30,6 @@
|
|||
UIView *progressView;
|
||||
UIView *progressViewContainer;
|
||||
|
||||
WYPopoverController *popoverController;
|
||||
Class popoverClass;
|
||||
|
||||
BOOL isDraggingScrollview;
|
||||
BOOL isAnimatedIntoPlace;
|
||||
BOOL inRotation;
|
||||
|
@ -82,8 +78,6 @@
|
|||
@property (nonatomic, strong) NBNotifier *notifier;
|
||||
@property (nonatomic) NSInteger scrollingToPage;
|
||||
|
||||
@property (nonatomic, strong) WYPopoverController *popoverController;
|
||||
|
||||
- (void)resizeScrollView;
|
||||
- (void)applyNewIndex:(NSInteger)newIndex pageController:(StoryDetailViewController *)pageController;
|
||||
- (void)layoutForInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation;
|
||||
|
|
|
@ -45,7 +45,6 @@
|
|||
@synthesize buttonBack;
|
||||
@synthesize bottomSize;
|
||||
@synthesize bottomSizeHeightConstraint;
|
||||
@synthesize popoverController;
|
||||
@synthesize loadingIndicator;
|
||||
@synthesize inTouchMove;
|
||||
@synthesize isDraggingScrollview;
|
||||
|
@ -102,8 +101,6 @@
|
|||
[self.scrollView sizeToFit];
|
||||
// NSLog(@"Scroll view frame post 2: %@", NSStringFromCGRect(self.scrollView.frame));
|
||||
|
||||
popoverClass = [WYPopoverController class];
|
||||
|
||||
// adding HUD for progress bar
|
||||
CGFloat radius = 8;
|
||||
circularProgressView = [[THCircularProgressView alloc]
|
||||
|
@ -1078,7 +1075,7 @@
|
|||
}
|
||||
|
||||
- (IBAction)showOriginalSubview:(id)sender {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[appDelegate hidePopover];
|
||||
|
||||
NSURL *url = [NSURL URLWithString:[appDelegate.activeStory
|
||||
objectForKey:@"story_permalink"]];
|
||||
|
@ -1156,26 +1153,6 @@
|
|||
// popPC.sourceRect = [sender frame];
|
||||
|
||||
[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 {
|
||||
|
@ -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
|
||||
|
||||
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller {
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 1.0 * NSEC_PER_SEC),
|
||||
dispatch_get_main_queue(), ^() {
|
||||
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[appDelegate hidePopover];
|
||||
} else {
|
||||
[appDelegate.navigationController dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
@ -540,7 +540,7 @@
|
|||
#pragma mark Actions
|
||||
|
||||
- (IBAction)doCloseDialog:(id)sender {
|
||||
[appDelegate.masterContainerViewController hidePopover];
|
||||
[appDelegate hidePopover];
|
||||
[appDelegate.trainerViewController dismissViewControllerAnimated:YES completion:nil];
|
||||
}
|
||||
|
||||
|
|
|
@ -307,8 +307,6 @@
|
|||
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 */; };
|
||||
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 */; };
|
||||
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 */; };
|
||||
|
@ -923,10 +921,6 @@
|
|||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
|
@ -1301,7 +1295,6 @@
|
|||
FF2EB77E1AA65504002549A7 /* InAppSettingsKit */,
|
||||
FF753CC2175858FC00344EC9 /* fmdb */,
|
||||
FF22FE5316E53ADC0046165A /* Underscore */,
|
||||
FF6282051A098EA800271FDB /* WYPopoverController */,
|
||||
FF1F13CC18A9C2BE00FDA816 /* TMCache */,
|
||||
43A4C3E615B0099B008787B5 /* NewsBlur_Prefix.pch */,
|
||||
43A4C3B915B00966008787B5 /* ABTableViewCell.h */,
|
||||
|
@ -2065,18 +2058,6 @@
|
|||
name = Activities;
|
||||
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 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
|
@ -2668,7 +2649,6 @@
|
|||
7843F50511EEB1A000675F64 /* FeedDetailTableCell.m in Sources */,
|
||||
784B50ED127E3F68008F90EA /* LoginViewController.m in Sources */,
|
||||
78095E34128EF30C00230C8E /* ASIAuthenticationDialog.m in Sources */,
|
||||
FF62820B1A098EA800271FDB /* WYStoryboardPopoverSegue.m in Sources */,
|
||||
78095E35128EF30D00230C8E /* ASIDownloadCache.m in Sources */,
|
||||
FF2EB7B41AA65504002549A7 /* IASKSettingsReader.m in Sources */,
|
||||
78095E36128EF30D00230C8E /* ASIFormDataRequest.m in Sources */,
|
||||
|
@ -2688,7 +2668,6 @@
|
|||
FF5EA47F143B691000B7563D /* AddSiteViewController.m in Sources */,
|
||||
FF1F13D818AAC97900FDA816 /* UIImage+Resize.m in Sources */,
|
||||
FFD887F01445F1E800385399 /* AddSiteAutocompleteCell.m in Sources */,
|
||||
FF62820A1A098EA800271FDB /* WYPopoverController.m in Sources */,
|
||||
FF8D1ECD1BAA311000725D8A /* SBJson4StreamParser.m in Sources */,
|
||||
FFE5322F144C8AC300ACFDE0 /* Utilities.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