/* Random Global Variables {{{ */
static const int PulseInterval_ = 50000;
+static const NSString *UI_;
+
static int Finish_;
static NSArray *Finishes_;
static time_t now_;
bool IsWildcat_;
+static CGFloat ScreenScale_;
/* }}} */
/* Display Helpers {{{ */
SizeString([database_ fetcher].PartialPresent()),
nil];
- [self loadURL:[NSURL URLWithString:CydiaURL(@"ui/ios/confirm/")]];
+ [self loadURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/confirm/", UI_]]];
[[self navigationItem] setLeftBarButtonItem:[[[UIBarButtonItem alloc]
initWithTitle:UCLocalize("CANCEL")
UIBarButtonItem *button_;
}
-- (id) initWithDatabase:(Database *)database;
-
-- (void) setPackage:(Package *)package withName:(NSString *)name;
-- (void) setPackage:(Package *)package;
+- (id) initWithDatabase:(Database *)database forPackage:(NSString *)name;
@end
#endif
- (void) viewWillAppear:(BOOL)animated {
- if (![self hasLoaded])
- [self loadURL:[NSURL URLWithString:CydiaURL(@"ui/ios/package/")]];
[super viewWillAppear:animated];
}
-- (id) initWithDatabase:(Database *)database {
+- (id) initWithDatabase:(Database *)database forPackage:(NSString *)name {
if ((self = [super init]) != nil) {
database_ = database;
buttons_ = [[NSMutableArray alloc] initWithCapacity:4];
+ name_ = [[NSString alloc] initWithString:name];
+ [self reloadData];
} return self;
}
-- (void) setPackage:(Package *)package withName:(NSString *)name {
- if (package_ != nil) {
- [package_ autorelease];
- package_ = nil;
- }
+- (void) reloadData {
+ [super reloadData];
- if (name_ != nil)
- [name_ autorelease];
- name_ = [[NSString alloc] initWithString:name];
+ if (package_ != nil)
+ [package_ autorelease];
+ package_ = [database_ packageWithName:name_];
[buttons_ removeAllObjects];
- if (package != nil) {
- [package parse];
+ if (package_ != nil) {
+ [package_ parse];
- package_ = [package retain];
- commercial_ = [package isCommercial];
+ package_ = [package_ retain];
+ commercial_ = [package_ isCommercial];
if ([package_ mode] != nil)
[buttons_ addObject:UCLocalize("CLEAR")];
action:@selector(customButtonClicked)
];
- [self loadURL:[NSURL URLWithString:CydiaURL([NSString stringWithFormat:@"ui/ios/package/#!/%@", name])]];
-}
-
-- (void) setPackage:(Package *)package {
- [self setPackage:package withName:[package id]];
+ [self loadURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/package/#!/%@", UI_, name_]]];
}
- (bool) isLoading {
return commercial_ ? [super isLoading] : false;
}
-- (void) reloadData {
- [super reloadData];
- [self setPackage:[database_ packageWithName:name_] withName:name_];
-}
-
@end
/* }}} */
}
- (void) didSelectPackage:(Package *)package {
- CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
- [view setPackage:package];
+ CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_ forPackage:[package id]] autorelease]);
[view setDelegate:delegate_];
[[self navigationController] pushViewController:view animated:YES];
}
- (void) viewWillAppear:(BOOL)animated {
if (![self hasLoaded])
- [self loadURL:[NSURL URLWithString:CydiaURL(@"ui/ios/home/")]];
+ [self loadURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/home/", UI_]]];
[super viewWillAppear:animated];
- (void) viewWillAppear:(BOOL)animated {
if (![self hasLoaded])
- [self loadURL:[NSURL URLWithString:CydiaURL(@"ui/ios/manage/")]];
+ [self loadURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@/manage/", UI_]]];
[super viewWillAppear:animated];
}
- (NSIndexPath *) tableView:(UITableView *)table willSelectRowAtIndexPath:(NSIndexPath *)path {
Package *package([self packageAtIndexPath:path]);
- CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
+ CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_ forPackage:[package id]] autorelease]);
[view setDelegate:delegate_];
- [view setPackage:package];
[[self navigationController] pushViewController:view animated:YES];
return path;
}
}
- (CYViewController *) pageForPackage:(NSString *)name {
- CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
- [view setPackage:[database_ packageWithName:name] withName:name];
- return view;
+ return [[[CYPackageController alloc] initWithDatabase:database_ forPackage:name] autorelease];
}
- (CYViewController *) pageForURL:(NSURL *)url {
} else
IsWildcat_ = false;
+ UIScreen *screen([UIScreen mainScreen]);
+ if ([screen respondsToSelector:@selector(scale)])
+ ScreenScale_ = [screen scale];
+ else
+ ScreenScale_ = 1;
+
+ NSMutableArray *parts([NSMutableArray arrayWithCapacity:2]);
+ if (ScreenScale_ > 1)
+ [parts addObject:@"@2x"];
+ [parts addObject:(IsWildcat_ ? @"~ipad" : @"~iphone")];
+ UI_ = CydiaURL([NSString stringWithFormat:@"ui/ios%@", [parts componentsJoinedByString:@""]]);
+
PackageName = reinterpret_cast<CYString &(*)(Package *, SEL)>(method_getImplementation(class_getInstanceMethod([Package class], @selector(cyname))));
/* Library Hacks {{{ */