X-Git-Url: https://git.saurik.com/cydia.git/blobdiff_plain/3da96c8627821957923c9712b44e16dfc7bdc3de..2e362598168e73f935146b3b7ec4318390651cc6:/CyteKit/TabBarController.mm diff --git a/CyteKit/TabBarController.mm b/CyteKit/TabBarController.mm index 401488ab..a6cd088b 100644 --- a/CyteKit/TabBarController.mm +++ b/CyteKit/TabBarController.mm @@ -1,5 +1,5 @@ /* Cydia - iPhone UIKit Front-End for Debian APT - * Copyright (C) 2008-2014 Jay Freeman (saurik) + * Copyright (C) 2008-2015 Jay Freeman (saurik) */ /* GNU General Public License, Version 3 {{{ */ @@ -19,15 +19,59 @@ **/ /* }}} */ +#include "CyteKit/UCPlatform.h" + #include "CyteKit/TabBarController.h" #include "iPhonePrivate.h" +#include + +@implementation CyteTabBarController { + _transient UIViewController *transient_; + _H remembered_; +} -@implementation UITabBarController (Cydia) +- (NSArray *) navigationURLCollection { + NSMutableArray *items([NSMutableArray array]); -@end + // XXX: Should this deal with transient view controllers? + for (id navigation in [self viewControllers]) { + NSArray *stack = [navigation performSelector:@selector(navigationURLCollection)]; + if (stack != nil) + [items addObject:stack]; + } + + return items; +} + +- (void) addViewControllers:(id)no, ... { + va_list args; + va_start(args, no); -@implementation CyteTabBarController + NSMutableArray *controllers([NSMutableArray array]); + + for (;;) { + auto title(va_arg(args, NSString *)); + if (title == nil) + break; + + UINavigationController *controller([[[UINavigationController alloc] init] autorelease]); + [controllers addObject:controller]; + + auto legacy(va_arg(args, NSString *)); + auto normal(va_arg(args, NSString *)); + auto select(va_arg(args, NSString *)); + + if (kCFCoreFoundationVersionNumber < 800) + [controller setTabBarItem:[[[UITabBarItem alloc] initWithTitle:title image:[UIImage imageNamed:legacy] tag:0] autorelease]]; + else + [controller setTabBarItem:[[[UITabBarItem alloc] initWithTitle:title image:[UIImage imageNamed:normal] selectedImage:[UIImage imageNamed:select]] autorelease]]; + } + + va_end(args); + + [self setViewControllers:controllers]; +} - (void) didReceiveMemoryWarning { [super didReceiveMemoryWarning];