/* 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 {{{ */
**/
/* }}} */
+#include "CyteKit/UCPlatform.h"
+
#include "CyteKit/TabBarController.h"
#include "iPhonePrivate.h"
+#include <Menes/ObjectHandle.h>
+
+@implementation CyteTabBarController {
+ _transient UIViewController *transient_;
+ _H<UIViewController> 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];