Return-Path: X-Original-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-callback-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 47DDB9844 for ; Fri, 13 Jan 2012 15:59:51 +0000 (UTC) Received: (qmail 76247 invoked by uid 500); 13 Jan 2012 15:59:51 -0000 Delivered-To: apmail-incubator-callback-commits-archive@incubator.apache.org Received: (qmail 76233 invoked by uid 500); 13 Jan 2012 15:59:51 -0000 Mailing-List: contact callback-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: callback-dev@incubator.apache.org Delivered-To: mailing list callback-commits@incubator.apache.org Received: (qmail 76225 invoked by uid 99); 13 Jan 2012 15:59:51 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Jan 2012 15:59:51 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.114] (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Jan 2012 15:59:50 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id E9ADF557EC; Fri, 13 Jan 2012 15:59:06 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: becka11y@apache.org To: callback-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [12/50] git commit: added whitelist support, and more complete interface with readonly props Message-Id: <20120113155906.E9ADF557EC@tyr.zones.apache.org> Date: Fri, 13 Jan 2012 15:59:06 +0000 (UTC) added whitelist support, and more complete interface with readonly props Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/commit/b808ee9d Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/tree/b808ee9d Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/diff/b808ee9d Branch: refs/heads/master Commit: b808ee9d89306265a946f18bfdaae9a3d413148a Parents: e4e75dc Author: Jesse Authored: Thu Jan 5 17:02:14 2012 -0800 Committer: shazron Committed: Fri Jan 6 10:50:09 2012 -0800 ---------------------------------------------------------------------- PhoneGapLib/Classes/PGViewController.h | 5 +- PhoneGapLib/Classes/PGViewController.m | 69 +++++++++++++--- PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj | 28 ++++++ 3 files changed, 90 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b808ee9d/PhoneGapLib/Classes/PGViewController.h ---------------------------------------------------------------------- diff --git a/PhoneGapLib/Classes/PGViewController.h b/PhoneGapLib/Classes/PGViewController.h index c7cc1e3..5c41c35 100644 --- a/PhoneGapLib/Classes/PGViewController.h +++ b/PhoneGapLib/Classes/PGViewController.h @@ -10,7 +10,8 @@ #import "JSONKit.h" #import "InvokedUrlCommand.h" -@class PGWhitelist; + +#import "PGWhitelist.h" @interface PGViewController : UIViewController { @@ -26,6 +27,8 @@ @property (nonatomic, readonly, retain) NSDictionary *settings; @property (nonatomic, readonly, retain) PGWhitelist* whitelist; // readonly for public +@property (nonatomic, retain) NSArray* supportedOrientations; + + (NSDictionary*)getBundlePlist:(NSString *)plistName; + (NSString*) wwwFolderName; + (NSString*) pathForResource:(NSString*)resourcepath; http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b808ee9d/PhoneGapLib/Classes/PGViewController.m ---------------------------------------------------------------------- diff --git a/PhoneGapLib/Classes/PGViewController.m b/PhoneGapLib/Classes/PGViewController.m index a76d1da..48e51b1 100644 --- a/PhoneGapLib/Classes/PGViewController.m +++ b/PhoneGapLib/Classes/PGViewController.m @@ -16,25 +16,31 @@ @property (nonatomic, readwrite, retain) NSDictionary *settings; @property (nonatomic, readwrite, retain) PGWhitelist* whitelist; +@property (nonatomic, readwrite, retain) NSMutableDictionary *pluginObjects; +@property (nonatomic, readwrite, retain) NSDictionary *pluginsMap; @end @implementation PGViewController -@synthesize webView; +@synthesize webView, supportedOrientations; @synthesize pluginObjects, pluginsMap, whitelist; @synthesize activityView, imageView, settings; + + + // Implement viewDidLoad to do additional setup after loading the view, typically from a nib. - (void)viewDidLoad { [super viewDidLoad]; - + self.pluginObjects = [[[NSMutableDictionary alloc] initWithCapacity:4] autorelease]; + // read from UISupportedInterfaceOrientations (or UISupportedInterfaceOrientations~iPad, if its iPad) from -Info.plist - NSArray* supportedOrientations = [self parseInterfaceOrientations: + self.supportedOrientations = [self parseInterfaceOrientations: [[[NSBundle mainBundle] infoDictionary] objectForKey:@"UISupportedInterfaceOrientations"]]; // read from PhoneGap.plist in the app bundle @@ -57,8 +63,10 @@ // set the whitelist self.whitelist = [[[PGWhitelist alloc] initWithArray:[self.settings objectForKey:@"ExternalHosts"]] autorelease]; + - + self.pluginsMap = [pluginsDict dictionaryWithLowercaseKeys]; + NSString* path = [PGViewController pathForResource:@"index.html"]; NSURL *appURL = [NSURL fileURLWithPath:path];//[NSURL URLWithString:path]; //[NSURL fileURLWithPath:path]; @@ -104,6 +112,52 @@ return result; } +- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation +{ + // First ask the webview via JS if it wants to support the new orientation -jm + int i = 0; + + switch (interfaceOrientation){ + + case UIInterfaceOrientationPortraitUpsideDown: + i = 180; + break; + case UIInterfaceOrientationLandscapeLeft: + i = -90; + break; + case UIInterfaceOrientationLandscapeRight: + i = 90; + break; + default: + case UIInterfaceOrientationPortrait: + // noop + break; + } + + NSString* jsCall = [ NSString stringWithFormat:@"shouldRotateToOrientation(%d);",i]; + NSString* res = [webView stringByEvaluatingJavaScriptFromString:jsCall]; + + if([res length] > 0) + { + return [res boolValue]; + } + + // if js did not handle the new orientation ( no return value ) we will look it up in the plist -jm + + BOOL autoRotate = [self.supportedOrientations count] > 0; // autorotate if only more than 1 orientation supported + if (autoRotate) + { + if ([self.supportedOrientations containsObject: + [NSNumber numberWithInt:interfaceOrientation]]) { + return YES; + } + } + + // default return value is NO! -jm + + return NO; +} + -(void)createGapView { @@ -140,13 +194,6 @@ } - -// Override to allow orientations other than the default portrait orientation. -- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - // Return YES for supported orientations. - return (interfaceOrientation == UIInterfaceOrientationPortrait); -} - #pragma mark UIWebViewDelegate /** http://git-wip-us.apache.org/repos/asf/incubator-cordova-ios/blob/b808ee9d/PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj ---------------------------------------------------------------------- diff --git a/PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj b/PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj index 36d2def..8d5e01d 100644 --- a/PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj +++ b/PhoneGapLib/PhoneGapLib.xcodeproj/project.pbxproj @@ -124,6 +124,16 @@ 68A32D7D141030E4006B237C /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AE141002F100DF4CF2 /* CoreGraphics.framework */; }; 68A32D7E141030EB006B237C /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AA141002F100DF4CF2 /* UIKit.framework */; }; 68A32D7F141030F3006B237C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 686357AC141002F100DF4CF2 /* Foundation.framework */; }; + 8852C43A14B65FD800F0E735 /* PGViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8852C43614B65FD800F0E735 /* PGViewController.h */; }; + 8852C43B14B65FD800F0E735 /* PGViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = 8852C43614B65FD800F0E735 /* PGViewController.h */; }; + 8852C43C14B65FD800F0E735 /* PGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43714B65FD800F0E735 /* PGViewController.m */; }; + 8852C43D14B65FD800F0E735 /* PGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43714B65FD800F0E735 /* PGViewController.m */; }; + 8852C43E14B65FD800F0E735 /* PGViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43714B65FD800F0E735 /* PGViewController.m */; }; + 8852C43F14B65FD800F0E735 /* UIGapView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8852C43814B65FD800F0E735 /* UIGapView.h */; }; + 8852C44014B65FD800F0E735 /* UIGapView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8852C43814B65FD800F0E735 /* UIGapView.h */; }; + 8852C44114B65FD800F0E735 /* UIGapView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43914B65FD800F0E735 /* UIGapView.m */; }; + 8852C44214B65FD800F0E735 /* UIGapView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43914B65FD800F0E735 /* UIGapView.m */; }; + 8852C44314B65FD800F0E735 /* UIGapView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8852C43914B65FD800F0E735 /* UIGapView.m */; }; 8887FD661090FBE7009987E8 /* Camera.h in Headers */ = {isa = PBXBuildFile; fileRef = 8887FD261090FBE7009987E8 /* Camera.h */; }; 8887FD671090FBE7009987E8 /* Camera.m in Sources */ = {isa = PBXBuildFile; fileRef = 8887FD271090FBE7009987E8 /* Camera.m */; }; 8887FD681090FBE7009987E8 /* Categories.h in Headers */ = {isa = PBXBuildFile; fileRef = 8887FD281090FBE7009987E8 /* Categories.h */; }; @@ -218,6 +228,10 @@ 686357DC14100B1600DF4CF2 /* CoreMedia.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMedia.framework; path = System/Library/Frameworks/CoreMedia.framework; sourceTree = SDKROOT; }; 68A32D7114102E1C006B237C /* libPhoneGap.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libPhoneGap.a; sourceTree = BUILT_PRODUCTS_DIR; }; 68A32D7414103017006B237C /* AddressBook.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AddressBook.framework; path = System/Library/Frameworks/AddressBook.framework; sourceTree = SDKROOT; }; + 8852C43614B65FD800F0E735 /* PGViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = PGViewController.h; path = Classes/PGViewController.h; sourceTree = ""; }; + 8852C43714B65FD800F0E735 /* PGViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = PGViewController.m; path = Classes/PGViewController.m; sourceTree = ""; }; + 8852C43814B65FD800F0E735 /* UIGapView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = UIGapView.h; path = Classes/UIGapView.h; sourceTree = ""; }; + 8852C43914B65FD800F0E735 /* UIGapView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = UIGapView.m; path = Classes/UIGapView.m; sourceTree = ""; }; 8887FD261090FBE7009987E8 /* Camera.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Camera.h; path = Classes/Camera.h; sourceTree = ""; }; 8887FD271090FBE7009987E8 /* Camera.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = Camera.m; path = Classes/Camera.m; sourceTree = ""; }; 8887FD281090FBE7009987E8 /* Categories.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Categories.h; path = Classes/Categories.h; sourceTree = ""; }; @@ -436,6 +450,10 @@ 8887FD101090FB43009987E8 /* Classes */ = { isa = PBXGroup; children = ( + 8852C43614B65FD800F0E735 /* PGViewController.h */, + 8852C43714B65FD800F0E735 /* PGViewController.m */, + 8852C43814B65FD800F0E735 /* UIGapView.h */, + 8852C43914B65FD800F0E735 /* UIGapView.m */, 888700D710922F56009987E8 /* Commands */, 8887FD361090FBE7009987E8 /* JSON */, 888700D910923009009987E8 /* Util */, @@ -493,6 +511,8 @@ 30C684811406CB38004C1A8E /* PGWhitelist.h in Headers */, 30B39EC013D0268B0009682A /* PGSplashScreen.h in Headers */, 30E563D113E217EC00C949AA /* NSMutableArray+QueueAdditions.h in Headers */, + 8852C43B14B65FD800F0E735 /* PGViewController.h in Headers */, + 8852C44014B65FD800F0E735 /* UIGapView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -529,6 +549,8 @@ 30C684941407044B004C1A8E /* PGURLProtocol.h in Headers */, 30356214141049E1006C2D43 /* PGWhitelistTests.h in Headers */, 30A90B9114588697006178D3 /* JSONKit.h in Headers */, + 8852C43A14B65FD800F0E735 /* PGViewController.h in Headers */, + 8852C43F14B65FD800F0E735 /* UIGapView.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -737,6 +759,8 @@ 30C684831406CB38004C1A8E /* PGWhitelist.m in Sources */, 30C684971407044B004C1A8E /* PGURLProtocol.m in Sources */, 30A90B9414588697006178D3 /* JSONKit.m in Sources */, + 8852C43D14B65FD800F0E735 /* PGViewController.m in Sources */, + 8852C44214B65FD800F0E735 /* UIGapView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -748,6 +772,8 @@ 686357BA141002F200DF4CF2 /* PluginResultJSONSerializationTests.m in Sources */, 30AE4E8D1419532F005A9C9A /* PGContactsTests.m in Sources */, 30AE4E97141953C7005A9C9A /* MockUIWebview.m in Sources */, + 8852C43E14B65FD800F0E735 /* PGViewController.m in Sources */, + 8852C44314B65FD800F0E735 /* UIGapView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -782,6 +808,8 @@ 30C684821406CB38004C1A8E /* PGWhitelist.m in Sources */, 30C684961407044B004C1A8E /* PGURLProtocol.m in Sources */, 30A90B9314588697006178D3 /* JSONKit.m in Sources */, + 8852C43C14B65FD800F0E735 /* PGViewController.m in Sources */, + 8852C44114B65FD800F0E735 /* UIGapView.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };