From 3ff1504e78cec862a5b88baac7ea10bf702173be Mon Sep 17 00:00:00 2001 From: "Jay Freeman (saurik)" Date: Mon, 16 Mar 2009 15:12:33 +0000 Subject: [PATCH] That was at least interesting. --- Cydia.app/Modes/Downgrade.png | Bin 0 -> 1176 bytes Cydia.app/Modes/Install.png | Bin 0 -> 2135 bytes Cydia.app/Modes/New Install.png | 1 + Cydia.app/Modes/Purge.png | Bin 0 -> 2443 bytes Cydia.app/Modes/Reinstall.png | Bin 0 -> 2013 bytes Cydia.app/Modes/Remove.png | Bin 0 -> 2552 bytes Cydia.app/Modes/Upgrade.png | Bin 0 -> 1635 bytes Cydia.app/package.html | 8 ++ Cydia.app/package.js | 26 ++++- Cydia.mm | 178 +++++++++++++++++++++++++++++--- UICaboodle/BrowserView.m | 16 +++ UICaboodle/RVBook.mm | 10 +- control | 2 +- 13 files changed, 216 insertions(+), 25 deletions(-) create mode 100644 Cydia.app/Modes/Downgrade.png create mode 100644 Cydia.app/Modes/Install.png create mode 120000 Cydia.app/Modes/New Install.png create mode 100644 Cydia.app/Modes/Purge.png create mode 100644 Cydia.app/Modes/Reinstall.png create mode 100644 Cydia.app/Modes/Remove.png create mode 100644 Cydia.app/Modes/Upgrade.png diff --git a/Cydia.app/Modes/Downgrade.png b/Cydia.app/Modes/Downgrade.png new file mode 100644 index 0000000000000000000000000000000000000000..41c0d70ad0ab3224c2c1382e0b97d759e38cce9e GIT binary patch literal 1176 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 N002ovPDHLkV1isA0;vE1 literal 0 HcmV?d00001 diff --git a/Cydia.app/Modes/New Install.png b/Cydia.app/Modes/New Install.png new file mode 120000 index 00000000..3330a1bb --- /dev/null +++ b/Cydia.app/Modes/New Install.png @@ -0,0 +1 @@ +Install.png \ No newline at end of file diff --git a/Cydia.app/Modes/Purge.png b/Cydia.app/Modes/Purge.png new file mode 100644 index 0000000000000000000000000000000000000000..795fa19317eb7d8ffce05744ec156fbf53e5edcf GIT binary patch literal 2443 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 literal 0 HcmV?d00001 diff --git a/Cydia.app/Modes/Remove.png b/Cydia.app/Modes/Remove.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2e691c8a564d007b29d5d7af5a04098b4f56a5 GIT binary patch literal 2552 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 literal 0 HcmV?d00001 diff --git a/Cydia.app/package.html b/Cydia.app/package.html index 4dc34a85..fdbc835e 100644 --- a/Cydia.app/package.html +++ b/Cydia.app/package.html @@ -213,6 +213,14 @@ +

