]> git.saurik.com Git - cydia.git/blobdiff - MobileCydia.mm
Don't show role::cydia packages in Expert mode of the installed page.
[cydia.git] / MobileCydia.mm
index e98ac80745f9f42ff68bed5707daa75aa305dbcd..151cae371787e57c8cabd34f74f5001dca9c9579 100644 (file)
@@ -1185,6 +1185,7 @@ bool isSectionVisible(NSString *section) {
 - (void) syncData;
 - (void) showSettings;
 - (UIProgressHUD *) addProgressHUD;
+- (BOOL) hudIsShowing;
 - (void) removeProgressHUD:(UIProgressHUD *)hud;
 - (CYViewController *) pageForPackage:(NSString *)name;
 - (PackageController *) packageController;
@@ -1974,8 +1975,6 @@ struct PackageNameOrdering :
 - (void) dealloc {
     if (source_ != nil)
         [source_ release];
-    if (section$_ != nil)
-        [section$_ release];
 
     if (latest_ != nil)
         [latest_ release];
@@ -2251,7 +2250,7 @@ struct PackageNameOrdering :
         if (section_.empty())
             return nil;
 
-        std::replace(section_.data(), section_.data() + section_.size(), ' ', '_');
+        std::replace(section_.data(), section_.data() + section_.size(), '_', ' ');
         NSString *name(section_);
 
       lookup:
@@ -2261,7 +2260,7 @@ struct PackageNameOrdering :
                 goto lookup;
             }
 
-        section$_ = [[name stringByReplacingCharacter:'_' withCharacter:' '] retain];
+        section$_ = name;
     } return section$_;
 }
 
@@ -2825,7 +2824,7 @@ struct PackageNameOrdering :
 }
 
 - (bool) isInstalledAndVisible:(NSNumber *)number {
-    return (![number boolValue] || [self visible]) && ![self uninstalled];
+    return ((![number boolValue] && ![role_ isEqualToString:@"cydia"]) || [self visible]) && ![self uninstalled];
 }
 
 - (bool) isVisibleInSection:(NSString *)name {
@@ -7556,11 +7555,22 @@ freeing the view controllers on tab change */
     [self showDoneButton];
 }
 
-- (void) doneButtonClicked {
+- (void) saveAndClose {
     [self save];
+
+    [[self navigationItem] setRightBarButtonItem:nil];
     [[self navigationController] dismissModalViewControllerAnimated:YES];
 }
 
+- (void) doneButtonClicked {
+    UIActivityIndicatorView *spinner = [[[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20.0f, 20.0f)] autorelease];
+    [spinner startAnimating];
+    UIBarButtonItem *spinItem = [[[UIBarButtonItem alloc] initWithCustomView:spinner] autorelease];
+    [[self navigationItem] setRightBarButtonItem:spinItem];
+
+    [self performSelector:@selector(saveAndClose) withObject:nil afterDelay:0];
+}
+
 - (void) showDoneButton {
     UIBarButtonItem *rightItem = [[UIBarButtonItem alloc]
         initWithTitle:UCLocalize("DONE")
@@ -7680,7 +7690,7 @@ freeing the view controllers on tab change */
 
     bool dropped_;
     bool updating_;
-    id updatedelegate_;
+    NSObject<CydiaDelegate> *updatedelegate_;
     UITabBarController *root_;
 }
 
@@ -7723,7 +7733,7 @@ freeing the view controllers on tab change */
 }
 
 - (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)orientation {
-    return IsWildcat_ || orientation == UIInterfaceOrientationPortrait;
+    return ![updatedelegate_ hudIsShowing] && (IsWildcat_ || orientation == UIInterfaceOrientationPortrait);
 }
 
 - (void) setTabBarController:(UITabBarController *)controller {
@@ -7959,7 +7969,7 @@ typedef enum {
     int tag_;
 
     UIKeyboard *keyboard_;
-    UIProgressHUD *hud_;
+    int huds_;
 
     SectionsController *sections_;
     ChangesController *changes_;
@@ -8520,6 +8530,10 @@ static _finline void _setHomePage(Cydia *self) {
     [super applicationWillSuspend];
 }
 
+- (BOOL) hudIsShowing {
+    return (huds_ > 0);
+}
+
 - (void) applicationSuspend:(__GSEvent *)event {
     // Use external process status API internally.
     // This is probably a really bad idea.
@@ -8530,17 +8544,17 @@ static _finline void _setHomePage(Cydia *self) {
         notify_cancel(notify_token);
     }
 
-    if (hud_ == nil && status == 0)
+    if (![self hudIsShowing] && status == 0)
         [super applicationSuspend:event];
 }
 
 - (void) _animateSuspension:(BOOL)arg0 duration:(double)arg1 startTime:(double)arg2 scale:(float)arg3 {
-    if (hud_ == nil)
+    if (![self hudIsShowing])
         [super _animateSuspension:arg0 duration:arg1 startTime:arg2 scale:arg3];
 }
 
 - (void) _setSuspended:(BOOL)value {
-    if (hud_ == nil)
+    if (![self hudIsShowing])
         [super _setSuspended:value];
 }
 
@@ -8555,6 +8569,7 @@ static _finline void _setHomePage(Cydia *self) {
     while ([target modalViewController] != nil) target = [target modalViewController];
     [[target view] addSubview:hud];
 
+    huds_++;
     return hud;
 }
 
@@ -8562,6 +8577,7 @@ static _finline void _setHomePage(Cydia *self) {
     [hud show:NO];
     [hud removeFromSuperview];
     [window_ setUserInteractionEnabled:YES];
+    huds_--;
 }
 
 - (CYViewController *) pageForPackage:(NSString *)name {