- (void) setConfigurationData:(NSString *)data;
@end
-@class PackageController;
+@class CYPackageController;
@protocol CydiaDelegate
- (void) retainNetworkActivityIndicator;
- (void) releaseNetworkActivityIndicator;
-- (void) setPackageController:(PackageController *)view;
+- (void) setPackageController:(CYPackageController *)view;
- (void) clearPackage:(Package *)package;
- (void) installPackage:(Package *)package;
- (void) installPackages:(NSArray *)packages;
- (UIProgressHUD *) addProgressHUD;
- (void) removeProgressHUD:(UIProgressHUD *)hud;
- (CYViewController *) pageForPackage:(NSString *)name;
-- (PackageController *) packageController;
- (void) showActionSheet:(UIActionSheet *)sheet fromItem:(UIBarButtonItem *)item;
@end
@end
/* }}} */
+ /* Emulated Loading Controller {{{ */
@interface CYEmulatedLoadingController : UIViewController {
CYLoadingIndicator *indicator_;
UITabBar *tabbar_;
}
@end
+ /* }}} */
/* Cydia Browser Controller {{{ */
@interface CYBrowserController : BrowserController {
@end
/* }}} */
/* Package Controller {{{ */
-@interface PackageController : CYBrowserController <
+@interface CYPackageController : CYBrowserController <
UIActionSheetDelegate
> {
_transient Database *database_;
@end
-@implementation PackageController
+@implementation CYPackageController
- (void) dealloc {
if (package_ != nil)
}
- (void) didSelectPackage:(Package *)package {
- PackageController *view([delegate_ packageController]);
+ CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
[view setPackage:package];
[view setDelegate:delegate_];
[[self navigationController] pushViewController:view animated:YES];
@end
/* }}} */
/* Source Table {{{ */
- @interface CYSourcesController : CYViewController <
+ @interface SourcesController : CYViewController <
UITableViewDataSource,
UITableViewDelegate
> {
@end
- @implementation CYSourcesController
+ @implementation SourcesController
- (void) _releaseConnection:(NSURLConnection *)connection {
if (connection != nil) {
}
- (void) showAddSourcePrompt {
- /*[book_ pushPage:[[[AddCYSourcesController alloc]
- initWithBook:book_
- database:database_
- ] autorelease]];*/
-
UIAlertView *alert = [[[UIAlertView alloc]
initWithTitle:UCLocalize("ENTER_APT_URL")
message:nil
/* }}} */
/* Installed Controller {{{ */
- @interface CYInstalledController : FilteredPackageController {
+ @interface InstalledController : FilteredPackageController {
BOOL expert_;
}
@end
- @implementation CYInstalledController
+ @implementation InstalledController
- (void) dealloc {
[super dealloc];
[packages_ setDelegate:delegate];
}
+@end
+/* }}} */
+/* Section Controller {{{ */
+@interface CYSectionController : FilteredPackageController {
+}
+
+- (id) initWithDatabase:(Database *)database section:(NSString *)section;
+
+@end
+
+@implementation CYSectionController
+
+- (void) dealloc {
+ [super dealloc];
+}
+
+- (id) initWithDatabase:(Database *)database section:(NSString *)name {
+ NSString *title;
+
+ if (name == nil) {
+ title = UCLocalize("ALL_PACKAGES");
+ } else if (![name isEqual:@""]) {
+ title = [[NSBundle mainBundle] localizedStringForKey:Simplify(name) value:nil table:@"Sections"];
+ } else {
+ title = UCLocalize("NO_SECTION");
+ }
+
+ if ((self = [super initWithDatabase:database title:title filter:@selector(isVisibleInSection:) with:name]) != nil) {
+ } return self;
+}
+
+- (void) reloadData {
+ [packages_ reloadData];
+}
+
+- (void) setDelegate:(id)delegate {
+ [super setDelegate:delegate];
+ [packages_ setDelegate:delegate];
+}
+
@end
/* }}} */
/* Home Controller {{{ */
- @interface CYHomeController : CYBrowserController {
+ @interface HomeController : CYBrowserController {
}
--
@end
- @implementation CYHomeController
+ @implementation HomeController
+ (BOOL)shouldHideNavigationBar {
return NO;
@end
/* }}} */
/* Manage Controller {{{ */
- @interface CYManageController : CYBrowserController {
+ @interface ManageController : CYBrowserController {
}
- (void) queueStatusDidChange;
@end
- @implementation CYManageController
+ @implementation ManageController
- (id) init {
if ((self = [super init]) != nil) {
@implementation CYTabBarController
-/* XXX: some logic should probably go here related to
-freeing the view controllers on tab change */
-
- (void) reloadData {
size_t count([[self viewControllers] count]);
for (size_t i(0); i != count; ++i) {
@end
/* }}} */
+ /* Section Controller {{{ */
+ @interface SectionController : FilteredPackageController {
+ }
+
+ - (id) initWithDatabase:(Database *)database section:(NSString *)section;
+
+ @end
+
+ @implementation SectionController
+
+ - (void) dealloc {
+ [super dealloc];
+ }
+
+ - (id) initWithDatabase:(Database *)database section:(NSString *)name {
+ NSString *title;
+
+ if (name == nil) {
+ title = UCLocalize("ALL_PACKAGES");
+ } else if (![name isEqual:@""]) {
+ title = [[NSBundle mainBundle] localizedStringForKey:Simplify(name) value:nil table:@"Sections"];
+ } else {
+ title = UCLocalize("NO_SECTION");
+ }
+
+ if ((self = [super initWithDatabase:database title:title filter:@selector(isVisibleInSection:) with:name]) != nil) {
+ } return self;
+ }
+
+ - (void) reloadData {
+ [packages_ reloadData];
+ }
+
+ - (void) setDelegate:(id)delegate {
+ [super setDelegate:delegate];
+ [packages_ setDelegate:delegate];
+ }
+
+ @end
+ /* }}} */
/* Sections Controller {{{ */
- @interface CYSectionsController : CYViewController <
+ @interface SectionsController : CYViewController <
UITableViewDataSource,
UITableViewDelegate
> {
@end
- @implementation CYSectionsController
+ @implementation SectionsController
- (void) dealloc {
[list_ setDataSource:nil];
Section *section = [self sectionAtIndexPath:indexPath];
- CYSectionController *controller = [[[CYSectionController alloc]
+ SectionController *controller = [[[SectionController alloc]
initWithDatabase:database_
section:[section name]
] autorelease];
[[self navigationController] pushViewController:controller animated:YES];
}
-- (NSString *) title { return UCLocalize("SECTIONS"); }
-
- (id) initWithDatabase:(Database *)database {
if ((self = [super init]) != nil) {
database_ = database;
@end
/* }}} */
+
/* Changes Controller {{{ */
- @interface CYChangesController : CYViewController <
+ @interface ChangesController : CYViewController <
UITableViewDataSource,
UITableViewDelegate
> {
@end
- @implementation CYChangesController
+ @implementation ChangesController
- (void) dealloc {
[list_ setDelegate:nil];
- (NSIndexPath *) tableView:(UITableView *)table willSelectRowAtIndexPath:(NSIndexPath *)path {
Package *package([self packageAtIndexPath:path]);
- PackageController *view([delegate_ packageController]);
+ CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
[view setDelegate:delegate_];
[view setPackage:package];
[[self navigationController] pushViewController:view animated:YES];
name = (NSString *) CFDateFormatterCreateStringWithDate(NULL, formatter, (CFDateRef) [NSDate dateWithTimeIntervalSince1970:seen]);
[name autorelease];
- _profile(CYChangesController$reloadData$Allocate)
+ _profile(ChangesController$reloadData$Allocate)
name = [NSString stringWithFormat:UCLocalize("NEW_AT"), name];
section = [[[Section alloc] initWithName:name row:offset localize:NO] autorelease];
[sections_ addObject:section];
@end
/* }}} */
/* Search Controller {{{ */
- @interface CYSearchController : FilteredPackageController <
+ @interface SearchController : FilteredPackageController <
UISearchBarDelegate
> {
UISearchBar *search_;
}
- - (void) setSearchTerm:(NSString *)searchTerm;
- (id) initWithDatabase:(Database *)database;
+ - (void) setSearchTerm:(NSString *)term;
- (void) reloadData;
@end
- @implementation CYSearchController
+ @implementation SearchController
- (void) dealloc {
[search_ release];
[super dealloc];
}
+- (void) setSearchTerm:(NSString *)searchTerm {
+ [search_ setText:searchTerm];
+}
+
- (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar {
[packages_ setObject:[search_ text] forFilter:@selector(isUnfilteredAndSearchedForBy:)];
[search_ resignFirstResponder];
[self reloadData];
}
-- (void) setSearchTerm:(NSString *)term {
- [search_ setText:term];
-}
-
--- (NSString *) title { return nil; }
--
- (id) initWithDatabase:(Database *)database {
return [super initWithDatabase:database title:UCLocalize("SEARCH") filter:@selector(isUnfilteredAndSearchedForBy:) with:nil];
}
}
- (void) reloadData {
- _profile(CYSearchController$reloadData)
+ _profile(SearchController$reloadData)
[packages_ reloadData];
_end
PrintTimes();
@end
/* }}} */
/* Settings Controller {{{ */
- @interface CYPackageSettingsController : CYViewController <
+ @interface PackageSettingsController : CYViewController <
UITableViewDataSource,
UITableViewDelegate
> {
@end
- @implementation CYPackageSettingsController
+ @implementation PackageSettingsController
- (void) dealloc {
[name_ release];
return 2;
}
+- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+ return UCLocalize("CHANGE_PACKAGE_SETTINGS");
+}
+
- (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
return UCLocalize("SHOW_ALL_CHANGES_EX");
}
ignoredSwitch_ = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 50, 20)];
[ignoredSwitch_ setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
[ignoredSwitch_ addTarget:self action:@selector(onIgnored:) forEvents:UIControlEventValueChanged];
+ // Disable this switch, since it only reflects (not modifies) the ignored state.
+ [ignoredSwitch_ setUserInteractionEnabled:NO];
subscribedCell_ = [[UITableViewCell alloc] init];
[subscribedCell_ setText:UCLocalize("SHOW_ALL_CHANGES")];
@end
/* }}} */
- typedef enum {
- kCydiaTag,
- kSectionsTag,
- kChangesTag,
- kManageTag,
- kInstalledTag,
- kSourcesTag,
- kSearchTag
- } CYTabTag;
-
@interface Cydia : UIApplication <
ConfirmationControllerDelegate,
ProgressControllerDelegate,
unsigned locked_;
unsigned activity_;
- id queueDelegate_;
-
CYStashController *stash_;
bool loaded_;
- (void) setPage:(CYViewController *)page;
- (void) loadData;
- // XXX: I hate prototypes
- - (id) queueBadgeController;
-
@end
@implementation Cydia
}
}
+ // Navigation controller for the queuing badge.
+ - (CYNavigationController *) queueNavigationController {
+ NSArray *controllers = [tabbar_ viewControllers];
+ return [controllers objectAtIndex:3];
+ }
+
- (void) _updateData {
[self _saveConfig];
- for (CYNavigationController *controller in [tabbar_ viewControllers])
- [controller reloadData];
+ [tabbar_ reloadData];
- [queueDelegate_ queueStatusDidChange];
- [[[self queueBadgeController] tabBarItem] setBadgeValue:(Queuing_ ? UCLocalize("Q_D") : nil)];
- }
+ CYNavigationController *navigation = [self queueNavigationController];
- id queuedelegate = nil;
- - (int)indexOfTabWithTag:(int)tag {
- int i = 0;
- for (UINavigationController *controller in [tabbar_ viewControllers]) {
- if ([[controller tabBarItem] tag] == tag)
- return i;
- i += 1;
- }
++ id queuedelegate = nil;
+ if ([[navigation viewControllers] count] > 0)
+ queuedelegate = [[navigation viewControllers] objectAtIndex:0];
- return -1;
+ [queuedelegate queueStatusDidChange];
+ [[navigation tabBarItem] setBadgeValue:(Queuing_ ? UCLocalize("Q_D") : nil)];
}
- (void) _refreshIfPossible {
NSLog(@"changes:#%u", changes);
- UITabBarItem *changesItem = [[[tabbar_ viewControllers] objectAtIndex:[self indexOfTabWithTag:kChangesTag]] tabBarItem];
+ UITabBarItem *changesItem = [[[tabbar_ viewControllers] objectAtIndex:2] tabBarItem];
if (changes != 0) {
_trace();
NSString *badge([[NSNumber numberWithInt:changes] stringValue]);
CYNavigationController *navController = (CYNavigationController *) [tabbar_ selectedViewController];
[navController setViewControllers:[NSArray arrayWithObject:page]];
- NSLog(@"page: %@ nav: %@", page, navController);
+ for (CYNavigationController *page in [tabbar_ viewControllers])
+ if (page != navController)
+ [page setViewControllers:nil];
+ }
+
+ - (void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController {
+ CYNavigationController *controller = (CYNavigationController *) viewController;
+
+ if ([[controller viewControllers] count] == 0) {
+ int index = [tabbar_ selectedIndex];
+ CYViewController *root = nil;
+
+ if (index == 0)
+ root = [[[HomeController alloc] init] autorelease];
+ else if (index == 1)
+ root = [[[SectionsController alloc] initWithDatabase:database_] autorelease];
+ else if (index == 2)
+ root = [[[ChangesController alloc] initWithDatabase:database_ delegate:self] autorelease];
+
+ if (IsWildcat_) {
+ if (index == 3)
+ root = [[[InstalledController alloc] initWithDatabase:database_] autorelease];
+ else if (index == 4)
+ root = [[[SourcesController alloc] initWithDatabase:database_] autorelease];
+ else if (index == 5)
+ root = [[[SearchController alloc] initWithDatabase:database_] autorelease];
+ } else {
+ if (index == 3)
+ root = [[[ManageController alloc] init] autorelease];
+ else if (index == 4)
+ root = [[[SearchController alloc] initWithDatabase:database_] autorelease];
+ }
+
+ [root setDelegate:self];
+
+ if (root != nil)
+ [controller setViewControllers:[NSArray arrayWithObject:root]];
+ }
}
- (void) showSettings {
[self setNetworkActivityIndicatorVisible:NO];
}
-- (void) setPackageController:(PackageController *)view {
+- (void) setPackageController:(CYPackageController *)view {
WebThreadLock();
[view setPackage:nil];
WebThreadUnlock();
}
- // Returns the navigation controller for the queuing badge.
- - (id) queueBadgeController {
- int index = [self indexOfTabWithTag:kManageTag];
- if (index == -1)
- index = [self indexOfTabWithTag:kInstalledTag];
-- (PackageController *) _packageController {
- return [[[PackageController alloc] initWithDatabase:database_] autorelease];
-}
--
- return [[tabbar_ viewControllers] objectAtIndex:index];
-- (PackageController *) packageController {
- return [self _packageController];
--}
--
- (void) cancelAndClear:(bool)clear {
@synchronized (self) {
if (clear) {
- (CYViewController *) pageForPackage:(NSString *)name {
if (Package *package = [database_ packageWithName:name]) {
- PackageController *view([self packageController]);
+ CYPackageController *view = [[[CYPackageController alloc] initWithDatabase:database_] autorelease];
[view setPackage:package];
return view;
} else {
NSURL *url([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"unknown" ofType:@"html"]]);
url = [NSURL URLWithString:[[url absoluteString] stringByAppendingString:[NSString stringWithFormat:@"?%@", name]]];
- CYBrowserController *controller = [[[CYBrowserController alloc] init] autorelease];
- [controller loadURL:url];
- return controller;
+ CYBrowserController *browser = [[[CYBrowserController alloc] init] autorelease];
+ [browser loadURL:url];
+ return browser;
}
}
}
if ([base isEqualToString:@"sources"]) {
- CYSourcesController *source = [[[CYSourcesController alloc] initWithDatabase:database_] autorelease];
+ SourcesController *source = [[[SourcesController alloc] initWithDatabase:database_] autorelease];
return source;
}
if ([base isEqualToString:@"home"]) {
- CYHomeController *home = [[[CYHomeController alloc] init] autorelease];
+ HomeController *home = [[[HomeController alloc] init] autorelease];
return home;
}
if ([base isEqualToString:@"sections"]) {
- CYSectionsController *sections = [[[CYSectionsController alloc] initWithDatabase:database_] autorelease];
+ SectionsController *sections = [[[SectionsController alloc] initWithDatabase:database_] autorelease];
return sections;
}
if ([base isEqualToString:@"search"]) {
- CYSearchController *search = [[[CYSearchController alloc] initWithDatabase:database_] autorelease];
+ SearchController *search = [[[SearchController alloc] initWithDatabase:database_] autorelease];
return search;
}
if ([base isEqualToString:@"changes"]) {
- CYChangesController *changes = [[[CYChangesController alloc] initWithDatabase:database_ delegate:self] autorelease];
+ ChangesController *changes = [[[ChangesController alloc] initWithDatabase:database_ delegate:self] autorelease];
return changes;
}
if ([base isEqualToString:@"installed"]) {
- CYInstalledController *installed = [[[CYInstalledController alloc] initWithDatabase:database_] autorelease];
+ InstalledController *installed = [[[InstalledController alloc] initWithDatabase:database_] autorelease];
return installed;
}
} else if ([components count] == 2) {
}
if ([base isEqualToString:@"search"]) {
- CYSearchController *search = [[[CYSearchController alloc] initWithDatabase:database_] autorelease];
+ SearchController *search = [[[SearchController alloc] initWithDatabase:database_] autorelease];
[search setSearchTerm:argument];
return search;
}
if ([base isEqualToString:@"sections"]) {
if ([argument isEqualToString:@"all"])
argument = nil;
- CYSectionController *section = [[[CYSectionController alloc] initWithDatabase:database_ section:argument] autorelease];
+ SectionController *section = [[[SectionController alloc] initWithDatabase:database_ section:argument] autorelease];
[section setDelegate:self];
return section;
}
if ([base isEqualToString:@"sources"]) {
if ([argument isEqualToString:@"add"]) {
- CYSourcesController *source = [[[CYSourcesController alloc] initWithDatabase:database_] autorelease];
+ SourcesController *source = [[[SourcesController alloc] initWithDatabase:database_] autorelease];
[source showAddSourcePrompt];
return source;
} else {
if ([base isEqualToString:@"package"]) {
if ([arg2 isEqualToString:@"settings"]) {
- return [[[CYPackageSettingsController alloc] initWithDatabase:database_ package:arg1] autorelease];
+ return [[[PackageSettingsController alloc] initWithDatabase:database_ package:arg1] autorelease];
} else if ([arg2 isEqualToString:@"signature"]) {
return [[[SignatureController alloc] initWithDatabase:database_ package:arg1] autorelease];
} else if ([arg2 isEqualToString:@"files"]) {
}
- (BOOL) openCydiaURL:(NSURL *)url {
- CYViewController *page = nil;
+ CYViewController *page([self pageForURL:url]);
- if ((page = [self pageForURL:url]))
+ if (page != nil)
[self setPage:page];
- return !!page;
+ return page != nil;
}
- (void) applicationOpenURL:(NSURL *)url {
[tabbar_ setDelegate:self];
NSMutableArray *items([NSMutableArray arrayWithObjects:
- [[[UITabBarItem alloc] initWithTitle:@"Cydia" image:[UIImage applicationImageNamed:@"home.png"] tag:kCydiaTag] autorelease],
- [[[UITabBarItem alloc] initWithTitle:UCLocalize("SECTIONS") image:[UIImage applicationImageNamed:@"install.png"] tag:kSectionsTag] autorelease],
- [[[UITabBarItem alloc] initWithTitle:UCLocalize("CHANGES") image:[UIImage applicationImageNamed:@"changes.png"] tag:kChangesTag] autorelease],
- [[[UITabBarItem alloc] initWithTitle:UCLocalize("SEARCH") image:[UIImage applicationImageNamed:@"search.png"] tag:kSearchTag] autorelease],
- nil]);
-
- NSMutableArray *pages([NSMutableArray arrayWithObjects:
- [[[CYHomeController alloc] init] autorelease],
- [[[CYSectionsController alloc] initWithDatabase:database_] autorelease],
- [[[CYChangesController alloc] initWithDatabase:database_ delegate:self] autorelease],
- [[[CYSearchController alloc] initWithDatabase:database_] autorelease],
+ [[[UITabBarItem alloc] initWithTitle:@"Cydia" image:[UIImage applicationImageNamed:@"home.png"] tag:0] autorelease],
+ [[[UITabBarItem alloc] initWithTitle:UCLocalize("SECTIONS") image:[UIImage applicationImageNamed:@"install.png"] tag:0] autorelease],
+ [[[UITabBarItem alloc] initWithTitle:UCLocalize("CHANGES") image:[UIImage applicationImageNamed:@"changes.png"] tag:0] autorelease],
+ [[[UITabBarItem alloc] initWithTitle:UCLocalize("SEARCH") image:[UIImage applicationImageNamed:@"search.png"] tag:0] autorelease],
nil]);
if (IsWildcat_) {
- [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("SOURCES") image:[UIImage applicationImageNamed:@"source.png"] tag:kSourcesTag] autorelease] atIndex:3];
- [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("INSTALLED") image:[UIImage applicationImageNamed:@"manage.png"] tag:kInstalledTag] autorelease] atIndex:3];
- [pages insertObject:[[[CYSourcesController alloc] initWithDatabase:database_] autorelease] atIndex:3];
- [pages insertObject:[[[CYInstalledController alloc] initWithDatabase:database_] autorelease] atIndex:3];
- queueDelegate_ = [pages objectAtIndex:3];
+ [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("SOURCES") image:[UIImage applicationImageNamed:@"source.png"] tag:0] autorelease] atIndex:3];
+ [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("INSTALLED") image:[UIImage applicationImageNamed:@"manage.png"] tag:0] autorelease] atIndex:3];
} else {
- [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("MANAGE") image:[UIImage applicationImageNamed:@"manage.png"] tag:kManageTag] autorelease] atIndex:3];
- [pages insertObject:[[[CYManageController alloc] init] autorelease] atIndex:3];
- queueDelegate_ = [pages objectAtIndex:3];
+ [items insertObject:[[[UITabBarItem alloc] initWithTitle:UCLocalize("MANAGE") image:[UIImage applicationImageNamed:@"manage.png"] tag:0] autorelease] atIndex:3];
}
NSMutableArray *controllers([NSMutableArray array]);
-
- for (unsigned int i = 0; i < [pages count]; i++) {
- UITabBarItem *item = [items objectAtIndex:i];
- CYViewController *page = [pages objectAtIndex:i];
- [page setDelegate:self];
--
+ for (UITabBarItem *item in items) {
CYNavigationController *controller([[[CYNavigationController alloc] initWithDatabase:database_] autorelease]);
- [controller setViewControllers:[NSArray arrayWithObject:page]];
[controller setTabBarItem:item];
[controllers addObject:controller];
}
--
[tabbar_ setViewControllers:controllers];
++
[tabbar_ setUpdateDelegate:self];
[window_ addSubview:[tabbar_ view]];
-
}
- (void)showEmulatedLoadingControllerInView:(UIView *)view {
database_ = [Database sharedInstance];
+ [window_ setUserInteractionEnabled:NO];
[self showEmulatedLoadingControllerInView:window_];
[self performSelector:@selector(loadData) withObject:nil afterDelay:0];
return;
}
- [window_ setUserInteractionEnabled:NO];
[self reloadData];
PrintTimes();
- [window_ setUserInteractionEnabled:YES];
[self setupViewControllers];
- [tabbar_ setSelectedIndex:0];
[self showEmulatedLoadingControllerInView:nil];
- // XXX: does this actually slow anything down?
- [[tabbar_ view] setBackgroundColor:[UIColor clearColor]];
+ [window_ setUserInteractionEnabled:YES];
+
+ // Show the home page.
+ CYNavigationController *navigation = [[tabbar_ viewControllers] objectAtIndex:0];
+ [navigation setViewControllers:[NSArray arrayWithObject:[[[HomeController alloc] init] autorelease]]];
- // Show the initial page
+ // (Try to) show the startup URL.
if (starturl_ != nil) {
[self openCydiaURL:starturl_];
[starturl_ release];