+ +
+ + +
+
+
diff --git a/Cydia.app/package.js b/Cydia.app/package.js index 200be8bb..1a78a8bb 100644 --- a/Cydia.app/package.js +++ b/Cydia.app/package.js @@ -53,12 +53,15 @@ $(function () { var id = package.id; var idc = encodeURIComponent(id); var name = package.name; - var regarding = encodeURIComponent("Cydia/APT: " + name); var icon = 'cydia://package-icon/' + idc; var api = 'http://cydia.saurik.com/api/'; + var regarding = function (type) { + return encodeURIComponent("Cydia/APT(" + type + "): " + name); + }; + $("#icon").css("background-image", 'url("' + icon + '")'); - $("#reflection").src("cydia://package-icon/" + idc); + //$("#reflection").src("cydia://package-icon/" + idc); $("#name").html(name); space("#latest", package.latest, 96); @@ -110,6 +113,14 @@ $(function () { $("#settings").href("cydia://package-settings/" + idc); + var mode = package.mode; + if (mode == null) + $(".mode").remove(); + else { + $("#mode").html(mode); + $("#mode-src").src("Modes/" + mode + ".png"); + } + var warnings = package.warnings; var length = warnings == null ? 0 : warnings.length; if (length == 0) @@ -160,8 +171,13 @@ $(function () { space("#author", author.name, 160); if (author.address == null) $("#author-icon").remove(); - else - $("#author-href").href("mailto:" + author.address + "?subject=" + regarding); + else { + var support = package.support; + if (support == null) + $("#author-href").href("mailto:" + author.address + "?subject=" + regarding("A")); + else + $("#author-href").href(support); + } } //$("#notice-src").src("http://saurik.cachefly.net/notice/" + idc + ".html"); @@ -227,7 +243,7 @@ $(function () { if (maintainer.address == null) $("#maintainer-icon").remove(); else - $("#maintainer-href").href("mailto:" + maintainer.address + "?subject=" + regarding); + $("#maintainer-href").href("mailto:" + maintainer.address + "?subject=" + regarding("M")); } var sponsor = package.sponsor; diff --git a/Cydia.mm b/Cydia.mm index 5e9d33a7..eecc2be4 100644 --- a/Cydia.mm +++ b/Cydia.mm @@ -659,6 +659,8 @@ class Pcre { - (NSString *) name; - (NSString *) address; +- (void) setAddress:(NSString *)address; + + (Address *) addressWithString:(NSString *)string; - (Address *) initWithString:(NSString *)string; @end @@ -680,6 +682,15 @@ class Pcre { return address_; } +- (void) setAddress:(NSString *)address { + if (address_ != nil) + [address_ autorelease]; + if (address == nil) + address_ = nil; + else + address_ = [address retain]; +} + + (Address *) addressWithString:(NSString *)string { return [[[Address alloc] initWithString:string] autorelease]; } @@ -764,6 +775,8 @@ static const float KeyboardTime_ = 0.3f; #define SandboxTemplate_ "/usr/share/sandbox/SandboxTemplate.sb" #define NotifyConfig_ "/etc/notify.conf" +static bool Queuing_; + static CGColor Blue_; static CGColor Blueish_; static CGColor Black_; @@ -774,7 +787,8 @@ static CGColor Green_; static CGColor Purple_; static CGColor Purplish_; -static UIColor *CommercialColor_; +static UIColor *InstallingColor_; +static UIColor *RemovingColor_; static NSString *App_; static NSString *Home_; @@ -917,6 +931,7 @@ bool isSectionVisible(NSString *section) { @end @protocol CydiaDelegate +- (void) clearPackage:(Package *)package; - (void) installPackage:(Package *)package; - (void) removePackage:(Package *)package; - (void) slideUp:(UIActionSheet *)alert; @@ -1102,6 +1117,7 @@ class Progress : NSString *description_; NSString *label_; NSString *origin_; + NSString *support_; NSString *uri_; NSString *distribution_; @@ -1118,6 +1134,8 @@ class Progress : - (NSComparisonResult) compareByNameAndType:(Source *)source; +- (NSString *) supportForPackage:(NSString *)package; + - (NSDictionary *) record; - (BOOL) trusted; @@ -1152,6 +1170,7 @@ class Progress : _clear(description_) _clear(label_) _clear(origin_) + _clear(support_) _clear(version_) _clear(defaultIcon_) _clear(record_) @@ -1205,6 +1224,8 @@ class Progress : label_ = [[NSString stringWithUTF8String:value.c_str()] retain]; else if (name == "Origin") origin_ = [[NSString stringWithUTF8String:value.c_str()] retain]; + else if (name == "Support") + support_ = [[NSString stringWithUTF8String:value.c_str()] retain]; else if (name == "Version") version_ = [[NSString stringWithUTF8String:value.c_str()] retain]; } @@ -1244,6 +1265,10 @@ class Progress : return [lhs compare:rhs options:LaxCompareOptions_]; } +- (NSString *) supportForPackage:(NSString *)package { + return support_ == nil ? nil : [support_ stringByReplacingOccurrencesOfString:@"*" withString:package]; +} + - (NSDictionary *) record { return record_; } @@ -1359,6 +1384,7 @@ class Progress : NSString *homepage_; Address *sponsor_; Address *author_; + NSString *support_; NSArray *tags_; NSString *role_; @@ -1409,6 +1435,8 @@ class Progress : - (NSString *) depiction; - (Address *) author; +- (NSString *) support; + - (NSArray *) files; - (NSArray *) relationships; - (NSArray *) warnings; @@ -1466,6 +1494,8 @@ class Progress : [sponsor_ release]; if (author_ != nil) [author_ release]; + if (support_ != nil) + [support_ release]; if (tags_ != nil) [tags_ release]; if (role_ != nil) @@ -1489,7 +1519,7 @@ class Progress : } + (NSArray *) _attributeKeys { - return [NSArray arrayWithObjects:@"applications", @"author", @"depiction", @"description", @"essential", @"homepage", @"icon", @"id", @"installed", @"latest", @"maintainer", @"name", @"purposes", @"section", @"size", @"source", @"sponsor", @"tagline", @"warnings", nil]; + return [NSArray arrayWithObjects:@"applications", @"author", @"depiction", @"description", @"essential", @"homepage", @"icon", @"id", @"installed", @"latest", @"maintainer", @"mode", @"name", @"purposes", @"section", @"size", @"source", @"sponsor", @"support", @"tagline", @"warnings", nil]; } - (NSArray *) attributeKeys { @@ -1572,6 +1602,7 @@ class Progress : {"depiction", &depiction_}, {"homepage", &homepage_}, {"website", &website}, + {"support", &support_}, {"sponsor", &sponsor}, {"author", &author}, {"tag", &tag}, @@ -1888,14 +1919,16 @@ class Progress : else return @"Remove"; case pkgDepCache::ModeKeep: - if ((state.iFlags & pkgDepCache::AutoKept) != 0) - return nil; + if ((state.iFlags & pkgDepCache::ReInstall) != 0) + return @"Reinstall"; + /*else if ((state.iFlags & pkgDepCache::AutoKept) != 0) + return nil;*/ else return nil; case pkgDepCache::ModeInstall: - if ((state.iFlags & pkgDepCache::ReInstall) != 0) + /*if ((state.iFlags & pkgDepCache::ReInstall) != 0) return @"Reinstall"; - else switch (state.Status) { + else*/ switch (state.Status) { case -1: return @"Downgrade"; case 0: @@ -1957,6 +1990,10 @@ class Progress : return author_; } +- (NSString *) support { + return support_ != nil ? support_ : [[self source] supportForPackage:id_]; +} + - (NSArray *) files { NSString *path = [NSString stringWithFormat:@"/var/lib/dpkg/info/%@.list", id_]; NSMutableArray *files = [NSMutableArray arrayWithCapacity:128]; @@ -2200,6 +2237,12 @@ class Progress : return _not(uint32_t) - value.key; } +- (void) clear { + pkgProblemResolver *resolver = [database_ resolver]; + resolver->Clear(iterator_); + resolver->Protect(iterator_); +} + - (void) install { pkgProblemResolver *resolver = [database_ resolver]; resolver->Clear(iterator_); @@ -2996,6 +3039,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { @protocol ConfirmationViewDelegate - (void) cancel; - (void) confirm; +- (void) queue; @end @interface ConfirmationView : BrowserView { @@ -3735,6 +3779,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { NSString *source_; UIImage *badge_; bool cached_; + Package *package_; #ifdef USE_BADGES UITextLabel *status_; #endif @@ -3774,6 +3819,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [badge_ release]; badge_ = nil; } + + [package_ release]; + package_ = nil; } - (void) dealloc { @@ -3806,6 +3854,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { description_ = [[package tagline] retain]; commercial_ = [package isCommercial]; + package_ = [package retain]; + NSString *label = nil; bool trusted = false; @@ -3851,7 +3901,15 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { - (void) drawRect:(CGRect)rect { if (!cached_) { - //[self setBackgroundColor:(commercial_ ? CommercialColor_ : [UIColor whiteColor])]; + UIColor *color; + + if (NSString *mode = [package_ mode]) { + bool remove([mode isEqualToString:@"Remove"] || [mode isEqualToString:@"Purge"]); + color = remove ? RemovingColor_ : InstallingColor_; + } else + color = [UIColor whiteColor]; + + [self setBackgroundColor:color]; cached_ = true; } @@ -3859,7 +3917,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { } - (void) drawBackgroundInRect:(CGRect)rect withFade:(float)fade { - if (fade == 0 && commercial_) { + if (fade == 0) { CGContextRef context(UIGraphicsGetCurrentContext()); [[self backgroundColor] set]; CGRect back(rect); @@ -3908,6 +3966,11 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [super drawContentInRect:rect selected:selected]; } +- (void) setSelected:(BOOL)selected withFade:(BOOL)fade { + cached_ = false; + [super setSelected:selected withFade:fade]; +} + + (int) heightForPackage:(Package *)package { NSString *tagline([package tagline]); int height = tagline == nil || [tagline length] == 0 ? -17 : 0; @@ -4191,7 +4254,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { } - (void) _clickButtonWithName:(NSString *)name { - if ([name isEqualToString:@"Install"]) + if ([name isEqualToString:@"Clear"]) + [delegate_ clearPackage:package_]; + else if ([name isEqualToString:@"Install"]) [delegate_ installPackage:package_]; else if ([name isEqualToString:@"Reinstall"]) [delegate_ installPackage:package_]; @@ -4246,7 +4311,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [delegate_ slideUp:[[[UIActionSheet alloc] initWithTitle:nil buttons:buttons - defaultButtonIndex:2 + defaultButtonIndex:([buttons count] - 1) delegate:self context:@"modify" ] autorelease]]; @@ -4297,6 +4362,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [self loadURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"package" ofType:@"html"]]]; + if ([package_ mode] != nil) + [buttons_ addObject:@"Clear"]; if ([package_ source] == nil); else if ([package_ upgradableAndEssential:NO]) [buttons_ addObject:@"Upgrade"]; @@ -5224,7 +5291,15 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { #if !AlwaysReload - (id) _rightButtonTitle { - return nil; + return Queuing_ ? @"Queue" : nil; +} + +- (UINavigationButtonStyle) rightButtonStyle { + return Queuing_ ? UINavigationButtonStyleHighlighted : UINavigationButtonStyleNormal; +} + +- (void) _rightButtonClicked { + [delegate_ queue]; } #endif @@ -5950,10 +6025,17 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { if (section == nil || last != seen && (seen == nil || [seen compare:last] != NSOrderedSame)) { last = seen; - NSString *name(seen == nil ? [@"n/a ?" retain] : (NSString *) CFDateFormatterCreateStringWithDate(NULL, formatter, (CFDateRef) seen)); + NSString *name; + if (seen == nil) + name = @"unknown?"; + else { + name = (NSString *) CFDateFormatterCreateStringWithDate(NULL, formatter, (CFDateRef) seen); + [name autorelease]; + } + + name = [@"New at " stringByAppendingString:name]; section = [[[Section alloc] initWithName:name row:offset] autorelease]; [sections_ addObject:section]; - [name release]; } [section addToCount]; @@ -6600,7 +6682,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { NSString *badge([[NSNumber numberWithInt:changes] stringValue]); [buttonbar_ setBadgeValue:badge forButton:3]; if ([buttonbar_ respondsToSelector:@selector(setBadgeAnimated:forButton:)]) - [buttonbar_ setBadgeAnimated:YES forButton:3]; + [buttonbar_ setBadgeAnimated:([essential_ count] != 0) forButton:3]; [self setApplicationBadge:badge]; } else { [buttonbar_ setBadgeValue:nil forButton:3]; @@ -6609,6 +6691,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [self removeApplicationBadge]; } + Queuing_ = false; + [buttonbar_ setBadgeValue:nil forButton:4]; + [self updateData]; // XXX: what is this line of code for? @@ -6719,6 +6804,20 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [self popUpBook:confirm_]; } +- (void) queue { + @synchronized (self) { + [self perform]; + } +} + +- (void) clearPackage:(Package *)package { + @synchronized (self) { + [package clear]; + [self resolve]; + [self perform]; + } +} + - (void) installPackage:(Package *)package { @synchronized (self) { [package install]; @@ -6743,8 +6842,19 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { } - (void) cancel { + [self slideUp:[[[UIActionSheet alloc] + initWithTitle:nil + buttons:[NSArray arrayWithObjects:@"Continue Queuing", @"Cancel and Clear", nil] + defaultButtonIndex:1 + delegate:self + context:@"cancel" + ] autorelease]]; +} + +- (void) complete { @synchronized (self) { [self _reloadData]; + if (confirm_ != nil) { [confirm_ release]; confirm_ = nil; @@ -6786,7 +6896,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { [confirm_ popFromSuperviewAnimated:NO]; } - [self cancel]; + [self complete]; } - (void) setPage:(RVPage *)page { @@ -6994,7 +7104,39 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) { if ([context isEqualToString:@"missing"]) [sheet dismiss]; - else if ([context isEqualToString:@"fixhalf"]) { + else if ([context isEqualToString:@"cancel"]) { + bool clear; + + switch (button) { + case 1: + clear = false; + break; + + case 2: + clear = true; + break; + + default: + _assert(false); + } + + [sheet dismiss]; + + @synchronized (self) { + if (clear) + [self _reloadData]; + else { + Queuing_ = true; + [buttonbar_ setBadgeValue:@"Q'd" forButton:4]; + [book_ reloadData]; + } + + if (confirm_ != nil) { + [confirm_ release]; + confirm_ = nil; + } + } + } else if ([context isEqualToString:@"fixhalf"]) { switch (button) { case 1: @synchronized (self) { @@ -7509,7 +7651,9 @@ int main(int argc, char *argv[]) { _pooled /*Purple_.Set(space_, 0.5, 0.0, 0.7, 1.0); Purplish_.Set(space_, 0.7, 0.4, 0.8, 1.0); PURPLE */ - CommercialColor_ = [UIColor colorWithRed:0.93f green:1.00f blue:0.88f alpha:1.00f]; +//.93 + InstallingColor_ = [UIColor colorWithRed:0.88f green:1.00f blue:0.88f alpha:1.00f]; + RemovingColor_ = [UIColor colorWithRed:1.00f green:0.88f blue:0.88f alpha:1.00f]; Finishes_ = [NSArray arrayWithObjects:@"return", @"reopen", @"restart", @"reload", @"reboot", nil]; diff --git a/UICaboodle/BrowserView.m b/UICaboodle/BrowserView.m index 0f95a049..3a4b7793 100644 --- a/UICaboodle/BrowserView.m +++ b/UICaboodle/BrowserView.m @@ -70,6 +70,22 @@ } return self; } ++ (NSArray *) _attributeKeys { + return [NSArray arrayWithObjects:@"device", nil]; +} + +- (NSArray *) attributeKeys { + return [[self class] _attributeKeys]; +} + ++ (BOOL) isKeyExcludedFromWebScript:(const char *)name { + return ![[self _attributeKeys] containsObject:[NSString stringWithUTF8String:name]] && [super isKeyExcludedFromWebScript:name]; +} + +- (NSString *) device { + return [[UIDevice currentDevice] uniqueIdentifier]; +} + + (NSString *) webScriptNameForSelector:(SEL)selector { if (selector == @selector(close)) return @"close"; diff --git a/UICaboodle/RVBook.mm b/UICaboodle/RVBook.mm index 28774ae3..4b5a3999 100644 --- a/UICaboodle/RVBook.mm +++ b/UICaboodle/RVBook.mm @@ -270,10 +270,16 @@ } - (void) reloadData { - for (int i(0), e([pages_ count]); i != e; ++i) { - RVPage *page([pages_ objectAtIndex:(e - i - 1)]); + size_t count([pages_ count]); + for (size_t i(0); i != count; ++i) { + RVPage *page([pages_ objectAtIndex:(count - i - 1)]); [page reloadData]; } + + if (count != 0) { + RVPage *page([pages_ lastObject]); + [self reloadButtonsForPage:page]; + } } - (CGRect) pageBounds { diff --git a/control b/control index 2d9c962c..c8512b0d 100644 --- a/control +++ b/control @@ -4,7 +4,7 @@ Priority: required Section: Packaging Maintainer: Jay Freeman (saurik) Architecture: iphoneos-arm -Version: 1.0.2780-43 +Version: 1.0.2793-44 Replaces: com.sosiphone.addcydia Depends: apt, darwintools, pcre, shell-cmds Conflicts: com.sosiphone.addcydia -- 2.45.2