]> git.saurik.com Git - cydia.git/commitdiff
Merge commit :(. Bring in my work on URLs and UITabBarController into one functioning...
authorGrant Paul <chpwn@chpwn.com>
Sun, 23 Jan 2011 00:10:09 +0000 (16:10 -0800)
committerGrant Paul <chpwn@chpwn.com>
Sun, 23 Jan 2011 00:10:09 +0000 (16:10 -0800)
 - Queueing badges and controllers work.
 - As far as I can tell, no broken URLs on Cydia pages.
   - There might still be one the website, but that's not under my control.
 - Lazy loads tabs again, but also doesn't reload the home page when switching back to it (yay!).
 - Adds "Show Pacakge Settings" duplicated text as a section header on the PackageSettingsController, for asthetic reasons.
 - Popups are *still* broken, and I still don't know why.

MobileCydia.app/manage.html
MobileCydia.app/package.js
MobileCydia.mm
UICaboodle/BrowserView.mm

index e240b5493d859b05a2b8010dea7ccbadff9cf789..55e7462ddb2b9bf2825fb7c00ea54030209dcea7 100644 (file)
@@ -71,7 +71,7 @@
 <div class="dialog">
     <div class="panel">
 
-<a href="cydia://sections/all" class="giant-button">
+<a href="cydia://installed" class="giant-button">
     <img src="packages.png"/>
     <div class="contents">
         <label localize="PACKAGES"></label>
index 2eaeb4a685a4ec4ecec19353f23cf74d618b9dce..0e2566bd0e8faf9b81a1df4a69015bec451d2257 100644 (file)
@@ -224,7 +224,7 @@ $(function () {
         $(".installed").addClass("deleted");
     else {
         $("#installed").html($.xml(installed));
-        $("#files-href").href("cydia://files/" + idc);
+        $("#files-href").href("cydia://package/" + idc + "/files");
     }
 
     space("#id", $.xml(id), 220);
index 2b644405b9e43b1fa576489c67d9b9c05ad46b2c..1b0e37d8173e75f90b474e0e30b3d0c7ebf9e551 100644 (file)
@@ -1179,12 +1179,12 @@ bool isSectionVisible(NSString *section) {
 - (void) setConfigurationData:(NSString *)data;
 @end
 
-@class PackageController;
+@class CYPackageController;
 
 @protocol CydiaDelegate
 - (void) retainNetworkActivityIndicator;
 - (void) releaseNetworkActivityIndicator;
-- (void) setPackageController:(PackageController *)view;
+- (void) setPackageController:(CYPackageController *)view;
 - (void) clearPackage:(Package *)package;
 - (void) installPackage:(Package *)package;
 - (void) installPackages:(NSArray *)packages;
@@ -1199,7 +1199,6 @@ bool isSectionVisible(NSString *section) {
 - (UIProgressHUD *) addProgressHUD;
 - (void) removeProgressHUD:(UIProgressHUD *)hud;
 - (CYViewController *) pageForPackage:(NSString *)name;
-- (PackageController *) packageController;
 - (void) showActionSheet:(UIActionSheet *)sheet fromItem:(UIBarButtonItem *)item;
 @end
 
@@ -5379,7 +5378,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 @end
 /* }}} */
 /* Package Controller {{{ */
-@interface PackageController : CYBrowserController <
+@interface CYPackageController : CYBrowserController <
     UIActionSheetDelegate
 > {
     _transient Database *database_;
@@ -5395,7 +5394,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @end
 
-@implementation PackageController
+@implementation CYPackageController
 
 - (void) dealloc {
     if (package_ != nil)
@@ -5914,7 +5913,7 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 }
 
 - (void) didSelectPackage:(Package *)package {
-    PackageController *view([delegate_ packageController]);
+    CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
     [view setPackage:package];
     [view setDelegate:delegate_];
     [[self navigationController] pushViewController:view animated:YES];
@@ -6578,13 +6577,52 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
     [packages_ setDelegate:delegate];
 }
 
+@end
+/* }}} */
+/* Section Controller {{{ */
+@interface CYSectionController : FilteredPackageController {
+}
+
+- (id) initWithDatabase:(Database *)database section:(NSString *)section;
+
+@end
+
+@implementation CYSectionController
+
+- (void) dealloc {
+    [super dealloc];
+}
+
+- (id) initWithDatabase:(Database *)database section:(NSString *)name {
+    NSString *title;
+
+    if (name == nil) {
+        title = UCLocalize("ALL_PACKAGES");
+    } else if (![name isEqual:@""]) {
+        title = [[NSBundle mainBundle] localizedStringForKey:Simplify(name) value:nil table:@"Sections"];
+    } else {
+        title = UCLocalize("NO_SECTION");
+    }
+
+    if ((self = [super initWithDatabase:database title:title filter:@selector(isVisibleInSection:) with:name]) != nil) {
+    } return self;
+}
+
+- (void) reloadData {
+    [packages_ reloadData];
+}
+
+- (void) setDelegate:(id)delegate {
+    [super setDelegate:delegate];
+    [packages_ setDelegate:delegate];
+}
+
 @end
 /* }}} */
 
 /* Home Controller {{{ */
 @interface HomeController : CYBrowserController {
 }
-
 @end
 
 @implementation HomeController
@@ -6858,9 +6896,6 @@ bool DepSubstrate(const pkgCache::VerIterator &iterator) {
 
 @implementation CYTabBarController
 
-/* XXX: some logic should probably go here related to
-freeing the view controllers on tab change */
-
 - (void) reloadData {
     size_t count([[self viewControllers] count]);
     for (size_t i(0); i != count; ++i) {
@@ -7391,8 +7426,6 @@ freeing the view controllers on tab change */
     [[self navigationController] pushViewController:controller animated:YES];
 }
 
-- (NSString *) title { return UCLocalize("SECTIONS"); }
-
 - (id) initWithDatabase:(Database *)database {
     if ((self = [super init]) != nil) {
         database_ = database;
@@ -7581,7 +7614,7 @@ freeing the view controllers on tab change */
 
 - (NSIndexPath *) tableView:(UITableView *)table willSelectRowAtIndexPath:(NSIndexPath *)path {
     Package *package([self packageAtIndexPath:path]);
-    PackageController *view([delegate_ packageController]);
+    CYPackageController *view([[[CYPackageController alloc] initWithDatabase:database_] autorelease]);
     [view setDelegate:delegate_];
     [view setPackage:package];
     [[self navigationController] pushViewController:view animated:YES];
@@ -7757,6 +7790,10 @@ freeing the view controllers on tab change */
     [super dealloc];
 }
 
+- (void) setSearchTerm:(NSString *)searchTerm {
+    [search_ setText:searchTerm];
+}
+
 - (void) searchBarSearchButtonClicked:(UISearchBar *)searchBar {
     [packages_ setObject:[search_ text] forFilter:@selector(isUnfilteredAndSearchedForBy:)];
     [search_ resignFirstResponder];
@@ -7768,12 +7805,6 @@ freeing the view controllers on tab change */
     [self reloadData];
 }
 
-- (void) setSearchTerm:(NSString *)term {
-    [search_ setText:term];
-}
-
-- (NSString *) title { return nil; }
-
 - (id) initWithDatabase:(Database *)database {
     return [super initWithDatabase:database title:UCLocalize("SEARCH") filter:@selector(isUnfilteredAndSearchedForBy:) with:nil];
 }
@@ -7864,6 +7895,10 @@ freeing the view controllers on tab change */
     return 2;
 }
 
+- (NSString *) tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
+    return UCLocalize("CHANGE_PACKAGE_SETTINGS");
+}
+
 - (NSString *) tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section {
     return UCLocalize("SHOW_ALL_CHANGES_EX");
 }
@@ -7914,6 +7949,8 @@ freeing the view controllers on tab change */
         ignoredSwitch_ = [[UISwitch alloc] initWithFrame:CGRectMake(0, 0, 50, 20)];
         [ignoredSwitch_ setAutoresizingMask:UIViewAutoresizingFlexibleLeftMargin];
         [ignoredSwitch_ addTarget:self action:@selector(onIgnored:) forEvents:UIControlEventValueChanged];
+        // Disable this switch, since it only reflects (not modifies) the ignored state.
+        [ignoredSwitch_ setUserInteractionEnabled:NO];
 
         subscribedCell_ = [[UITableViewCell alloc] init];
         [subscribedCell_ setText:UCLocalize("SHOW_ALL_CHANGES")];
@@ -8326,12 +8363,11 @@ freeing the view controllers on tab change */
 - (void) _updateData {
     [self _saveConfig];
 
-    for (CYNavigationController *controller in [tabbar_ viewControllers])
-        [controller reloadData];
+    [tabbar_ reloadData];
 
     CYNavigationController *navigation = [self queueNavigationController];
-    id queuedelegate = nil;
 
+    id queuedelegate = nil;
     if ([[navigation viewControllers] count] > 0)
         queuedelegate = [[navigation viewControllers] objectAtIndex:0];
 
@@ -8656,20 +8692,12 @@ freeing the view controllers on tab change */
         [self setNetworkActivityIndicatorVisible:NO];
 }
 
-- (void) setPackageController:(PackageController *)view {
+- (void) setPackageController:(CYPackageController *)view {
     WebThreadLock();
     [view setPackage:nil];
     WebThreadUnlock();
 }
 
-- (PackageController *) _packageController {
-    return [[[PackageController alloc] initWithDatabase:database_] autorelease];
-}
-
-- (PackageController *) packageController {
-    return [self _packageController];
-}
-
 - (void) cancelAndClear:(bool)clear {
     @synchronized (self) {
         if (clear) {
@@ -8791,15 +8819,15 @@ freeing the view controllers on tab change */
 
 - (CYViewController *) pageForPackage:(NSString *)name {
     if (Package *package = [database_ packageWithName:name]) {
-        PackageController *view([self packageController]);
+        CYPackageController *view = [[[CYPackageController alloc] initWithDatabase:database_] autorelease];
         [view setPackage:package];
         return view;
     } else {
         NSURL *url([NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"unknown" ofType:@"html"]]);
         url = [NSURL URLWithString:[[url absoluteString] stringByAppendingString:[NSString stringWithFormat:@"?%@", name]]];
-        CYBrowserController *controller = [[[CYBrowserController alloc] init] autorelease];
-        [controller loadURL:url];
-        return controller;
+        CYBrowserController *browser = [[[CYBrowserController alloc] init] autorelease];
+        [browser loadURL:url];
+        return browser;
     }
 }
 
@@ -8918,12 +8946,12 @@ freeing the view controllers on tab change */
 }
 
 - (BOOL) openCydiaURL:(NSURL *)url {
-    CYViewController *page = nil;
+    CYViewController *page([self pageForURL:url]);
 
-    if ((page = [self pageForURL:url]))
+    if (page != nil)
         [self setPage:page];
 
-    return !!page;
+    return page != nil;
 }
 
 - (void) applicationOpenURL:(NSURL *)url {
@@ -8993,17 +9021,15 @@ freeing the view controllers on tab change */
     }
 
     NSMutableArray *controllers([NSMutableArray array]);
-
     for (UITabBarItem *item in items) {
         CYNavigationController *controller([[[CYNavigationController alloc] initWithDatabase:database_] autorelease]);
         [controller setTabBarItem:item];
         [controllers addObject:controller];
     }
-
     [tabbar_ setViewControllers:controllers];
+
     [tabbar_ setUpdateDelegate:self];
     [window_ addSubview:[tabbar_ view]];
-
 }
 
 - (void)showEmulatedLoadingControllerInView:(UIView *)view {
index 2a885376b116d5a33d1cd3e3d06092ad14e3d78b..2abc02ecc607b3c968bbf2c656260fb490b10b70 100644 (file)
@@ -653,13 +653,11 @@ static void $UIWebViewWebViewDelegate$webViewClose$(UIWebViewWebViewDelegate *se
 
         [[self navigationController] pushViewController:page animated:YES];
     } else {
-        UCNavigationController *navigation([[[UCNavigationController alloc] init] autorelease]);
+        UCNavigationController *navigation([[[UCNavigationController alloc] initWithRootViewController:page] autorelease]);
 
         [navigation setHook:indirect_];
         [navigation setDelegate:delegate_];
 
-        [navigation setViewControllers:[NSArray arrayWithObject:page]];
-
         [[page navigationItem] setLeftBarButtonItem:[[[UIBarButtonItem alloc]
             initWithTitle:UCLocalize("CLOSE")
             style:UIBarButtonItemStylePlain