summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Cydia.app/menes/style.css120
-rw-r--r--Cydia.app/storage.js2
-rw-r--r--Cydia.mm118
-rw-r--r--control2
4 files changed, 182 insertions, 60 deletions
diff --git a/Cydia.app/menes/style.css b/Cydia.app/menes/style.css
index d9915c9..cf66414 100644
--- a/Cydia.app/menes/style.css
+++ b/Cydia.app/menes/style.css
@@ -252,31 +252,67 @@ list > fieldset > textarea {
border-bottom: 1px solid #e0e0e0;
}
-fieldset > a,
+fieldset > a:not([type="ad"]),
fieldset > div,
fieldset > textarea {
- min-height: 42px;
/* XXX: small differences due to font bugs */
padding: 13px 14px 11px 14px;
}
-panel > fieldset > a.thumb:first-child > div:first-of-type {
+fieldset > a[type="ad"] {
+ /* XXX: small differences due to font bugs */
+ padding: 4px 4px 2px 5px;
+}
+
+panel > fieldset > a[type="ad"]:first-child > div:first-of-type,
+panel > fieldset > a[type="thumb"]:first-child > div:first-of-type {
-webkit-border-top-left-radius: 9px;
}
-panel > fieldset > a.thumb:last-child > div:first-of-type {
+panel > fieldset > a[type="ad"]:last-child > div:first-of-type,
+panel > fieldset > a[type="thumb"]:last-child > div:first-of-type {
-webkit-border-bottom-left-radius: 9px;
}
-list > fieldset > a.thumb > div:first-of-type {
+fieldset > a[type="ad"] > div:first-of-type {
+ border: 1px solid #999999;
+}
+
+list > fieldset > a[type="thumb"] > div:first-of-type {
border: 1px solid #e0e0e0;
}
-panel > fieldset > a.thumb > div:first-of-type {
+panel > fieldset > a[type="thumb"] > div:first-of-type {
border: 1px solid #999999;
}
-fieldset > a.thumb > div:first-of-type {
+div[tile] {
+ float: right;
+ height: 30px;
+ width: 30px;
+}
+
+div[tile="app"] { background-image: url(http://cache.saurik.com/cydia/tile/app.png); }
+div[tile="call"] { background-image: url(http://cache.saurik.com/cydia/tile/call.png); }
+div[tile="map"] { background-image: url(http://cache.saurik.com/cydia/tile/map.png); }
+div[tile="media"] { background-image: url(http://cache.saurik.com/cydia/tile/media.png); }
+div[tile="music"] { background-image: url(http://cache.saurik.com/cydia/tile/video.png); }
+div[tile="site"] { background-image: url(http://cache.saurik.com/cydia/tile/site.png); }
+
+fieldset > a[type="ad"] > div:first-of-type {
+ background-repeat: no-repeat;
+ background-position: center center;
+ border-right: none;
+ display: inline-block;
+ height: 40px;
+ line-height: 38px;
+ /* XXX: small differences due to font bugs */
+ /* XXX: 1px difference due to border stupidity */
+ margin: -5px 5px -3px -6px;
+ width: 40px;
+}
+
+fieldset > a[type="thumb"] > div:first-of-type {
background-repeat: no-repeat;
background-position: center center;
display: inline-block;
@@ -337,7 +373,7 @@ fieldset > div > select {
/* Chevrons {{{ */
-fieldset > a[href],
+fieldset > a[href]:not([type="ad"]),
fieldset > div > select {
background-repeat: no-repeat;
background-image: url(chevron.png);
@@ -417,7 +453,11 @@ fieldset > div > div {
width: 273px;
}
-fieldset > a:not(.thumb) > div {
+fieldset > a[type="ad"] > div:nth-of-type(2) {
+ width: 218px;
+}
+
+fieldset > a:not([type]) > div {
width: 250px;
}
@@ -429,17 +469,17 @@ fieldset > a > img.icon + div {
width: 221px;
}
-fieldset > a.thumb > div:nth-of-type(2) > label:only-of-type {
+fieldset > a[type="thumb"] > div:nth-of-type(2) > label:only-of-type {
position: relative;
top: 10px;
}
-fieldset > a.thumb > div:nth-of-type(2) > label:nth-of-type(2) {
+fieldset > a[type="thumb"] > div:nth-of-type(2) > label:nth-of-type(2) {
display: block;
margin-top: 2px;
}
-fieldset > a.thumb > div:nth-of-type(2) {
+fieldset > a[type="thumb"] > div:nth-of-type(2) {
vertical-align: top;
width: 193px;
}
@@ -451,12 +491,12 @@ fieldset > div > div > label:first-of-type {
font-weight: bold;
}
-list > fieldset > a:not(.thumb) > div > label:nth-of-type(2),
+list > fieldset > a:not([type]) > div > label:nth-of-type(2),
list > fieldset > div > div > label:nth-of-type(2) {
margin-left: 94px;
}
-panel > fieldset > a:not(.thumb) > div > label:nth-of-type(2),
+panel > fieldset > a:not([type]) > div > label:nth-of-type(2),
panel > fieldset > div > div > label:nth-of-type(2) {
float: right;
text-align: right;
@@ -469,15 +509,61 @@ panel > img {
width: 300px;
}
-fieldset > a.thumb:first-child > back {
+fieldset > a[type="ad"] {
+}
+
+fieldset > a[type="ad"] > div:nth-of-type(2) {
+ position: relative;
+ vertical-align: top;
+}
+
+fieldset > a[type="ad"] > div > label:nth-of-type(1) {
+ color: #2d2d50;
+ font-size: 13px;
+ font-weight: bold;
+ line-height: 15px;
+}
+
+fieldset > a[type="ad"] > div > label:nth-of-type(2) {
+ position: absolute;
+ top: 17px;
+ left: 156px;
+ font-size: 9.5px;
+ font-weight: normal;
+}
+
+fieldset.half > a {
+ background: none;
+ background-position-x: 120px;
+}
+
+fieldset.half > a > img.icon + div {
+ width: 65px;
+}
+
+fieldset.right {
+ float: right;
+ margin-left: 10px;
+}
+
+block + fieldset.right,
+fieldset + fieldset.right {
+ margin-top: 0;
+}
+
+fieldset.half {
+ width: 146px;
+}
+
+fieldset > a[type="thumb"]:first-child > back {
-webkit-border-top-right-radius: 9px;
}
-fieldset > a.thumb:last-child > back {
+fieldset > a[type="thumb"]:last-child > back {
-webkit-border-bottom-right-radius: 9px;
}
-fieldset > a.thumb > back {
+fieldset > a[type="thumb"] > back {
background-repeat: no-repeat;
border: 1px solid #999999;
display: block;
diff --git a/Cydia.app/storage.js b/Cydia.app/storage.js
index 02dc51b..73d5de7 100644
--- a/Cydia.app/storage.js
+++ b/Cydia.app/storage.js
@@ -57,6 +57,8 @@ var setup = function (name, root, folders) {
for (var i = 0; i != folders.length; ++i) {
var folder = folders[i];
var usage = cydia.du(folder[1]);
+ if (usage == null)
+ usage = 0;
var color = colors[i + 2];
var percent = usage / kb;
list(legend, color, folder[0], percent);
diff --git a/Cydia.mm b/Cydia.mm
index a4b2e60..f64b9e4 100644
--- a/Cydia.mm
+++ b/Cydia.mm
@@ -172,6 +172,56 @@ void NSLogRect(const char *fix, const CGRect &rect) {
NSLog(@"%s(%g,%g)+(%g,%g)", fix, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
}
+@interface NSObject (Cydia)
+- (void) yieldToSelector:(SEL)selector withObject:(id)object;
+@end
+
+@implementation NSObject (Cydia)
+
+- (void) doNothing {
+}
+
+- (void) _yieldToContext:(NSArray *)context { _pooled
+ SEL selector(reinterpret_cast<SEL>([[context objectAtIndex:0] pointerValue]));
+ id object([[context objectAtIndex:1] nonretainedObjectValue]);
+ volatile bool &stopped(*reinterpret_cast<bool *>([[context objectAtIndex:2] pointerValue]));
+
+ [self performSelector:selector withObject:object];
+
+ stopped = true;
+
+ [self
+ performSelectorOnMainThread:@selector(doNothing)
+ withObject:nil
+ waitUntilDone:NO
+ ];
+}
+
+- (void) yieldToSelector:(SEL)selector withObject:(id)object {
+ volatile bool stopped(false);
+
+ NSArray *context([NSArray arrayWithObjects:
+ [NSValue valueWithPointer:selector],
+ [NSValue valueWithNonretainedObject:object],
+ [NSValue valueWithPointer:const_cast<bool *>(&stopped)],
+ nil]);
+
+ NSThread *thread([[[NSThread alloc]
+ initWithTarget:self
+ selector:@selector(_yieldToContext:)
+ object:context
+ ] autorelease]);
+
+ [thread start];
+
+ NSRunLoop *loop([NSRunLoop currentRunLoop]);
+ NSDate *future([NSDate distantFuture]);
+
+ while (!stopped && [loop runMode:NSDefaultRunLoopMode beforeDate:future]);
+}
+
+@end
+
/* NSForcedOrderingSearch doesn't work on the iPhone */
static const NSStringCompareOptions BaseCompareOptions_ = NSNumericSearch | NSDiacriticInsensitiveSearch | NSWidthInsensitiveSearch;
static const NSStringCompareOptions ForcedCompareOptions_ = BaseCompareOptions_;
@@ -759,6 +809,7 @@ bool isSectionVisible(NSString *section) {
- (void) syncData;
- (void) askForSettings;
- (UIProgressHUD *) addProgressHUD;
+- (void) removeProgressHUD:(UIProgressHUD *)hud;
- (RVPage *) pageForURL:(NSURL *)url hasTag:(int *)tag;
- (RVPage *) pageForPackage:(NSString *)name;
- (void) openMailToURL:(NSURL *)url;
@@ -1604,7 +1655,7 @@ class Progress :
bool value;
if (current.end())
- value = essential && [self essential];
+ value = essential && [self essential] && [self visible];
else
value = !version_.end() && version_ != current;// && (!essential || ![database_ cache][iterator_].Keep());
return value;
@@ -2331,7 +2382,7 @@ static NSArray *Finishes_;
return issues;
}
-- (void) reloadData {
+- (void) reloadData { _pooled
_error->Discard();
delete list_;
@@ -2410,6 +2461,9 @@ static NSArray *Finishes_;
_trace();
[packages_ sortUsingSelector:@selector(compareByName:)];
_trace();
+
+ _config->Set("Acquire::http::Timeout", 15);
+ _config->Set("Acquire::http::MaxParallel", 4);
}
- (void) configure {
@@ -2970,8 +3024,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
SHA1SumValue springlist_;
SHA1SumValue notifyconf_;
SHA1SumValue sandplate_;
- size_t received_;
- NSTimeInterval last_;
}
- (void) transitionViewDidComplete:(UITransitionView*)view fromView:(UIView*)from toView:(UIView*)to;
@@ -3281,9 +3333,6 @@ 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_];
@@ -3377,7 +3426,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) startProgress {
- last_ = [NSDate timeIntervalSinceReferenceDate];
}
- (void) addProgressOutput:(NSString *)output {
@@ -3389,15 +3437,6 @@ 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;
}
@@ -4463,9 +4502,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
trivial_gz_ == nil
) {
[delegate_ setStatusBarShowsProgress:NO];
+ [delegate_ removeProgressHUD:hud_];
- [hud_ show:NO];
- [hud_ removeFromSuperview];
[hud_ autorelease];
hud_ = nil;
@@ -4563,7 +4601,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
trivial_ = false;
- hud_ = [delegate_ addProgressHUD];
+ hud_ = [[delegate_ addProgressHUD] retain];
[hud_ setText:@"Verifying URL"];
} break;
@@ -4862,8 +4900,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
UIProgressBar *progress_;
UINavigationButton *cancel_;
bool updating_;
- size_t received_;
- NSTimeInterval last_;
}
- (id) initWithFrame:(CGRect)frame database:(Database *)database;
@@ -4913,8 +4949,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[prompt_ setText:@"Updating Database"];
[progress_ setProgress:0];
- received_ = 0;
- last_ = [NSDate timeIntervalSinceReferenceDate];
updating_ = true;
[overlay_ addSubview:cancel_];
@@ -5078,12 +5112,6 @@ 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_;
}
@@ -6193,12 +6221,15 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (void) _reloadData {
- /*UIProgressHUD *hud = [[UIProgressHUD alloc] initWithWindow:window_];
+ UIView *block();
+
+ UIProgressHUD *hud([self addProgressHUD]);
[hud setText:@"Reloading Data"];
- [overlay_ addSubview:hud];
- [hud show:YES];*/
- [database_ reloadData];
+ [database_ yieldToSelector:@selector(reloadData) withObject:nil];
+ _trace();
+
+ [self removeProgressHUD:hud];
size_t changes(0);
@@ -6246,9 +6277,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
[book_ update];
}
-
- /*[hud show:NO];
- [hud removeFromSuperview];*/
}
- (void) _saveConfig {
@@ -6476,9 +6504,8 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
- (void) finish {
if (hud_ != nil) {
[self setStatusBarShowsProgress:NO];
+ [self removeProgressHUD:hud_];
- [hud_ show:NO];
- [hud_ removeFromSuperview];
[hud_ autorelease];
hud_ = nil;
@@ -6724,12 +6751,19 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
}
- (UIProgressHUD *) addProgressHUD {
- UIProgressHUD *hud = [[UIProgressHUD alloc] initWithWindow:window_];
+ UIProgressHUD *hud([[[UIProgressHUD alloc] initWithWindow:window_] autorelease]);
+ [window_ setUserInteractionEnabled:NO];
[hud show:YES];
- [underlay_ addSubview:hud];
+ [progress_ addSubview:hud];
return hud;
}
+- (void) removeProgressHUD:(UIProgressHUD *)hud {
+ [hud show:NO];
+ [hud removeFromSuperview];
+ [window_ setUserInteractionEnabled:YES];
+}
+
- (void) openMailToURL:(NSURL *)url {
// XXX: this makes me sad
#if 0
@@ -6867,7 +6901,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
) {
[self setIdleTimerDisabled:YES];
- hud_ = [self addProgressHUD];
+ hud_ = [[self addProgressHUD] retain];
[hud_ setText:@"Reorganizing\n\nWill Automatically\nClose When Done"];
[self setStatusBarShowsProgress:YES];
diff --git a/control b/control
index 81f29b7..e036c0e 100644
--- a/control
+++ b/control
@@ -4,7 +4,7 @@ Priority: required
Section: Packaging
Maintainer: Jay Freeman (saurik) <saurik@saurik.com>
Architecture: iphoneos-arm
-Version: 1.0.2684-39
+Version: 1.0.2698-41
Replaces: com.sosiphone.addcydia
Depends: apt, darwintools, pcre, shell-cmds
Conflicts: com.sosiphone.addcydia