aboutsummaryrefslogtreecommitdiffstats
path: root/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m
diff options
context:
space:
mode:
authorStruan Donald <struan@exo.org.uk>2012-06-15 12:23:54 +0100
committerStruan Donald <struan@exo.org.uk>2012-06-15 12:23:54 +0100
commitcc1aa4a6676db38eabed168327941c6aa93b4654 (patch)
treea7848a02a53b88e89450de4fd187e7939fb61e80 /phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m
parent3a25a77b31e955ae6db9f7bd22120ef421aa5d92 (diff)
parentd0c522739862671cc0ffa5cc1611d3772fe732bd (diff)
Merge branch 'phonegap'
Diffstat (limited to 'phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m')
-rw-r--r--phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m140
1 files changed, 140 insertions, 0 deletions
diff --git a/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m b/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m
new file mode 100644
index 000000000..ad518dc80
--- /dev/null
+++ b/phonegap/iPhone/FixMyStreet/Classes/AppDelegate.m
@@ -0,0 +1,140 @@
+/*
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
+
+//
+// AppDelegate.m
+// cordova1.8.0
+//
+// Created by Struan Donald on 08/06/2012.
+// Copyright __MyCompanyName__ 2012. All rights reserved.
+//
+
+#import "AppDelegate.h"
+#import "MainViewController.h"
+
+#ifdef CORDOVA_FRAMEWORK
+ #import <Cordova/CDVPlugin.h>
+ #import <Cordova/CDVURLProtocol.h>
+#else
+ #import "CDVPlugin.h"
+ #import "CDVURLProtocol.h"
+#endif
+
+
+@implementation AppDelegate
+
+@synthesize window, viewController;
+
+- (id) init
+{
+ /** If you need to do any extra app-specific initialization, you can do it here
+ * -jm
+ **/
+ NSHTTPCookieStorage *cookieStorage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
+ [cookieStorage setCookieAcceptPolicy:NSHTTPCookieAcceptPolicyAlways];
+
+ [CDVURLProtocol registerURLProtocol];
+
+ return [super init];
+}
+
+#pragma UIApplicationDelegate implementation
+
+/**
+ * This is main kick off after the app inits, the views and Settings are setup here. (preferred - iOS4 and up)
+ */
+- (BOOL) application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
+{
+ NSURL* url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
+ NSString* invokeString = nil;
+
+ if (url && [url isKindOfClass:[NSURL class]]) {
+ invokeString = [url absoluteString];
+ NSLog(@"cordova1.8.0 launchOptions = %@", url);
+ }
+
+ CGRect screenBounds = [[UIScreen mainScreen] bounds];
+ self.window = [[[UIWindow alloc] initWithFrame:screenBounds] autorelease];
+ self.window.autoresizesSubviews = YES;
+
+ CGRect viewBounds = [[UIScreen mainScreen] applicationFrame];
+
+ self.viewController = [[[MainViewController alloc] init] autorelease];
+ self.viewController.useSplashScreen = YES;
+ self.viewController.wwwFolderName = @"www";
+ self.viewController.startPage = @"index.html";
+ self.viewController.invokeString = invokeString;
+ self.viewController.view.frame = viewBounds;
+
+ // check whether the current orientation is supported: if it is, keep it, rather than forcing a rotation
+ BOOL forceStartupRotation = YES;
+ UIDeviceOrientation curDevOrientation = [[UIDevice currentDevice] orientation];
+
+ if (UIDeviceOrientationUnknown == curDevOrientation) {
+ // UIDevice isn't firing orientation notifications yet… go look at the status bar
+ curDevOrientation = (UIDeviceOrientation)[[UIApplication sharedApplication] statusBarOrientation];
+ }
+
+ if (UIDeviceOrientationIsValidInterfaceOrientation(curDevOrientation)) {
+ for (NSNumber *orient in self.viewController.supportedOrientations) {
+ if ([orient intValue] == curDevOrientation) {
+ forceStartupRotation = NO;
+ break;
+ }
+ }
+ }
+
+ if (forceStartupRotation) {
+ NSLog(@"supportedOrientations: %@", self.viewController.supportedOrientations);
+ // The first item in the supportedOrientations array is the start orientation (guaranteed to be at least Portrait)
+ UIInterfaceOrientation newOrient = [[self.viewController.supportedOrientations objectAtIndex:0] intValue];
+ NSLog(@"AppDelegate forcing status bar to: %d from: %d", newOrient, curDevOrientation);
+ [[UIApplication sharedApplication] setStatusBarOrientation:newOrient];
+ }
+
+ [self.window addSubview:self.viewController.view];
+ [self.window makeKeyAndVisible];
+
+ return YES;
+}
+
+// this happens while we are running ( in the background, or from within our own app )
+// only valid if cordova1.8.0-Info.plist specifies a protocol to handle
+- (BOOL) application:(UIApplication*)application handleOpenURL:(NSURL*)url
+{
+ if (!url) {
+ return NO;
+ }
+
+ // calls into javascript global function 'handleOpenURL'
+ NSString* jsString = [NSString stringWithFormat:@"handleOpenURL(\"%@\");", url];
+ [self.viewController.webView stringByEvaluatingJavaScriptFromString:jsString];
+
+ // all plugins will get the notification, and their handlers will be called
+ [[NSNotificationCenter defaultCenter] postNotification:[NSNotification notificationWithName:CDVPluginHandleOpenURLNotification object:url]];
+
+ return YES;
+}
+
+- (void) dealloc
+{
+ [super dealloc];
+}
+
+@end