You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by sh...@apache.org on 2013/10/24 02:18:28 UTC

ios commit: CB-5189 - ios - Backport for v2.9.1 of CB-4958, CB-3482 and CB-3453 changes

Updated Branches:
  refs/heads/2.9.x e09dc3526 -> fe49c0537


CB-5189 - ios - Backport for v2.9.1 of CB-4958, CB-3482 and CB-3453 changes


Project: http://git-wip-us.apache.org/repos/asf/cordova-ios/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-ios/commit/fe49c053
Tree: http://git-wip-us.apache.org/repos/asf/cordova-ios/tree/fe49c053
Diff: http://git-wip-us.apache.org/repos/asf/cordova-ios/diff/fe49c053

Branch: refs/heads/2.9.x
Commit: fe49c053735174d8b9ca66bbb8f0510c78a79dab
Parents: e09dc35
Author: Shazron Abdullah <sh...@apache.org>
Authored: Wed Oct 23 17:18:17 2013 -0700
Committer: Shazron Abdullah <sh...@apache.org>
Committed: Wed Oct 23 17:18:17 2013 -0700

----------------------------------------------------------------------
 CordovaLib/Classes/CDVCamera.h |  2 +-
 CordovaLib/Classes/CDVCamera.m | 42 ++++++++++++++++++++++++++++++-------
 2 files changed, 35 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/fe49c053/CordovaLib/Classes/CDVCamera.h
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVCamera.h b/CordovaLib/Classes/CDVCamera.h
index 2932e3b..744ae7f 100644
--- a/CordovaLib/Classes/CDVCamera.h
+++ b/CordovaLib/Classes/CDVCamera.h
@@ -20,7 +20,7 @@
 #import <Foundation/Foundation.h>
 #import <CoreLocation/CoreLocation.h>
 #import <CoreLocation/CLLocationManager.h>
-#import "CDVPlugin.h"
+#import <Cordova/CDVPlugin.h>
 
 enum CDVDestinationType {
     DestinationTypeDataUrl = 0,

http://git-wip-us.apache.org/repos/asf/cordova-ios/blob/fe49c053/CordovaLib/Classes/CDVCamera.m
----------------------------------------------------------------------
diff --git a/CordovaLib/Classes/CDVCamera.m b/CordovaLib/Classes/CDVCamera.m
index d0a36dd..42c5237 100644
--- a/CordovaLib/Classes/CDVCamera.m
+++ b/CordovaLib/Classes/CDVCamera.m
@@ -19,9 +19,9 @@
 
 #import "CDVCamera.h"
 #import "CDVJpegHeaderWriter.h"
-#import "NSArray+Comparisons.h"
-#import "NSData+Base64.h"
-#import "NSDictionary+Extensions.h"
+#import <Cordova/NSArray+Comparisons.h>
+#import <Cordova/NSData+Base64.h>
+#import <Cordova/NSDictionary+Extensions.h>
 #import <ImageIO/CGImageProperties.h>
 #import <AssetsLibrary/ALAssetRepresentation.h>
 #import <ImageIO/CGImageSource.h>
@@ -150,9 +150,11 @@ static NSSet* org_apache_cordova_validArrowDirections;
         NSDictionary* options = [command.arguments objectAtIndex:10 withDefault:nil];
         [self displayPopover:options];
     } else {
-        if ([self.viewController respondsToSelector:@selector(presentViewController:::)]) {
+        SEL selector = NSSelectorFromString(@"presentViewController:animated:completion:");
+        if ([self.viewController respondsToSelector:selector]) {
             [self.viewController presentViewController:cameraPicker animated:YES completion:nil];
         } else {
+            // deprecated as of iOS >= 6.0
             [self.viewController presentModalViewController:cameraPicker animated:YES];
         }
     }
@@ -303,11 +305,16 @@ static NSSet* org_apache_cordova_validArrowDirections;
             }
 
             NSData* data = nil;
+            // returnedImage is the image that is returned to caller and (optionally) saved to photo album
+            UIImage* returnedImage = (scaledImage == nil ? image : scaledImage);
 
             if (cameraPicker.encodingType == EncodingTypePNG) {
-                data = UIImagePNGRepresentation(scaledImage == nil ? image : scaledImage);
+                data = UIImagePNGRepresentation(returnedImage);
+            } else if ((cameraPicker.allowsEditing==false) && (cameraPicker.targetSize.width <= 0) && (cameraPicker.targetSize.height <= 0) && (cameraPicker.correctOrientation==false)){
+                // use image unedited as requested , don't resize
+                data = UIImageJPEGRepresentation(returnedImage, 1.0);
             } else {
-                data = UIImageJPEGRepresentation(scaledImage == nil ? image : scaledImage, cameraPicker.quality / 100.0f);
+                data = UIImageJPEGRepresentation(returnedImage, cameraPicker.quality / 100.0f);
 
                 NSDictionary *controllerMetadata = [info objectForKey:@"UIImagePickerControllerMediaMetadata"];
                 if (controllerMetadata) {
@@ -323,7 +330,8 @@ static NSSet* org_apache_cordova_validArrowDirections;
             }
             
             if (cameraPicker.saveToPhotoAlbum) {
-                UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:data], nil, nil, nil);
+                ALAssetsLibrary *library = [ALAssetsLibrary new];
+                [library writeImageToSavedPhotosAlbum:returnedImage.CGImage orientation:(ALAssetOrientation)(returnedImage.imageOrientation) completionBlock:nil];
             }
 
             if (cameraPicker.returnType == DestinationTypeFileUri) {
@@ -669,7 +677,8 @@ static NSSet* org_apache_cordova_validArrowDirections;
     }
     
     if (self.pickerController.saveToPhotoAlbum) {
-        UIImageWriteToSavedPhotosAlbum([UIImage imageWithData:[self data]], nil, nil, nil);
+        ALAssetsLibrary *library = [ALAssetsLibrary new];
+        [library writeImageDataToSavedPhotosAlbum:self.data metadata:self.metadata completionBlock:nil];
     }
     
     if (self.pickerController.returnType == DestinationTypeFileUri) {
@@ -727,4 +736,21 @@ static NSSet* org_apache_cordova_validArrowDirections;
 @synthesize webView;
 @synthesize popoverSupported;
 
+- (BOOL)prefersStatusBarHidden {
+    return YES;
+}
+
+- (UIViewController*)childViewControllerForStatusBarHidden {
+    return nil;
+}
+    
+- (void)viewWillAppear:(BOOL)animated {
+    SEL sel = NSSelectorFromString(@"setNeedsStatusBarAppearanceUpdate");
+    if ([self respondsToSelector:sel]) {
+        [self performSelector:sel withObject:nil afterDelay:0];
+    }
+    
+    [super viewWillAppear:animated];
+}
+
 @end