summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJay Freeman (saurik) <saurik@saurik.com>2008-09-01 15:05:55 +0000
committerJay Freeman (saurik) <saurik@saurik.com>2010-09-30 07:08:28 +0000
commitbaf809427ec626c43618a5337507fc1760338576 (patch)
tree59044c61969d15081a0269328ad366e1cf29e2d0
parent90515f88be42ea9643a58b2608583a0c3e1fac43 (diff)
Timeouts, update cancel, update /bar/, webkit stability, url throttling.
-rw-r--r--Cydia.app/Default.pngbin1466 -> 2307 bytes
-rw-r--r--Cydia.app/Sections.plist34
-rw-r--r--Cydia.app/Sections/Administration.pngbin1403 -> 5763 bytes
-rw-r--r--Cydia.app/Sections/Archiving.pngbin2475 -> 6180 bytes
-rw-r--r--Cydia.app/Sections/Communication.pngbin0 -> 7695 bytes
-rw-r--r--Cydia.app/Sections/Data Storage.pngbin2744 -> 7852 bytes
-rw-r--r--Cydia.app/Sections/Development.pngbin2242 -> 6741 bytes
-rw-r--r--Cydia.app/Sections/Dictionaries.pngbin0 -> 6426 bytes
-rw-r--r--Cydia.app/Sections/Games.pngbin1587 -> 5075 bytes
-rw-r--r--Cydia.app/Sections/Java.pngbin2356 -> 6815 bytes
-rw-r--r--Cydia.app/Sections/Localization.pngbin2223 -> 7267 bytes
-rw-r--r--Cydia.app/Sections/Multimedia.pngbin3133 -> 12530 bytes
-rw-r--r--Cydia.app/Sections/Networking.pngbin2520 -> 8234 bytes
-rw-r--r--Cydia.app/Sections/Packaging.pngbin1490 -> 3694 bytes
-rw-r--r--Cydia.app/Sections/Productivity.pngbin2872 -> 7831 bytes
-rw-r--r--Cydia.app/Sections/Repositories.pngbin2621 -> 7612 bytes
-rw-r--r--Cydia.app/Sections/Scripting.pngbin1223 -> 7107 bytes
-rw-r--r--Cydia.app/Sections/Security.pngbin1959 -> 8703 bytes
-rw-r--r--Cydia.app/Sections/System.pngbin1939 -> 4556 bytes
-rw-r--r--Cydia.app/Sections/Terminal Support.pngbin1649 -> 3950 bytes
-rw-r--r--Cydia.app/Sections/Text Editors.pngbin1272 -> 4405 bytes
-rw-r--r--Cydia.app/Sections/Themes.pngbin1873 -> 5790 bytes
-rw-r--r--Cydia.app/Sections/Toys.pngbin2604 -> 7265 bytes
-rw-r--r--Cydia.app/Sections/Tweaks.pngbin1693 -> 7359 bytes
-rw-r--r--Cydia.app/Sections/Utilities.pngbin2484 -> 6341 bytes
-rw-r--r--Cydia.app/Sections/Wallpaper.pngbin0 -> 9584 bytes
-rw-r--r--Cydia.app/Sections/X Window.pngbin1878 -> 4788 bytes
-rw-r--r--Cydia.app/package.js2
-rw-r--r--Cydia.mm411
-rw-r--r--makefile2
30 files changed, 317 insertions, 132 deletions
diff --git a/Cydia.app/Default.png b/Cydia.app/Default.png
index b603d4e..3c7762c 100644
--- a/Cydia.app/Default.png
+++ b/Cydia.app/Default.png
Binary files differ
diff --git a/Cydia.app/Sections.plist b/Cydia.app/Sections.plist
index 16c498f..68a264d 100644
--- a/Cydia.app/Sections.plist
+++ b/Cydia.app/Sections.plist
@@ -1,3 +1,31 @@
-Tweaks_2.0 Tweaks
-Themes_(SummerBoard) Themes_(WinterBoard)
-Network Networking
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+
+<dict>
+ <key>Tweaks_2.0</key>
+ <dict>
+ <key>Rename</key>
+ <string>Tweaks</string>
+ </dict>
+
+ <key>Themes_(SummerBoard)</key>
+ <dict>
+ <key>Rename</key>
+ <string>Themes_(SpringBoard)</string>
+ </dict>
+
+ <key>Intelliborn</key>
+ <dict>
+ <key>Rename</key>
+ <string>Utilities</string>
+ </dict>
+
+ <key>Network</key>
+ <dict>
+ <key>Rename</key>
+ <string>Networking</string>
+ </dict>
+</dict>
+
+</plist>
diff --git a/Cydia.app/Sections/Administration.png b/Cydia.app/Sections/Administration.png
index 8b4b44f..65efd3e 100644
--- a/Cydia.app/Sections/Administration.png
+++ b/Cydia.app/Sections/Administration.png
Binary files differ
diff --git a/Cydia.app/Sections/Archiving.png b/Cydia.app/Sections/Archiving.png
index 68b486a..9efce56 100644
--- a/Cydia.app/Sections/Archiving.png
+++ b/Cydia.app/Sections/Archiving.png
Binary files differ
diff --git a/Cydia.app/Sections/Communication.png b/Cydia.app/Sections/Communication.png
new file mode 100644
index 0000000..00f36f7
--- /dev/null
+++ b/Cydia.app/Sections/Communication.png
Binary files differ
diff --git a/Cydia.app/Sections/Data Storage.png b/Cydia.app/Sections/Data Storage.png
index e8a8449..1bb23fe 100644
--- a/Cydia.app/Sections/Data Storage.png
+++ b/Cydia.app/Sections/Data Storage.png
Binary files differ
diff --git a/Cydia.app/Sections/Development.png b/Cydia.app/Sections/Development.png
index 25afa9f..806b442 100644
--- a/Cydia.app/Sections/Development.png
+++ b/Cydia.app/Sections/Development.png
Binary files differ
diff --git a/Cydia.app/Sections/Dictionaries.png b/Cydia.app/Sections/Dictionaries.png
new file mode 100644
index 0000000..e386e76
--- /dev/null
+++ b/Cydia.app/Sections/Dictionaries.png
Binary files differ
diff --git a/Cydia.app/Sections/Games.png b/Cydia.app/Sections/Games.png
index 6e0efaf..6e14c50 100644
--- a/Cydia.app/Sections/Games.png
+++ b/Cydia.app/Sections/Games.png
Binary files differ
diff --git a/Cydia.app/Sections/Java.png b/Cydia.app/Sections/Java.png
index 4b543db..e6bbc91 100644
--- a/Cydia.app/Sections/Java.png
+++ b/Cydia.app/Sections/Java.png
Binary files differ
diff --git a/Cydia.app/Sections/Localization.png b/Cydia.app/Sections/Localization.png
index 2450175..80d41d3 100644
--- a/Cydia.app/Sections/Localization.png
+++ b/Cydia.app/Sections/Localization.png
Binary files differ
diff --git a/Cydia.app/Sections/Multimedia.png b/Cydia.app/Sections/Multimedia.png
index 07f20b6..42d0b5e 100644
--- a/Cydia.app/Sections/Multimedia.png
+++ b/Cydia.app/Sections/Multimedia.png
Binary files differ
diff --git a/Cydia.app/Sections/Networking.png b/Cydia.app/Sections/Networking.png
index ee1f0a1..a4f04e3 100644
--- a/Cydia.app/Sections/Networking.png
+++ b/Cydia.app/Sections/Networking.png
Binary files differ
diff --git a/Cydia.app/Sections/Packaging.png b/Cydia.app/Sections/Packaging.png
index c1b72a5..d7d914e 100644
--- a/Cydia.app/Sections/Packaging.png
+++ b/Cydia.app/Sections/Packaging.png
Binary files differ
diff --git a/Cydia.app/Sections/Productivity.png b/Cydia.app/Sections/Productivity.png
index 943b8bd..c99c69d 100644
--- a/Cydia.app/Sections/Productivity.png
+++ b/Cydia.app/Sections/Productivity.png
Binary files differ
diff --git a/Cydia.app/Sections/Repositories.png b/Cydia.app/Sections/Repositories.png
index bed4a4a..d6fe267 100644
--- a/Cydia.app/Sections/Repositories.png
+++ b/Cydia.app/Sections/Repositories.png
Binary files differ
diff --git a/Cydia.app/Sections/Scripting.png b/Cydia.app/Sections/Scripting.png
index d020f71..22285d2 100644
--- a/Cydia.app/Sections/Scripting.png
+++ b/Cydia.app/Sections/Scripting.png
Binary files differ
diff --git a/Cydia.app/Sections/Security.png b/Cydia.app/Sections/Security.png
index b091a84..ae142eb 100644
--- a/Cydia.app/Sections/Security.png
+++ b/Cydia.app/Sections/Security.png
Binary files differ
diff --git a/Cydia.app/Sections/System.png b/Cydia.app/Sections/System.png
index f16c216..19d2c22 100644
--- a/Cydia.app/Sections/System.png
+++ b/Cydia.app/Sections/System.png
Binary files differ
diff --git a/Cydia.app/Sections/Terminal Support.png b/Cydia.app/Sections/Terminal Support.png
index 864374c..d664618 100644
--- a/Cydia.app/Sections/Terminal Support.png
+++ b/Cydia.app/Sections/Terminal Support.png
Binary files differ
diff --git a/Cydia.app/Sections/Text Editors.png b/Cydia.app/Sections/Text Editors.png
index 8176c27..5e65d46 100644
--- a/Cydia.app/Sections/Text Editors.png
+++ b/Cydia.app/Sections/Text Editors.png
Binary files differ
diff --git a/Cydia.app/Sections/Themes.png b/Cydia.app/Sections/Themes.png
index f5b44db..e35b948 100644
--- a/Cydia.app/Sections/Themes.png
+++ b/Cydia.app/Sections/Themes.png
Binary files differ
diff --git a/Cydia.app/Sections/Toys.png b/Cydia.app/Sections/Toys.png
index 88df4ab..368eb4c 100644
--- a/Cydia.app/Sections/Toys.png
+++ b/Cydia.app/Sections/Toys.png
Binary files differ
diff --git a/Cydia.app/Sections/Tweaks.png b/Cydia.app/Sections/Tweaks.png
index 14d400b..4f588c6 100644
--- a/Cydia.app/Sections/Tweaks.png
+++ b/Cydia.app/Sections/Tweaks.png
Binary files differ
diff --git a/Cydia.app/Sections/Utilities.png b/Cydia.app/Sections/Utilities.png
index 2d7c31d..fab5d32 100644
--- a/Cydia.app/Sections/Utilities.png
+++ b/Cydia.app/Sections/Utilities.png
Binary files differ
diff --git a/Cydia.app/Sections/Wallpaper.png b/Cydia.app/Sections/Wallpaper.png
new file mode 100644
index 0000000..1060fa0
--- /dev/null
+++ b/Cydia.app/Sections/Wallpaper.png
Binary files differ
diff --git a/Cydia.app/Sections/X Window.png b/Cydia.app/Sections/X Window.png
index 5b1b7f5..eac01e9 100644
--- a/Cydia.app/Sections/X Window.png
+++ b/Cydia.app/Sections/X Window.png
Binary files differ
diff --git a/Cydia.app/package.js b/Cydia.app/package.js
index 6f9ccf1..480ec01 100644
--- a/Cydia.app/package.js
+++ b/Cydia.app/package.js
@@ -39,7 +39,7 @@ $(function () {
$("#author-href").href("mailto:" + author.address + "?subject=" + regarding);
}
- $("#notice-src").src("http://apt.saurik.com/notice/" + encodeURIComponent(id) + ".html");
+ //$("#notice-src").src("http://saurik.cachefly.net/notice/" + encodeURIComponent(id) + ".html");
var depiction = package.depiction;
if (depiction == null)
diff --git a/Cydia.mm b/Cydia.mm
index 81d090f..e70d9f3 100644
--- a/Cydia.mm
+++ b/Cydia.mm
@@ -46,49 +46,7 @@
#include <WebCore/DOMHTML.h>
#import <QuartzCore/CALayer.h>
-#import <UIKit/UIActionSheet.h>
-#import <UIKit/UIAnimator.h>
-#import <UIKit/UIApplication.h>
-#import <UIKit/UIColor.h>
-#import <UIKit/UIFieldEditor.h>
-#import <UIKit/UIFrameAnimation.h>
-#import <UIKit/UIHardware.h>
-#import <UIKit/UIImage.h>
-#import <UIKit/UIImageAndTextTableCell.h>
-#import <UIKit/UIImageView.h>
-#import <UIKit/UIKeyboard.h>
-#import <UIKit/UIKeyboardImpl.h>
-#import <UIKit/UINavigationBar.h>
-#import <UIKit/UINavigationItem.h>
-#import <UIKit/UIPreferencesTable.h>
-#import <UIKit/UIPreferencesTableCell.h>
-#import <UIKit/UIProgressBar.h>
-#import <UIKit/UIProgressHUD.h>
-#import <UIKit/UIProgressIndicator.h>
-#import <UIKit/UIPushButton.h>
-#import <UIKit/UISearchField.h>
-#import <UIKit/UISimpleTableCell.h>
-#import <UIKit/_UISwitchSlider.h>
-#import <UIKit/UITableCell.h>
-#import <UIKit/UITableColumn.h>
-#import <UIKit/UITextField.h>
-#import <UIKit/UITextInputTraits.h>
-#import <UIKit/UITextLabel.h>
-#import <UIKit/UITextView.h>
-#import <UIKit/UIToolbar.h>
-#import <UIKit/UITransitionView.h>
-#import <UIKit/UIWebDocumentView.h>
-#import <UIKit/UIWebView.h>
-#import <UIKit/UIWindow.h>
-
-#import <UIKit/UIView-Geometry.h>
-#import <UIKit/UIView-Gestures.h>
-#import <UIKit/UIView-Hierarchy.h>
-#import <UIKit/UIView-Rendering.h>
-
-#import <UIKit/UIWebDocumentView-Forms.h>
-
-#import <UIKit/NSString-UIStringDrawing.h>
+#import <UIKit/UIKit.h>
// XXX: remove
#import <UIKit/UIActionSheet-Private.h>
@@ -142,8 +100,6 @@ extern "C" {
#include <errno.h>
#include <pcre.h>
-#define UIWebView UIWebDocumentView
-
#import "BrowserView.h"
#import "ResetView.h"
#import "UICaboodle.h"
@@ -163,14 +119,6 @@ static const NSStringCompareOptions CompareOptions_ = NSCaseInsensitiveSearch |
- (id) initWithCGColor:(CGColorRef)color;
@end
-@interface UIFont {
-}
-
-+ (id)systemFontOfSize:(float)fp8;
-+ (id)boldSystemFontOfSize:(float)fp8;
-- (UIFont *) fontWithSize:(CGFloat)size;
-@end
-
@interface NSObject (iPhoneOS)
- (CGColorRef) cgColor;
- (CGColorRef) CGColor;
@@ -228,8 +176,10 @@ extern NSString *kUIButtonBarButtonType;
typedef enum {
kUIProgressIndicatorStyleLargeWhite = 0,
kUIProgressIndicatorStyleMediumWhite = 1,
+ kUIProgressIndicatorStyleMediumBrown = 2,
kUIProgressIndicatorStyleSmallWhite = 3,
- kUIProgressIndicatorStyleSmallBlack = 4
+ kUIProgressIndicatorStyleSmallBlack = 4,
+ kUIProgressIndicatorStyleTinyWhite = 5,
} UIProgressIndicatorStyle;
typedef enum {
@@ -467,7 +417,7 @@ static const char * const SpringBoard_ = "/System/Library/LaunchDaemons/com.appl
static CGColor Blue_;
static CGColor Blueish_;
static CGColor Black_;
-static CGColor Clear_;
+static CGColor Off_;
static CGColor Red_;
static CGColor White_;
static CGColor Gray_;
@@ -512,6 +462,7 @@ static _transient NSString *Role_;
static _transient NSMutableDictionary *Packages_;
static _transient NSMutableDictionary *Sections_;
static _transient NSMutableDictionary *Sources_;
+static _transient NSMutableArray *Documents_;
static bool Changed_;
static NSDate *now_;
@@ -565,7 +516,7 @@ UITextView *GetTextView(NSString *value, float left, bool html) {
[text setText:value];
[text setEnabled:NO];
- [text setBackgroundColor:[UIColor colorWithCGColor:Clear_]];
+ [text setBackgroundColor:[UIColor clearColor]];
CGRect frame = [text frame];
[text setFrame:frame];
@@ -624,7 +575,9 @@ bool isSectionVisible(NSString *section) {
- (void) setProgressError:(NSString *)error forPackage:(NSString *)id;
- (void) setProgressTitle:(NSString *)title;
- (void) setProgressPercent:(float)percent;
+- (void) startProgress;
- (void) addProgressOutput:(NSString *)output;
+- (bool) isCancelling:(size_t)received;
@end
@protocol ConfigurationDelegate
@@ -697,10 +650,11 @@ class Status :
);
[delegate_ setProgressPercent:percent];
- return value;
+ return [delegate_ isCancelling:CurrentBytes] ? false : value;
}
virtual void Start() {
+ [delegate_ startProgress];
}
virtual void Stop() {
@@ -1475,7 +1429,7 @@ NSString *Scour(const char *field, const char *begin, const char *end) {
NSRange range;
- range = [[self id] rangeOfString:text options:NSCaseInsentiveSearch];
+ range = [[self id] rangeOfString:text options:NSCaseInsensitiveSearch];
if (range.location != NSNotFound)
return YES;
@@ -2427,7 +2381,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
0, navsize.height, bounds.size.width, bounds.size.height - navsize.height
)];
- [table_ setReusesTableCells:YES];
[table_ setDataSource:self];
[table_ reloadData];
@@ -2503,6 +2456,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
id delegate_;
BOOL running_;
SHA1SumValue springlist_;
+ size_t received_;
+ NSTimeInterval last_;
}
- (void) transitionViewDidComplete:(UITransitionView*)view fromView:(UIView*)from toView:(UIView*)to;
@@ -2558,10 +2513,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
overlay_ = [[UIView alloc] initWithFrame:[transition_ bounds]];
if (bootstrap_)
- [overlay_ setBackgroundColor:[UIColor colorWithCGColor:Black_]];
+ [overlay_ setBackgroundColor:[UIColor blackColor]];
else {
background_ = [[UIView alloc] initWithFrame:[self bounds]];
- [background_ setBackgroundColor:[UIColor colorWithCGColor:Black_]];
+ [background_ setBackgroundColor:[UIColor blackColor]];
[self addSubview:background_];
}
@@ -2597,8 +2552,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
24
)];
- [status_ setColor:[UIColor colorWithCGColor:White_]];
- [status_ setBackgroundColor:[UIColor colorWithCGColor:Clear_]];
+ [status_ setColor:[UIColor whiteColor]];
+ [status_ setBackgroundColor:[UIColor clearColor]];
[status_ setCentersHorizontally:YES];
//[status_ setFont:font];
@@ -2613,8 +2568,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
//[output_ setTextFont:@"Courier New"];
[output_ setTextSize:12];
- [output_ setTextColor:[UIColor colorWithCGColor:White_]];
- [output_ setBackgroundColor:[UIColor colorWithCGColor:Clear_]];
+ [output_ setTextColor:[UIColor whiteColor]];
+ [output_ setBackgroundColor:[UIColor clearColor]];
[output_ setMarginTop:0];
[output_ setAllowsRubberBanding:YES];
@@ -2751,6 +2706,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[output_ setText:@""];
[progress_ setProgress:0];
+ received_ = 0;
+ last_ = 0;//[NSDate timeIntervalSinceReferenceDate];
+
[close_ removeFromSuperview];
[overlay_ addSubview:progress_];
[overlay_ addSubview:status_];
@@ -2784,7 +2742,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
detachNewThreadSelector:selector
toTarget:database_
withObject:nil
- title:@"Repairing..."
+ title:@"Repairing"
];
}
@@ -2827,6 +2785,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
];
}
+- (void) startProgress {
+ last_ = [NSDate timeIntervalSinceReferenceDate];
+}
+
- (void) addProgressOutput:(NSString *)output {
[self
performSelectorOnMainThread:@selector(_addProgressOutput:)
@@ -2835,6 +2797,19 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
];
}
+- (bool) isCancelling:(size_t)received {
+ if (last_ != 0) {
+ NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
+ if (received_ != received) {
+ received_ = received;
+ last_ = now;
+ } else if (now - last_ > 30)
+ return true;
+ }
+
+ return false;
+}
+
- (void) _setConfigurationData:(NSString *)data {
static Pcre conffile_r("^'(.*)' '(.*)' ([01]) ([01])$");
@@ -2863,7 +2838,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) _setProgressTitle:(NSString *)title {
- [status_ setText:[title stringByAppendingString:@"..."]];
+ [status_ setText:title];
}
- (void) _setProgressPercent:(NSNumber *)percent {
@@ -2944,7 +2919,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
badge_ = [[UIImageView alloc] initWithFrame:CGRectMake(17, 70, 16, 16)];
status_ = [[UITextLabel alloc] initWithFrame:CGRectMake(48, 68, 280, 20)];
- [status_ setBackgroundColor:Clear_];
+ [status_ setBackgroundColor:[UIColor clearColor]];
[status_ setFont:small];
#endif
} return self;
@@ -3003,7 +2978,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
} else if ([package half]) {
[badge_ setImage:[UIImage applicationImageNamed:@"damaged.png"]];
[status_ setText:@"Package Damaged"];
- [status_ setColor:Red_];
+ [status_ setColor:[UIColor redColor]];
} else {
[badge_ setImage:nil];
[status_ setText:nil];
@@ -3017,8 +2992,18 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) drawContentInRect:(CGRect)rect selected:(BOOL)selected {
- if (icon_ != nil)
- [icon_ drawInRect:CGRectMake(10, 10, 30, 30)];
+ if (icon_ != nil) {
+ CGRect rect;
+ rect.size = [icon_ size];
+
+ 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 (selected)
UISetColor(White_);
@@ -3542,6 +3527,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[self addSubview:list_];
[self reloadData];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [list_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -3983,6 +3971,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[table setDelegate:self];
[self reloadData];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [list_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -4055,8 +4046,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
return [[list_ table] isRowDeletionEnabled] ? @"Done" : @"Edit";
}
-- (RVUINavBarButtonStyle) rightButtonStyle {
- return [[list_ table] isRowDeletionEnabled] ? RVUINavBarButtonStyleHighlighted : RVUINavBarButtonStyleNormal;
+- (UINavigationButtonStyle) rightButtonStyle {
+ return [[list_ table] isRowDeletionEnabled] ? UINavigationButtonStyleHighlighted : UINavigationButtonStyleNormal;
}
@end
@@ -4093,6 +4084,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
];
[self addSubview:packages_];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [packages_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -4123,8 +4117,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
return Role_ != nil && [Role_ isEqualToString:@"Developer"] ? nil : expert_ ? @"Expert" : @"Simple";
}
-- (RVUINavBarButtonStyle) rightButtonStyle {
- return expert_ ? RVUINavBarButtonStyleHighlighted : RVUINavBarButtonStyleNormal;
+- (UINavigationButtonStyle) rightButtonStyle {
+ return expert_ ? UINavigationButtonStyleHighlighted : UINavigationButtonStyleNormal;
}
- (void) setDelegate:(id)delegate {
@@ -4207,6 +4201,41 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
@end
/* }}} */
+/* Indirect Delegate {{{ */
+@interface IndirectDelegate : NSProxy {
+ _transient id delegate_;
+}
+
+- (void) setDelegate:(id)delegate;
+- (id) initWithDelegate:(id)delegate;
+@end
+
+@implementation IndirectDelegate
+
+- (void) setDelegate:(id)delegate {
+ delegate_ = delegate;
+}
+
+- (id) initWithDelegate:(id)delegate {
+ delegate_ = delegate;
+ return self;
+}
+
+- (NSMethodSignature*) methodSignatureForSelector:(SEL)sel {
+ if (delegate_ != nil)
+ if (NSMethodSignature *sig = [delegate_ methodSignatureForSelector:sel])
+ return sig;
+ return nil;
+}
+
+- (void) forwardInvocation:(NSInvocation*)inv {
+ SEL sel = [inv selector];
+ if (delegate_ != nil && [delegate_ respondsToSelector:sel])
+ [inv invokeWithTarget:delegate_];
+}
+
+@end
+/* }}} */
/* Browser Implementation {{{ */
@implementation BrowserView
@@ -4216,11 +4245,22 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[webview setResourceLoadDelegate:nil];
[webview setUIDelegate:nil];
- [scroller_ setDelegate:nil];
[webview_ setDelegate:nil];
+ [webview_ setGestureDelegate:nil];
- [scroller_ release];
+ /*WebFrame *frame = [webview mainFrame];
+ [frame loadHTMLString:@"" baseURL:[NSURL URLWithString:@"http://cydia.saurik.com/"]];*/
+
+ //[webview_ removeFromSuperview];
+ //[Documents_ addObject:[webview_ autorelease]];
[webview_ release];
+
+ [indirect_ setDelegate:nil];
+ [indirect_ release];
+
+ [scroller_ setDelegate:nil];
+
+ [scroller_ release];
[urls_ release];
[indicator_ release];
if (title_ != nil)
@@ -4309,8 +4349,11 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
RVPage *page = nil;
if (
+ [href hasPrefix:@"http://ax.phobos.apple.com/"] ||
[href hasPrefix:@"http://phobos.apple.com/"] ||
- [href hasPrefix:@"mailto:"]
+ [href hasPrefix:@"http://www.youtube.com/watch?"] ||
+ [href hasPrefix:@"mailto:"] ||
+ [href hasPrefix:@"tel:"]
)
[delegate_ openURL:[NSURL URLWithString:href]];
else if ([href isEqualToString:@"cydia://add-source"])
@@ -4354,7 +4397,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
- (NSURLRequest *) webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource {
NSURL *url = [request URL];
- NSLog(@"Cydia:%@", url);
if ([self getSpecial:[url absoluteString]])
return nil;
@@ -4370,14 +4412,21 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
return
[scheme isEqualToString:@"apptapp"] ||
[scheme isEqualToString:@"cydia"] ||
- [scheme isEqualToString:@"mailto"];
+ [scheme isEqualToString:@"mailto"] ||
+ [scheme isEqualToString:@"tel"];
}
- (WebView *) webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request {
if (request != nil) {
NSURL *url = [request URL];
NSString *scheme = [url scheme];
- if ([self isSpecialScheme:scheme] || [[url absoluteString] hasPrefix:@"http://phobos.apple.com/"])
+ NSString *absolute = [url absoluteString];
+ if (
+ [self isSpecialScheme:scheme] ||
+ [absolute hasPrefix:@"http://ax.phobos.apple.com/"] ||
+ [absolute hasPrefix:@"http://phobos.apple.com/"] ||
+ [absolute hasPrefix:@"http://www.yahoo.com/watch?"]
+ )
return nil;
}
@@ -4416,7 +4465,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
title_ = nil;
}
- [self setTitle:@"Loading..."];
+ [self setTitle:@"Loading"];
WebView *webview = [webview_ webView];
NSString *href = [webview mainFrameURL];
@@ -4499,32 +4548,40 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
CGRect webrect = [scroller_ bounds];
webrect.size.height = 0;
- webview_ = [[UIWebView alloc] initWithFrame:webrect];
- [scroller_ addSubview:webview_];
+ webview_ = [Documents_ lastObject];
+ if (webview_ != nil) {
+ webview_ = [webview_ retain];
+ [Documents_ removeLastObject];
+ [webview_ setFrame:webrect];
+ } else {
+ webview_ = [[UIWebDocumentView alloc] initWithFrame:webrect];
+
+ [webview_ setTileSize:CGSizeMake(webrect.size.width, 500)];
- [webview_ setTileSize:CGSizeMake(webrect.size.width, 500)];
+ [webview_ setTilingEnabled:YES];
+ [webview_ setTileMinificationFilter:kCAFilterNearest];
+ [webview_ setAutoresizes:YES];
- [webview_ setTilingEnabled:YES];
- [webview_ setTileMinificationFilter:kCAFilterNearest];
- [webview_ setAutoresizes:YES];
+ [webview_ setViewportSize:CGSizeMake(980, -1) forDocumentTypes:0x10];
+ [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x2];
+ [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x8];
- [webview_ setViewportSize:CGSizeMake(980, -1) forDocumentTypes:0x10];
- [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x2];
- [webview_ setViewportSize:CGSizeMake(320, -1) forDocumentTypes:0x8];
+ [webview_ _setDocumentType:0x4];
- [webview_ _setDocumentType:0x4];
+ [webview_ setZoomsFocusedFormControl:YES];
+ [webview_ setContentsPosition:7];
+ [webview_ setEnabledGestures:0xa];
+ [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x4];
+ [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x7];
+ [webview_ setSmoothsFonts:YES];
+ }
- [webview_ setZoomsFocusedFormControl:YES];
- [webview_ setContentsPosition:7];
- [webview_ setEnabledGestures:0xa];
- [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x4];
- [webview_ setValue:[NSNumber numberWithBool:YES] forGestureAttribute:0x7];
[webview_ setDelegate:self];
[webview_ setGestureDelegate:self];
- [webview_ setSmoothsFonts:YES];
+ [scroller_ addSubview:webview_];
CGSize indsize = [UIProgressIndicator defaultSizeForStyle:kUIProgressIndicatorStyleMediumWhite];
- indicator_ = [[UIProgressIndicator alloc] initWithFrame:CGRectMake(281, 42, indsize.width, indsize.height)];
+ indicator_ = [[UIProgressIndicator alloc] initWithFrame:CGRectMake(281, 12, indsize.width, indsize.height)];
[indicator_ setStyle:kUIProgressIndicatorStyleMediumWhite];
Package *package([database_ packageWithName:@"cydia"]);
@@ -4533,15 +4590,21 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[package installed]
];
+ indirect_ = [[IndirectDelegate alloc] initWithDelegate:self];
+
WebView *webview = [webview_ webView];
[webview setApplicationNameForUserAgent:application];
[webview setFrameLoadDelegate:self];
- [webview setResourceLoadDelegate:self];
+ [webview setResourceLoadDelegate:indirect_];
[webview setUIDelegate:self];
//[webview _setLayoutInterval:0.5];
urls_ = [[NSMutableArray alloc] initWithCapacity:16];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [scroller_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [pinstripe setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -4571,10 +4634,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) setPageActive:(BOOL)active {
- if (active)
- [book_ addSubview:indicator_];
- else
+ if (!active)
[indicator_ removeFromSuperview];
+ else
+ [[book_ navigationBar] addSubview:indicator_];
}
- (void) resetViewAnimated:(BOOL)animated {
@@ -4591,11 +4654,14 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
ProgressDelegate
> {
_transient Database *database_;
- UIView *overlay_;
+ UINavigationBar *overlay_;
UIProgressIndicator *indicator_;
UITextLabel *prompt_;
UIProgressBar *progress_;
+ UINavigationButton *cancel_;
bool updating_;
+ size_t received_;
+ NSTimeInterval last_;
}
- (id) initWithFrame:(CGRect)frame database:(Database *)database;
@@ -4725,6 +4791,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[list_ setReusesTableCells:YES];
[self reloadData];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [list_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -4808,6 +4877,10 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
return [sections_ count] == 0 ? nil : editing_ ? @"Done" : @"Edit";
}
+- (UINavigationButtonStyle) rightButtonStyle {
+ return editing_ ? UINavigationButtonStyleHighlighted : UINavigationButtonStyleNormal;
+}
+
- (UIView *) accessoryView {
return accessory_;
}
@@ -4918,6 +4991,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[table setReusesTableCells:YES];
[self reloadData];
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [list_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -5177,7 +5253,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
CGRect area;
area.origin.x = /*cnfrect.origin.x + cnfrect.size.width + 4 +*/ 10;
- area.origin.y = 30;
+ area.origin.y = 1;
area.size.width =
#ifdef __OBJC2__
@@ -5202,7 +5278,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[traits setAutocorrectionType:1];
[traits setReturnKeyType:6];
- CGRect accrect = {{0, 6}, {6 + cnfrect.size.width + 6 + area.size.width + 6, area.size.height + 30}};
+ CGRect accrect = {{0, 6}, {6 + cnfrect.size.width + 6 + area.size.width + 6, area.size.height}};
accessory_ = [[UIView alloc] initWithFrame:accrect];
[accessory_ addSubview:field_];
@@ -5212,6 +5288,9 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[configure setImage:[UIImage applicationImageNamed:@"advanced.png"]];
[configure addTarget:self action:@selector(configurePushed) forEvents:1];
[accessory_ addSubview:configure];*/
+
+ [self setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
+ [table_ setAutoresizingMask:UIViewAutoresizingFlexibleHeight];
} return self;
}
@@ -5277,6 +5356,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[indicator_ release];
[prompt_ release];
[progress_ release];
+ [cancel_ release];
[super dealloc];
}
@@ -5289,13 +5369,31 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) update {
- [navbar_ setPrompt:@""];
- [navbar_ addSubview:overlay_];
+ [UIView beginAnimations:nil context:NULL];
+
+ CGRect ovrframe = [overlay_ frame];
+ ovrframe.origin.y = 0;
+ [overlay_ setFrame:ovrframe];
+
+ CGRect barframe = [navbar_ frame];
+ barframe.origin.y += ovrframe.size.height;
+ [navbar_ setFrame:barframe];
+
+ CGRect trnframe = [transition_ frame];
+ trnframe.origin.y += ovrframe.size.height;
+ trnframe.size.height -= ovrframe.size.height;
+ [transition_ setFrame:trnframe];
+
+ [UIView endAnimations];
+
[indicator_ startAnimation];
- [prompt_ setText:@"Updating Database..."];
+ [prompt_ setText:@"Updating Database"];
[progress_ setProgress:0];
+ received_ = 0;
+ last_ = [NSDate timeIntervalSinceReferenceDate];
updating_ = true;
+ [overlay_ addSubview:cancel_];
[NSThread
detachNewThreadSelector:@selector(_update)
@@ -5307,11 +5405,26 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
- (void) _update_ {
updating_ = false;
- [overlay_ removeFromSuperview];
[indicator_ stopAnimation];
- [delegate_ reloadData];
- [self setPrompt:[NSString stringWithFormat:@"Last Updated: %@", GetLastUpdate()]];
+ [UIView beginAnimations:nil context:NULL];
+
+ CGRect ovrframe = [overlay_ frame];
+ ovrframe.origin.y = -ovrframe.size.height;
+ [overlay_ setFrame:ovrframe];
+
+ CGRect barframe = [navbar_ frame];
+ barframe.origin.y -= ovrframe.size.height;
+ [navbar_ setFrame:barframe];
+
+ CGRect trnframe = [transition_ frame];
+ trnframe.origin.y -= ovrframe.size.height;
+ trnframe.size.height += ovrframe.size.height;
+ [transition_ setFrame:trnframe];
+
+ [UIView commitAnimations];
+
+ [delegate_ performSelector:@selector(reloadData) withObject:nil afterDelay:0];
}
- (id) initWithFrame:(CGRect)frame database:(Database *)database {
@@ -5319,15 +5432,19 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
database_ = database;
CGRect ovrrect = [navbar_ bounds];
- ovrrect.size.height = ([UINavigationBar defaultSizeWithPrompt].height - [UINavigationBar defaultSize].height);
+ ovrrect.size.height = [UINavigationBar defaultSize].height;
+ ovrrect.origin.y = -ovrrect.size.height;
- overlay_ = [[UIView alloc] initWithFrame:ovrrect];
+ overlay_ = [[UINavigationBar alloc] initWithFrame:ovrrect];
+ [self addSubview:overlay_];
- bool ugly = [navbar_ _barStyle:NO] == 0;
+ [overlay_ setBarStyle:1];
+ int barstyle = [overlay_ _barStyle:NO];
+ bool ugly = barstyle == 0;
UIProgressIndicatorStyle style = ugly ?
- kUIProgressIndicatorStyleSmallBlack :
- kUIProgressIndicatorStyleSmallWhite;
+ kUIProgressIndicatorStyleMediumBrown :
+ kUIProgressIndicatorStyleMediumWhite;
CGSize indsize = [UIProgressIndicator defaultSizeForStyle:style];
unsigned indoffset = (ovrrect.size.height - indsize.height) / 2;
@@ -5337,22 +5454,22 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[indicator_ setStyle:style];
[overlay_ addSubview:indicator_];
- CGSize prmsize = {200, indsize.width + 4};
+ CGSize prmsize = {215, indsize.height + 4};
CGRect prmrect = {{
indoffset * 2 + indsize.width,
#ifdef __OBJC2__
-1 +
#endif
- (ovrrect.size.height - prmsize.height) / 2
+ unsigned(ovrrect.size.height - prmsize.height) / 2
}, prmsize};
- UIFont *font = [UIFont systemFontOfSize:12];
+ UIFont *font = [UIFont systemFontOfSize:15];
prompt_ = [[UITextLabel alloc] initWithFrame:prmrect];
- [prompt_ setColor:[UIColor colorWithCGColor:(ugly ? Blueish_ : White_)]];
- [prompt_ setBackgroundColor:[UIColor colorWithCGColor:Clear_]];
+ [prompt_ setColor:[UIColor colorWithCGColor:(ugly ? Blueish_ : Off_)]];
+ [prompt_ setBackgroundColor:[UIColor clearColor]];
[prompt_ setFont:font];
[overlay_ addSubview:prompt_];
@@ -5367,9 +5484,25 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
progress_ = [[UIProgressBar alloc] initWithFrame:prgrect];
[progress_ setStyle:0];
[overlay_ addSubview:progress_];
+
+ cancel_ = [[UINavigationButton alloc] initWithTitle:@"Cancel" style:UINavigationButtonStyleHighlighted];
+ [cancel_ addTarget:self action:@selector(_onCancel) forControlEvents:UIControlEventTouchUpInside];
+
+ CGRect frame = [cancel_ frame];
+ frame.size.width = 65;
+ frame.origin.x = ovrrect.size.width - frame.size.width - 5;
+ frame.origin.y = (ovrrect.size.height - frame.size.height) / 2;
+ [cancel_ setFrame:frame];
+
+ [cancel_ setBarStyle:barstyle];
} return self;
}
+- (void) _onCancel {
+ updating_ = false;
+ [cancel_ removeFromSuperview];
+}
+
- (void) _update {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
@@ -5400,6 +5533,14 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) setProgressPercent:(float)percent {
+ [self
+ performSelectorOnMainThread:@selector(_setProgressPercent:)
+ withObject:[NSNumber numberWithFloat:percent]
+ waitUntilDone:YES
+ ];
+}
+
+- (void) startProgress {
}
- (void) addProgressOutput:(NSString *)output {
@@ -5410,12 +5551,26 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
];
}
+- (bool) isCancelling:(size_t)received {
+ NSTimeInterval now = [NSDate timeIntervalSinceReferenceDate];
+ if (received_ != received) {
+ received_ = received;
+ last_ = now;
+ } else if (now - last_ > 15)
+ return true;
+ return !updating_;
+}
+
- (void) alertSheet:(UIActionSheet *)sheet buttonClicked:(int)button {
[sheet dismiss];
}
- (void) _setProgressTitle:(NSString *)title {
- [prompt_ setText:[title stringByAppendingString:@"..."]];
+ [prompt_ setText:title];
+}
+
+- (void) _setProgressPercent:(NSNumber *)percent {
+ [progress_ setProgress:[percent floatValue]];
}
- (void) _addProgressOutput:(NSString *)output {
@@ -5594,7 +5749,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
detachNewThreadSelector:@selector(update_)
toTarget:self
withObject:nil
- title:@"Updating Sources..."
+ title:@"Updating Sources"
];
}
@@ -5682,7 +5837,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
detachNewThreadSelector:@selector(perform)
toTarget:database_
withObject:nil
- title:@"Running..."
+ title:@"Running"
];
}
@@ -5698,7 +5853,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
detachNewThreadSelector:@selector(bootstrap_)
toTarget:self
withObject:nil
- title:@"Bootstrap Install..."
+ title:@"Bootstrap Install"
];
}
@@ -6285,6 +6440,8 @@ int main(int argc, char *argv[]) {
[Metadata_ setObject:Sources_ forKey:@"Sources"];
}
+ Documents_ = [[[NSMutableArray alloc] initWithCapacity:4] autorelease];
+
if (access("/Library/MobileSubstrate/MobileSubstrate.dylib", F_OK) == 0)
dlopen("/Library/MobileSubstrate/MobileSubstrate.dylib", RTLD_LAZY | RTLD_GLOBAL);
@@ -6297,7 +6454,7 @@ int main(int argc, char *argv[]) {
Blue_.Set(space_, 0.2, 0.2, 1.0, 1.0);
Blueish_.Set(space_, 0x19/255.f, 0x32/255.f, 0x50/255.f, 1.0);
Black_.Set(space_, 0.0, 0.0, 0.0, 1.0);
- Clear_.Set(space_, 0.0, 0.0, 0.0, 0.0);
+ Off_.Set(space_, 0.9, 0.9, 0.9, 1.0);
Red_.Set(space_, 1.0, 0.0, 0.0, 1.0);
White_.Set(space_, 1.0, 1.0, 1.0, 1.0);
Gray_.Set(space_, 0.4, 0.4, 0.4, 1.0);
diff --git a/makefile b/makefile
index 6763d1d..840ce38 100644
--- a/makefile
+++ b/makefile
@@ -23,7 +23,7 @@ exec: exec.mm makefile
$(target)g++ -Wall -Werror -o $@ $< -framework Foundation -framework CoreFoundation -lobjc
Cydia: Cydia.mm ../uicaboodle.m/*.mm *.h makefile
- $(target)g++ -march=armv6 -mcpu=arm1176jzf-s -I../uicaboodle.m -fobjc-call-cxx-cdtors -g0 -O2 -Wall -Werror -o $@ $(filter %.mm,$^) -framework UIKit -framework IOKit -framework CoreFoundation -framework Foundation -framework CoreGraphics -framework GraphicsServices $(frameworks) -lobjc -lapt-pkg -lpcre -fobjc-exceptions -I/apl/inc/iPhoneOS-2.0 -F"$${PKG_ROOT}"/System/Library/PrivateFrameworks
+ $(target)g++ -march=armv6 -mcpu=arm1176jzf-s -I../uicaboodle.m -fobjc-call-cxx-cdtors -g0 -O2 -Wall -Werror -o $@ $(filter %.mm,$^) -framework UIKit -framework IOKit -framework CoreFoundation -framework Foundation -framework CoreGraphics -framework GraphicsServices $(frameworks) -lobjc -lapt-pkg -lpcre -fobjc-exceptions -F"$${PKG_ROOT}"/System/Library/PrivateFrameworks
sign: Cydia
CODESIGN_ALLOCATE=$$(which "$(target)codesign_allocate") /apl/tel/util/ldid -S Cydia