#include <errno.h>
#include <Cytore.hpp>
+#include "Sources.h"
#include <CydiaSubstrate/CydiaSubstrate.h>
#include "Menes/Menes.h"
static _transient NSMutableDictionary *Packages_;
static _transient NSMutableDictionary *Values_;
static _transient NSMutableDictionary *Sections_;
-static _transient NSMutableDictionary *Sources_;
+_H<NSMutableDictionary> Sources_;
static _transient NSNumber *Version_;
-static _transient _H<NSString> CydiaSource_;
-static bool Changed_;
+_H<NSString> CydiaSource_;
+bool Changed_;
static time_t now_;
bool IsWildcat_;
static CGFloat ScreenScale_;
static NSString *Idiom_;
-static NSString *Firmware_;
+_H<NSString> Firmware_;
static NSString *Major_;
static _H<NSMutableDictionary> SessionData_;
static NSString *kCydiaProgressEventTypeWarning = @"Warning";
/* }}} */
-static void AddSource(NSDictionary *source) {
- [Sources_ setObject:source forKey:[NSString stringWithFormat:@"%@:%@:%@", [source objectForKey:@"Type"], [source objectForKey:@"URI"], [source objectForKey:@"Distribution"]]];
- Changed_ = true;
-}
-
-static void AddSource(NSString *href, NSString *distribution, NSArray *sections = nil) {
- AddSource([NSMutableDictionary dictionaryWithObjectsAndKeys:
- @"deb", @"Type",
- href, @"URI",
- distribution, @"Distribution",
- sections ?: [NSMutableArray array], @"Sections",
- nil]);
-}
-
-static void WriteSources() {
- FILE *file(fopen("/etc/apt/sources.list.d/cydia.list", "w"));
- _assert(file != NULL);
-
- NSString *distribution(@"ios");
- if (Firmware_ != nil)
- distribution = [distribution stringByAppendingString:[NSString stringWithFormat:@"-%@", Firmware_]];
-
- fprintf(file, "deb http://%s/ %s main\n",
- [CydiaSource_ UTF8String],
- [distribution UTF8String]
- );
-
- for (NSString *key in [Sources_ allKeys]) {
- NSDictionary *source([Sources_ objectForKey:key]);
-
- NSArray *sections([source objectForKey:@"Sections"] ?: [NSArray array]);
-
- fprintf(file, "%s %s %s%s%s\n",
- [[source objectForKey:@"Type"] UTF8String],
- [[source objectForKey:@"URI"] UTF8String],
- [[source objectForKey:@"Distribution"] UTF8String],
- [sections count] == 0 ? "" : " ",
- [[sections componentsJoinedByString:@" "] UTF8String]
- );
- }
-
- fclose(file);
-}
-
/* Display Helpers {{{ */
inline float Interpolate(float begin, float end, float fraction) {
return (end - begin) * fraction + begin;
if ([url isCydiaSecure] && token) {
if (Token_ != nil && [copy valueForHTTPHeaderField:@"X-Cydia-Token"] == nil)
[copy setValue:Token_ forHTTPHeaderField:@"X-Cydia-Token"];
+ if (UniqueID_ != nil && [copy valueForHTTPHeaderField:@"X-Cydia-Id"] == nil)
+ [copy setValue:UniqueID_ forHTTPHeaderField:@"X-Cydia-Id"];
}
return copy;
CGRect rect;
rect.size = [(UIImage *) icon_ size];
- rect.size.width /= 4;
- rect.size.height /= 4;
+ while (rect.size.width > 16 || rect.size.height > 16) {
+ rect.size.width /= 2;
+ rect.size.height /= 2;
+ }
- rect.origin.x = 14 - rect.size.width / 4;
- rect.origin.y = 14 - rect.size.height / 4;
+ rect.origin.x = 18 - rect.size.width / 2;
+ rect.origin.y = 18 - rect.size.height / 2;
[icon_ drawInRect:rect];
}
rect.size.width /= 4;
rect.size.height /= 4;
- rect.origin.x = 20 - rect.size.width / 4;
- rect.origin.y = 20 - rect.size.height / 4;
+ rect.origin.x = 23 - rect.size.width / 2;
+ rect.origin.y = 23 - rect.size.height / 2;
[badge_ drawInRect:rect];
}
CGRect rect;
rect.size = [(UIImage *) icon_ size];
- rect.size.width /= 2;
- rect.size.height /= 2;
+ while (rect.size.width > 32 || rect.size.height > 32) {
+ rect.size.width /= 2;
+ rect.size.height /= 2;
+ }
rect.origin.x = 25 - rect.size.width / 2;
rect.origin.y = 25 - rect.size.height / 2;
return items;
}
+- (void) dismissModalViewControllerAnimated:(BOOL)animated {
+ if ([self modalViewController] == nil && [self unselectedViewController] != nil)
+ [self setUnselectedViewController:nil];
+ else
+ [super dismissModalViewControllerAnimated:YES];
+}
+
- (void) unloadData {
[super unloadData];
[package parse];
UIImage *icon([package icon]);
[self _returnPNGWithImage:icon forRequest:request];
- } else if ([command isEqualToString:@"source-icon"]) {
- if (path == nil)
- goto fail;
- path = [path stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
- NSString *source(Simplify(path));
- UIImage *icon([UIImage imageAtPath:[NSString stringWithFormat:@"%@/Sources/%@.png", App_, source]]);
- if (icon == nil)
- icon = [UIImage applicationImageNamed:@"unknown.png"];
- [self _returnPNGWithImage:icon forRequest:request];
} else if ([command isEqualToString:@"uikit-image"]) {
if (path == nil)
goto fail;
bool highlighted(highlighted_);
float width(rect.size.width);
- if (icon_ != nil)
- [icon_ drawInRect:CGRectMake(10, 10, 30, 30)];
+ if (icon_ != nil) {
+ CGRect rect;
+ rect.size = [(UIImage *) icon_ size];
+
+ while (rect.size.width > 32 || rect.size.height > 32) {
+ rect.size.width /= 2;
+ rect.size.height /= 2;
+ }
+
+ rect.origin.x = 25 - rect.size.width / 2;
+ rect.origin.y = 25 - rect.size.height / 2;
+
+ [icon_ drawInRect:rect];
+ }
if (highlighted)
UISetColor(White_);
[delegate_ removeProgressHUD:hud_];
hud_ = nil;
- bool defer(false);
-
if (cydia_) {
if (NSString *warning = [self yieldToSelector:@selector(getWarning)]) {
- defer = true;
-
UIAlertView *alert = [[[UIAlertView alloc]
initWithTitle:UCLocalize("SOURCE_WARNING")
message:warning
[alert setContext:@"warning"];
[alert setNumberOfRows:1];
[alert show];
- } else
- [self complete];
+
+ // XXX: there used to be this great mechanism called yieldToPopup... who deleted it?
+ error_ = nil;
+ return;
+ }
+
+ [self complete];
} else if (error_ != nil) {
UIAlertView *alert = [[[UIAlertView alloc]
initWithTitle:UCLocalize("VERIFICATION_ERROR")
[request setValue:[NSString stringWithUTF8String:Machine_] forHTTPHeaderField:@"X-Machine"];
if ([url isCydiaSecure]) {
- if (UniqueID_ != nil)
+ if (UniqueID_ != nil) {
[request setValue:UniqueID_ forHTTPHeaderField:@"X-Unique-ID"];
+ [request setValue:UniqueID_ forHTTPHeaderField:@"X-Cydia-Id"];
+ }
}
return [[[NSURLConnection alloc] initWithRequest:request delegate:self] autorelease];
UCLocalize("DEVELOPER"),
nil];
segment_ = [[[UISegmentedControl alloc] initWithItems:items] autorelease];
+ [segment_ setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin)];
container_ = [[[UIView alloc] initWithFrame:CGRectMake(0, 0, [[self view] frame].size.width, 44.0f)] autorelease];
[container_ addSubview:segment_];
}
}
}
- WriteSources();
+ CydiaWriteSources();
}
// Navigation controller for the queuing badge.
}
- (void) addSource:(NSDictionary *) source {
- AddSource(source);
+ CydiaAddSource(source);
}
- (void) addSource:(NSString *)href withDistribution:(NSString *)distribution andSections:(NSArray *)sections {
- AddSource(href, distribution, sections);
+ CydiaAddSource(href, distribution, sections);
}
- (void) addTrivialSource:(NSString *)href {
- AddSource(href, @"./");
+ CydiaAddSource(href, @"./");
}
- (void) updateValues {
}
if ([Version_ unsignedIntValue] == 0) {
- AddSource(@"http://apt.thebigboss.org/repofiles/cydia/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
- AddSource(@"http://apt.modmyi.com/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
- AddSource(@"http://cydia.zodttd.com/repo/cydia/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
- AddSource(@"http://repo666.ultrasn0w.com/", @"./");
+ CydiaAddSource(@"http://apt.thebigboss.org/repofiles/cydia/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
+ CydiaAddSource(@"http://apt.modmyi.com/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
+ CydiaAddSource(@"http://cydia.zodttd.com/repo/cydia/", @"stable", [NSMutableArray arrayWithObject:@"main"]);
+ CydiaAddSource(@"http://repo666.ultrasn0w.com/", @"./");
Version_ = [NSNumber numberWithUnsignedInt:1];
[Metadata_ setObject:Version_ forKey:@"Version"];
}
/* }}} */
- WriteSources();
+ CydiaWriteSources();
_trace();
MetaFile_.Open("/var/lib/cydia/metadata.cb0");