summaryrefslogtreecommitdiff
path: root/MobileCydia.mm
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2014-05-12 22:37:40 -0700
committerJay Freeman (saurik) <saurik@saurik.com>2014-05-12 22:37:40 -0700
commit5fe2bcc666ee632689fded66cca7dd523d3a2728 (patch)
tree74488b5ba23d80a7b5afabcff7ace3e82b170fe1 /MobileCydia.mm
parent93d811a2abe6e53522cb696d33717cadcefd3f69 (diff)
Generalize TabBarController transients to CyteKit.
Diffstat (limited to 'MobileCydia.mm')
-rw-r--r--MobileCydia.mm98
1 files changed, 5 insertions, 93 deletions
diff --git a/MobileCydia.mm b/MobileCydia.mm
index f5aaaf8..d959185 100644
--- a/MobileCydia.mm
+++ b/MobileCydia.mm
@@ -112,6 +112,7 @@ extern "C" {
#include "CyteKit/IndirectDelegate.h"
#include "CyteKit/PerlCompatibleRegEx.hpp"
#include "CyteKit/TableViewCell.h"
+#include "CyteKit/TabBarController.h"
#include "CyteKit/WebScriptObject-Cyte.h"
#include "CyteKit/WebViewController.h"
#include "CyteKit/WebViewTableViewCell.h"
@@ -6827,7 +6828,7 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
/* }}} */
/* Cydia Tab Bar Controller {{{ */
-@interface CYTabBarController : UITabBarController <
+@interface CydiaTabBarController : CyteTabBarController <
UITabBarControllerDelegate,
ProgressDelegate
> {
@@ -6838,9 +6839,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
bool updating_;
// XXX: ok, "updatedelegate_"?...
_transient NSObject<CydiaDelegate> *updatedelegate_;
-
- _H<UIViewController> remembered_;
- _transient UIViewController *transient_;
}
- (NSArray *) navigationURLCollection;
@@ -6848,74 +6846,10 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
- (void) beginUpdate;
- (void) raiseBar:(BOOL)animated;
- (BOOL) updating;
-- (void) unloadData;
@end
-@implementation CYTabBarController
-
-- (void) didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
-
- // presenting a UINavigationController on 2.x does not update its transitionView
- // it thereby will not allow its topViewController to be unloaded by memory pressure
- if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_3_0) {
- UIViewController *selected([self selectedViewController]);
- for (UINavigationController *controller in [self viewControllers])
- if (controller != selected)
- if (UIViewController *top = [controller topViewController])
- [top unloadView];
- }
-}
-
-- (void) setUnselectedViewController:(UIViewController *)transient {
- if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_3_0) {
- if (transient != nil) {
- [[[self viewControllers] objectAtIndex:0] pushViewController:transient animated:YES];
- [self setSelectedIndex:0];
- } return;
- }
-
- NSMutableArray *controllers = [[[self viewControllers] mutableCopy] autorelease];
- if (transient != nil) {
- UINavigationController *navigation([[[UINavigationController alloc] init] autorelease]);
- [navigation setViewControllers:[NSArray arrayWithObject:transient]];
- transient = navigation;
-
- if (transient_ == nil)
- remembered_ = [controllers objectAtIndex:0];
- transient_ = transient;
- [transient_ setTabBarItem:[remembered_ tabBarItem]];
- [controllers replaceObjectAtIndex:0 withObject:transient_];
- [self setSelectedIndex:0];
- [self setViewControllers:controllers];
- [self concealTabBarSelection];
- } else if (remembered_ != nil) {
- [remembered_ setTabBarItem:[transient_ tabBarItem]];
- transient_ = transient;
- [controllers replaceObjectAtIndex:0 withObject:remembered_];
- remembered_ = nil;
- [self setViewControllers:controllers];
- [self revealTabBarSelection];
- }
-}
-
-- (UIViewController *) unselectedViewController {
- return transient_;
-}
-
-- (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
- if ([self unselectedViewController])
- [self setUnselectedViewController:nil];
-
- // presenting a UINavigationController on 2.x does not update its transitionView
- // if this view was unloaded, the tranitionView may currently be presenting nothing
- if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_3_0) {
- UINavigationController *navigation((UINavigationController *) viewController);
- [navigation pushViewController:[[[UIViewController alloc] init] autorelease] animated:NO];
- [navigation popViewControllerAnimated:NO];
- }
-}
+@implementation CydiaTabBarController
- (NSArray *) navigationURLCollection {
NSMutableArray *items([NSMutableArray array]);
@@ -6930,28 +6864,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
return items;
}
-- (void) dismissModalViewControllerAnimated:(BOOL)animated {
- if ([self modalViewController] == nil && [self unselectedViewController] != nil)
- [self setUnselectedViewController:nil];
- else
- [super dismissModalViewControllerAnimated:YES];
-}
-
-- (void) unloadData {
- [super unloadData];
-
- for (UINavigationController *controller in [self viewControllers])
- [controller unloadData];
-
- if (UIViewController *selected = [self selectedViewController])
- [selected reloadData];
-
- if (UIViewController *unselected = [self unselectedViewController]) {
- [unselected unloadData];
- [unselected reloadData];
- }
-}
-
- (void) dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
@@ -9111,7 +9023,7 @@ if (kCFCoreFoundationVersionNumber < 800) {
UITabBarControllerDelegate
> {
_H<UIWindow> window_;
- _H<CYTabBarController> tabbar_;
+ _H<CydiaTabBarController> tabbar_;
_H<CydiaLoadingViewController> emulated_;
_H<NSMutableArray> essential_;
@@ -9912,7 +9824,7 @@ if (kCFCoreFoundationVersionNumber < 800) {
}
- (void) setupViewControllers {
- tabbar_ = [[[CYTabBarController alloc] initWithDatabase:database_] autorelease];
+ tabbar_ = [[[CydiaTabBarController alloc] initWithDatabase:database_] autorelease];
NSMutableArray *items;
if (kCFCoreFoundationVersionNumber < 800) {