]> git.saurik.com Git - cydia.git/commitdiff
Move some of our clearly shared code into CyteKit.
authorJay Freeman (saurik) <saurik@saurik.com>
Wed, 15 Feb 2017 18:29:44 +0000 (10:29 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Wed, 15 Feb 2017 18:29:44 +0000 (10:29 -0800)
CyteKit/Application.h [new file with mode: 0644]
CyteKit/Application.mm [new file with mode: 0644]
CyteKit/NavigationController.h [new file with mode: 0644]
CyteKit/NavigationController.mm [new file with mode: 0644]
CyteKit/TabBarController.h
CyteKit/TabBarController.mm
CyteKit/ViewController.h
CyteKit/ViewController.mm
MobileCydia.mm

diff --git a/CyteKit/Application.h b/CyteKit/Application.h
new file mode 100644 (file)
index 0000000..d95ad1c
--- /dev/null
@@ -0,0 +1,33 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2015  Jay Freeman (saurik)
+*/
+
+/* GNU General Public License, Version 3 {{{ */
+/*
+ * Cydia is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Cydia is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cydia.  If not, see <http://www.gnu.org/licenses/>.
+**/
+/* }}} */
+
+#ifndef CyteKit_Application_H
+#define CyteKit_Application_H
+
+#include <UIKit/UIKit.h>
+
+@interface CyteApplication : UIApplication
+
+- (void) applicationDidFinishLaunching:(id)unused;
+
+@end
+
+#endif//CyteKit_Application_H
diff --git a/CyteKit/Application.mm b/CyteKit/Application.mm
new file mode 100644 (file)
index 0000000..d1d6142
--- /dev/null
@@ -0,0 +1,60 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2015  Jay Freeman (saurik)
+*/
+
+/* GNU General Public License, Version 3 {{{ */
+/*
+ * Cydia is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Cydia is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cydia.  If not, see <http://www.gnu.org/licenses/>.
+**/
+/* }}} */
+
+#include "CyteKit/UCPlatform.h"
+
+#include <Foundation/Foundation.h>
+#include <UIKit/UIKit.h>
+
+#include "iPhonePrivate.h"
+#include <Menes/ObjectHandle.h>
+
+@implementation CyteApplication : UIApplication {
+}
+
+- (void) _sendMemoryWarningNotification {
+    if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_3_0) // XXX: maybe 4_0?
+        [[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationMemoryWarningNotification" object:[UIApplication sharedApplication]];
+    else
+        [[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationDidReceiveMemoryWarningNotification" object:[UIApplication sharedApplication]];
+}
+
+- (void) _sendMemoryWarningNotifications {
+    while (true) {
+        [self performSelectorOnMainThread:@selector(_sendMemoryWarningNotification) withObject:nil waitUntilDone:NO];
+        sleep(2);
+        //usleep(2000000);
+    }
+}
+
+- (void) applicationDidReceiveMemoryWarning:(UIApplication *)application {
+    NSLog(@"--");
+    [[NSURLCache sharedURLCache] removeAllCachedResponses];
+}
+
+- (void) applicationDidFinishLaunching:(id)unused {
+    //[NSThread detachNewThreadSelector:@selector(_sendMemoryWarningNotifications) toTarget:self withObject:nil];
+
+    if ([self respondsToSelector:@selector(setApplicationSupportsShakeToEdit:)])
+        [self setApplicationSupportsShakeToEdit:NO];
+}
+
+@end
diff --git a/CyteKit/NavigationController.h b/CyteKit/NavigationController.h
new file mode 100644 (file)
index 0000000..b295858
--- /dev/null
@@ -0,0 +1,34 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2015  Jay Freeman (saurik)
+*/
+
+/* GNU General Public License, Version 3 {{{ */
+/*
+ * Cydia is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Cydia is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cydia.  If not, see <http://www.gnu.org/licenses/>.
+**/
+/* }}} */
+
+#ifndef CyteKit_NavigationController_H
+#define CyteKit_NavigationController_H
+
+#include <UIKit/UIKit.h>
+
+@interface UINavigationController (Cydia)
+
+- (NSArray *) navigationURLCollection;
+- (void) unloadData;
+
+@end
+
+#endif//CyteKit_NavigationController_H
diff --git a/CyteKit/NavigationController.mm b/CyteKit/NavigationController.mm
new file mode 100644 (file)
index 0000000..f53ad85
--- /dev/null
@@ -0,0 +1,71 @@
+/* Cydia - iPhone UIKit Front-End for Debian APT
+ * Copyright (C) 2008-2015  Jay Freeman (saurik)
+*/
+
+/* GNU General Public License, Version 3 {{{ */
+/*
+ * Cydia is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Cydia is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with Cydia.  If not, see <http://www.gnu.org/licenses/>.
+**/
+/* }}} */
+
+#include "CyteKit/UCPlatform.h"
+
+#include <Foundation/Foundation.h>
+#include <UIKit/UIKit.h>
+
+#include "CyteKit/NavigationController.h"
+#include "CyteKit/ViewController.h"
+
+#include "iPhonePrivate.h"
+#include <Menes/ObjectHandle.h>
+
+@implementation UINavigationController (Cydia)
+
+- (NSArray *) navigationURLCollection {
+    NSMutableArray *stack([NSMutableArray array]);
+
+    for (CyteViewController *controller in [self viewControllers]) {
+        NSString *url = [[controller navigationURL] absoluteString];
+        if (url != nil)
+            [stack addObject:url];
+    }
+
+    return stack;
+}
+
+- (void) reloadData {
+    [super reloadData];
+
+    UIViewController *visible([self visibleViewController]);
+    if (visible != nil)
+        [visible reloadData];
+
+    // on the iPad, this view controller is ALSO visible. :(
+    extern bool IsWildcat_;
+    if (IsWildcat_)
+        if (UIViewController *modal = [self modalViewController])
+            if ([modal modalPresentationStyle] == UIModalPresentationFormSheet)
+                if (UIViewController *top = [self topViewController])
+                    if (top != visible)
+                        [top reloadData];
+}
+
+- (void) unloadData {
+    for (CyteViewController *page in [self viewControllers])
+        [page unloadData];
+
+    [super unloadData];
+}
+
+@end
index 7aee76748fddf15f570f131bb11cdeab7125a71a..2aa403c4230721f7126c5e586f2cf2f13878e4a0 100644 (file)
@@ -31,6 +31,7 @@
 
 @interface CyteTabBarController : UITabBarController
 
+- (NSArray *) navigationURLCollection;
 - (UIViewController *) unselectedViewController;
 - (void) setUnselectedViewController:(UIViewController *)transient;
 
index 7a4ead30b30fa1c41b124bbc1e9b5c2320a22f99..35a2bd0f6717dd8893e9fa94d3faecd19f48c227 100644 (file)
     _H<UIViewController> remembered_;
 }
 
+- (NSArray *) navigationURLCollection {
+    NSMutableArray *items([NSMutableArray array]);
+
+    // XXX: Should this deal with transient view controllers?
+    for (id navigation in [self viewControllers]) {
+        NSArray *stack = [navigation performSelector:@selector(navigationURLCollection)];
+        if (stack != nil)
+            [items addObject:stack];
+    }
+
+    return items;
+}
+
 - (void) didReceiveMemoryWarning {
     [super didReceiveMemoryWarning];
 
index 3b637f05505844070630b434717c6cc49dfab94b..156f3cbf27b8b245d22924af0dd127497c4bd2fd 100644 (file)
 #include <UIKit/UIKit.h>
 
 @interface UIViewController (Cydia)
-- (BOOL) hasLoaded;
-- (void) reloadData;
-- (void) unloadData;
-- (UIViewController *) parentOrPresentingViewController;
-@end
 
-@interface CyteViewController : UIViewController
+// Override this in subclasses if you manage the "has seen first load" state yourself.
+- (BOOL) hasLoaded;
 
 // The default implementation of this method is essentially a no-op,
 // but calling the superclass implementation is *required*.
 
 - (void) unloadData;
 
+- (UIViewController *) parentOrPresentingViewController;
+
 // This URL is used to save the state of the view controller. Return
 // nil if you cannot or should not save the URL for this page.
 - (NSURL *) navigationURL;
 
+@end
+
+@interface CyteViewController : UIViewController
+
 // By default, this delegate is unused. However, it's provided here in case
 // you need some kind of delegate in a subclass.
 - (void) setDelegate:(id)delegate;
 - (id) delegate;
 
-// Override this in subclasses if you manage the "has seen first load" state yourself.
-- (BOOL) hasLoaded;
-
 // This is called when the view managed by the view controller is released.
 // That is not always when the controller itself is released: it also can
 // happen when more memory is needed by the system or whenever the controller
index 52c925d3df3166fc0709237733cf904e0eefd5f0..28c7c438ce0fd6b92f1e90ac2f29a9efbfe62daf 100644 (file)
     return nil;
 }
 
+- (NSURL *) navigationURL {
+    return nil;
+}
+
 @end
 
 @implementation CyteViewController {
     [super unloadData];
 }
 
-- (NSURL *) navigationURL {
-    return nil;
-}
-
 - (void) setPageColor:(UIColor *)color {
     if (color == nil)
         color = [UIColor groupTableViewBackgroundColor];
index 3ed9cbd78bb987d4994b80ece0c6d15d5b192a39..3dec86e2dee8bf9499698d36c398d32355c47cff 100644 (file)
@@ -112,6 +112,8 @@ extern "C" {
 #include "Substrate.hpp"
 #include "Menes/Menes.h"
 
+#include "CyteKit/Application.h"
+#include "CyteKit/NavigationController.h"
 #include "CyteKit/RegEx.hpp"
 #include "CyteKit/TableViewCell.h"
 #include "CyteKit/TabBarController.h"
@@ -7019,15 +7021,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
 @end
 /* }}} */
 
-/* Cydia Navigation Controller Interface {{{ */
-@interface UINavigationController (Cydia)
-
-- (NSArray *) navigationURLCollection;
-- (void) unloadData;
-
-@end
-/* }}} */
-
 /* Cydia Tab Bar Controller {{{ */
 @interface CydiaTabBarController : CyteTabBarController <
     UITabBarControllerDelegate,
@@ -7042,7 +7035,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
     _transient NSObject<CydiaDelegate> *updatedelegate_;
 }
 
-- (NSArray *) navigationURLCollection;
 - (void) beginUpdate;
 - (BOOL) updating;
 
@@ -7050,19 +7042,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
 
 @implementation CydiaTabBarController
 
-- (NSArray *) navigationURLCollection {
-    NSMutableArray *items([NSMutableArray array]);
-
-    // XXX: Should this deal with transient view controllers?
-    for (id navigation in [self viewControllers]) {
-        NSArray *stack = [navigation performSelector:@selector(navigationURLCollection)];
-        if (stack != nil)
-            [items addObject:stack];
-    }
-
-    return items;
-}
-
 - (id) initWithDatabase:(Database *)database {
     if ((self = [super init]) != nil) {
         database_ = database;
@@ -7161,47 +7140,6 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
 @end
 /* }}} */
 
-/* Cydia Navigation Controller Implementation {{{ */
-@implementation UINavigationController (Cydia)
-
-- (NSArray *) navigationURLCollection {
-    NSMutableArray *stack([NSMutableArray array]);
-
-    for (CyteViewController *controller in [self viewControllers]) {
-        NSString *url = [[controller navigationURL] absoluteString];
-        if (url != nil)
-            [stack addObject:url];
-    }
-
-    return stack;
-}
-
-- (void) reloadData {
-    [super reloadData];
-
-    UIViewController *visible([self visibleViewController]);
-    if (visible != nil)
-        [visible reloadData];
-
-    // on the iPad, this view controller is ALSO visible. :(
-    if (IsWildcat_)
-        if (UIViewController *modal = [self modalViewController])
-            if ([modal modalPresentationStyle] == UIModalPresentationFormSheet)
-                if (UIViewController *top = [self topViewController])
-                    if (top != visible)
-                        [top reloadData];
-}
-
-- (void) unloadData {
-    for (CyteViewController *page in [self viewControllers])
-        [page unloadData];
-
-    [super unloadData];
-}
-
-@end
-/* }}} */
-
 /* Cydia:// Protocol {{{ */
 @interface CydiaURLProtocol : NSURLProtocol {
 }
@@ -8999,7 +8937,7 @@ static void HomeControllerReachabilityCallback(SCNetworkReachabilityRef reachabi
 
 @end
 
-@interface Cydia : UIApplication <
+@interface Cydia : CyteApplication <
     ConfirmationControllerDelegate,
     DatabaseDelegate,
     CydiaDelegate
@@ -9898,32 +9836,9 @@ _end
     [tabbar_ setUpdateDelegate:self];
 }
 
-- (void) _sendMemoryWarningNotification {
-    if (kCFCoreFoundationVersionNumber < kCFCoreFoundationVersionNumber_iPhoneOS_3_0) // XXX: maybe 4_0?
-        [[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationMemoryWarningNotification" object:[UIApplication sharedApplication]];
-    else
-        [[NSNotificationCenter defaultCenter] postNotificationName:@"UIApplicationDidReceiveMemoryWarningNotification" object:[UIApplication sharedApplication]];
-}
-
-- (void) _sendMemoryWarningNotifications {
-    while (true) {
-        [self performSelectorOnMainThread:@selector(_sendMemoryWarningNotification) withObject:nil waitUntilDone:NO];
-        sleep(2);
-        //usleep(2000000);
-    }
-}
-
-- (void) applicationDidReceiveMemoryWarning:(UIApplication *)application {
-    NSLog(@"--");
-    [[NSURLCache sharedURLCache] removeAllCachedResponses];
-}
-
 - (void) applicationDidFinishLaunching:(id)unused {
-    //[NSThread detachNewThreadSelector:@selector(_sendMemoryWarningNotifications) toTarget:self withObject:nil];
-
+    [super applicationDidFinishLaunching:unused];
 _trace();
-    if ([self respondsToSelector:@selector(setApplicationSupportsShakeToEdit:)])
-        [self setApplicationSupportsShakeToEdit:NO];
 
     @synchronized (HostConfig_) {
         [BridgedHosts_ addObject:[[NSURL URLWithString:CydiaURL(@"")] host]];