You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by st...@apache.org on 2013/06/26 01:56:17 UTC

[1/2] git commit: ripped out compass code

Updated Branches:
  refs/heads/master 87f4725e9 -> ef8a642bc


ripped out compass code


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

Branch: refs/heads/master
Commit: fdbdcf6f9f05684f883e69b1cb55d0fa4dedd3bd
Parents: 16aab6d
Author: Steven Gill <st...@gmail.com>
Authored: Tue Jun 25 16:56:04 2013 -0700
Committer: Steven Gill <st...@gmail.com>
Committed: Tue Jun 25 16:56:04 2013 -0700

----------------------------------------------------------------------
 src/ios/CDVLocation.h |  35 +-----
 src/ios/CDVLocation.m | 302 ++-------------------------------------------
 2 files changed, 12 insertions(+), 325 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/fdbdcf6f/src/ios/CDVLocation.h
----------------------------------------------------------------------
diff --git a/src/ios/CDVLocation.h b/src/ios/CDVLocation.h
index 773599f..3c7e463 100644
--- a/src/ios/CDVLocation.h
+++ b/src/ios/CDVLocation.h
@@ -20,14 +20,7 @@
 #import <UIKit/UIKit.h>
 #import <CoreLocation/CoreLocation.h>
 #import <Cordova/CDVPlugin.h>
-
-enum CDVHeadingStatus {
-    HEADINGSTOPPED = 0,
-    HEADINGSTARTING,
-    HEADINGRUNNING,
-    HEADINGERROR
-};
-typedef NSUInteger CDVHeadingStatus;
+#import <Cordova/CDVShared.h>
 
 enum CDVLocationStatus {
     PERMISSIONDENIED = 1,
@@ -36,18 +29,6 @@ enum CDVLocationStatus {
 };
 typedef NSUInteger CDVLocationStatus;
 
-// simple object to keep track of heading information
-@interface CDVHeadingData : NSObject {}
-
-@property (nonatomic, assign) CDVHeadingStatus headingStatus;
-@property (nonatomic, strong) CLHeading* headingInfo;
-@property (nonatomic, strong) NSMutableArray* headingCallbacks;
-@property (nonatomic, copy) NSString* headingFilter;
-@property (nonatomic, strong) NSDate* headingTimestamp;
-@property (assign) NSInteger timeout;
-
-@end
-
 // simple object to keep track of location information
 @interface CDVLocationData : NSObject {
     CDVLocationStatus locationStatus;
@@ -66,15 +47,12 @@ typedef NSUInteger CDVLocationStatus;
 @interface CDVLocation : CDVPlugin <CLLocationManagerDelegate>{
     @private BOOL __locationStarted;
     @private BOOL __highAccuracyEnabled;
-    CDVHeadingData* headingData;
     CDVLocationData* locationData;
 }
 
 @property (nonatomic, strong) CLLocationManager* locationManager;
-@property (strong) CDVHeadingData* headingData;
 @property (nonatomic, strong) CDVLocationData* locationData;
 
-- (BOOL)hasHeadingSupport;
 - (void)getLocation:(CDVInvokedUrlCommand*)command;
 - (void)addWatch:(CDVInvokedUrlCommand*)command;
 - (void)clearWatch:(CDVInvokedUrlCommand*)command;
@@ -90,15 +68,4 @@ typedef NSUInteger CDVLocationStatus;
        didFailWithError:(NSError*)error;
 
 - (BOOL)isLocationServicesEnabled;
-
-- (void)getHeading:(CDVInvokedUrlCommand*)command;
-- (void)returnHeadingInfo:(NSString*)callbackId keepCallback:(BOOL)bRetain;
-- (void)watchHeadingFilter:(CDVInvokedUrlCommand*)command;
-- (void)stopHeading:(CDVInvokedUrlCommand*)command;
-- (void)startHeadingWithFilter:(CLLocationDegrees)filter;
-- (void)locationManager:(CLLocationManager*)manager
-       didUpdateHeading:(CLHeading*)heading;
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager*)manager;
-
 @end

http://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation/blob/fdbdcf6f/src/ios/CDVLocation.m
----------------------------------------------------------------------
diff --git a/src/ios/CDVLocation.m b/src/ios/CDVLocation.m
index c3a9813..527a884 100644
--- a/src/ios/CDVLocation.m
+++ b/src/ios/CDVLocation.m
@@ -31,46 +31,12 @@
 #pragma mark -
 #pragma mark Categories
 
-@interface NSError (JSONMethods)
-
-- (NSString*)JSONRepresentation;
-
-@end
-
-@interface CLLocation (JSONMethods)
-
-- (NSString*)JSONRepresentation;
-
-@end
-
 @interface CLHeading (JSONMethods)
 
 - (NSString*)JSONRepresentation;
 
 @end
 
-#pragma mark -
-#pragma mark CDVHeadingData
-
-@implementation CDVHeadingData
-
-@synthesize headingStatus, headingInfo, headingCallbacks, headingFilter, headingTimestamp, timeout;
-- (CDVHeadingData*)init
-{
-    self = (CDVHeadingData*)[super init];
-    if (self) {
-        self.headingStatus = HEADINGSTOPPED;
-        self.headingInfo = nil;
-        self.headingCallbacks = nil;
-        self.headingFilter = nil;
-        self.headingTimestamp = nil;
-        self.timeout = 10;
-    }
-    return self;
-}
-
-@end
-
 @implementation CDVLocationData
 
 @synthesize locationStatus, locationInfo, locationCallbacks, watchCallbacks;
@@ -92,7 +58,7 @@
 
 @implementation CDVLocation
 
-@synthesize locationManager, headingData, locationData;
+@synthesize locationManager, locationData;
 
 - (CDVPlugin*)initWithWebView:(UIWebView*)theWebView
 {
@@ -102,26 +68,11 @@
         self.locationManager.delegate = self; // Tells the location manager to send updates to this object
         __locationStarted = NO;
         __highAccuracyEnabled = NO;
-        self.headingData = nil;
         self.locationData = nil;
     }
     return self;
 }
 
-- (BOOL)hasHeadingSupport
-{
-    BOOL headingInstancePropertyAvailable = [self.locationManager respondsToSelector:@selector(headingAvailable)]; // iOS 3.x
-    BOOL headingClassPropertyAvailable = [CLLocationManager respondsToSelector:@selector(headingAvailable)]; // iOS 4.x
-
-    if (headingInstancePropertyAvailable) { // iOS 3.x
-        return [(id)self.locationManager headingAvailable];
-    } else if (headingClassPropertyAvailable) { // iOS 4.x
-        return [CLLocationManager headingAvailable];
-    } else { // iOS 2.x
-        return NO;
-    }
-}
-
 - (BOOL)isAuthorized
 {
     BOOL authorizationStatusClassPropertyAvailable = [CLLocationManager respondsToSelector:@selector(authorizationStatus)]; // iOS 4.2+
@@ -357,212 +308,21 @@
     }
 }
 
-// called to get the current heading
-// Will call location manager to startUpdatingHeading if necessary
-
-- (void)getHeading:(CDVInvokedUrlCommand*)command
-{
-    NSString* callbackId = command.callbackId;
-    NSDictionary* options = [command.arguments objectAtIndex:0 withDefault:nil];
-    NSNumber* filter = [options valueForKey:@"filter"];
-
-    if (filter) {
-        [self watchHeadingFilter:command];
-        return;
-    }
-    if ([self hasHeadingSupport] == NO) {
-        CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:20];
-        [self.commandDelegate sendPluginResult:result callbackId:callbackId];
-    } else {
-        // heading retrieval does is not affected by disabling locationServices and authorization of app for location services
-        if (!self.headingData) {
-            self.headingData = [[CDVHeadingData alloc] init];
-        }
-        CDVHeadingData* hData = self.headingData;
-
-        if (!hData.headingCallbacks) {
-            hData.headingCallbacks = [NSMutableArray arrayWithCapacity:1];
-        }
-        // add the callbackId into the array so we can call back when get data
-        [hData.headingCallbacks addObject:callbackId];
-
-        if ((hData.headingStatus != HEADINGRUNNING) && (hData.headingStatus != HEADINGERROR)) {
-            // Tell the location manager to start notifying us of heading updates
-            [self startHeadingWithFilter:0.2];
-        } else {
-            [self returnHeadingInfo:callbackId keepCallback:NO];
-        }
-    }
-}
-
-// called to request heading updates when heading changes by a certain amount (filter)
-- (void)watchHeadingFilter:(CDVInvokedUrlCommand*)command
-{
-    NSString* callbackId = command.callbackId;
-    NSDictionary* options = [command.arguments objectAtIndex:0 withDefault:nil];
-    NSNumber* filter = [options valueForKey:@"filter"];
-    CDVHeadingData* hData = self.headingData;
-
-    if ([self hasHeadingSupport] == NO) {
-        CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:20];
-        [self.commandDelegate sendPluginResult:result callbackId:callbackId];
-    } else {
-        if (!hData) {
-            self.headingData = [[CDVHeadingData alloc] init];
-            hData = self.headingData;
-        }
-        if (hData.headingStatus != HEADINGRUNNING) {
-            // Tell the location manager to start notifying us of heading updates
-            [self startHeadingWithFilter:[filter doubleValue]];
-        } else {
-            // if already running check to see if due to existing watch filter
-            if (hData.headingFilter && ![hData.headingFilter isEqualToString:callbackId]) {
-                // new watch filter being specified
-                // send heading data one last time to clear old successCallback
-                [self returnHeadingInfo:hData.headingFilter keepCallback:NO];
-            }
-        }
-        // save the new filter callback and update the headingFilter setting
-        hData.headingFilter = callbackId;
-        // check if need to stop and restart in order to change value???
-        self.locationManager.headingFilter = [filter doubleValue];
-    }
-}
-
-- (void)returnHeadingInfo:(NSString*)callbackId keepCallback:(BOOL)bRetain
-{
-    CDVPluginResult* result = nil;
-    CDVHeadingData* hData = self.headingData;
-
-    self.headingData.headingTimestamp = [NSDate date];
-
-    if (hData && (hData.headingStatus == HEADINGERROR)) {
-        // return error
-        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:0];
-    } else if (hData && (hData.headingStatus == HEADINGRUNNING) && hData.headingInfo) {
-        // if there is heading info, return it
-        CLHeading* hInfo = hData.headingInfo;
-        NSMutableDictionary* returnInfo = [NSMutableDictionary dictionaryWithCapacity:4];
-        NSNumber* timestamp = [NSNumber numberWithDouble:([hInfo.timestamp timeIntervalSince1970] * 1000)];
-        [returnInfo setObject:timestamp forKey:@"timestamp"];
-        [returnInfo setObject:[NSNumber numberWithDouble:hInfo.magneticHeading] forKey:@"magneticHeading"];
-        id trueHeading = __locationStarted ? (id)[NSNumber numberWithDouble : hInfo.trueHeading] : (id)[NSNull null];
-        [returnInfo setObject:trueHeading forKey:@"trueHeading"];
-        [returnInfo setObject:[NSNumber numberWithDouble:hInfo.headingAccuracy] forKey:@"headingAccuracy"];
-
-        result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:returnInfo];
-        [result setKeepCallbackAsBool:bRetain];
-    }
-    if (result) {
-        [self.commandDelegate sendPluginResult:result callbackId:callbackId];
-    }
-}
-
-- (void)stopHeading:(CDVInvokedUrlCommand*)command
-{
-    // CDVHeadingData* hData = self.headingData;
-    if (self.headingData && (self.headingData.headingStatus != HEADINGSTOPPED)) {
-        if (self.headingData.headingFilter) {
-            // callback one last time to clear callback
-            [self returnHeadingInfo:self.headingData.headingFilter keepCallback:NO];
-            self.headingData.headingFilter = nil;
-        }
-        [self.locationManager stopUpdatingHeading];
-        NSLog(@"heading STOPPED");
-        self.headingData = nil;
-    }
-}
-
-// helper method to check the orientation and start updating headings
-- (void)startHeadingWithFilter:(CLLocationDegrees)filter
-{
-    // FYI UIDeviceOrientation and CLDeviceOrientation enums are currently the same
-    self.locationManager.headingOrientation = (CLDeviceOrientation)self.viewController.interfaceOrientation;
-    self.locationManager.headingFilter = filter;
-    [self.locationManager startUpdatingHeading];
-    self.headingData.headingStatus = HEADINGSTARTING;
-}
-
-- (BOOL)locationManagerShouldDisplayHeadingCalibration:(CLLocationManager*)manager
-{
-    return YES;
-}
-
-- (void)locationManager:(CLLocationManager*)manager
-       didUpdateHeading:(CLHeading*)heading
-{
-    CDVHeadingData* hData = self.headingData;
-
-    // normally we would clear the delegate to stop getting these notifications, but
-    // we are sharing a CLLocationManager to get location data as well, so we do a nil check here
-    // ideally heading and location should use their own CLLocationManager instances
-    if (hData == nil) {
-        return;
-    }
-
-    // save the data for next call into getHeadingData
-    hData.headingInfo = heading;
-    BOOL bTimeout = NO;
-    if (!hData.headingFilter && hData.headingTimestamp) {
-        bTimeout = fabs([hData.headingTimestamp timeIntervalSinceNow]) > hData.timeout;
-    }
-
-    if (hData.headingStatus == HEADINGSTARTING) {
-        hData.headingStatus = HEADINGRUNNING; // so returnHeading info will work
-
-        // this is the first update
-        for (NSString* callbackId in hData.headingCallbacks) {
-            [self returnHeadingInfo:callbackId keepCallback:NO];
-        }
-
-        [hData.headingCallbacks removeAllObjects];
-    }
-    if (hData.headingFilter) {
-        [self returnHeadingInfo:hData.headingFilter keepCallback:YES];
-    } else if (bTimeout) {
-        [self stopHeading:nil];
-    }
-    hData.headingStatus = HEADINGRUNNING;  // to clear any error
-}
-
 - (void)locationManager:(CLLocationManager*)manager didFailWithError:(NSError*)error
 {
     NSLog(@"locationManager::didFailWithError %@", [error localizedFailureReason]);
 
-    // Compass Error
-    if ([error code] == kCLErrorHeadingFailure) {
-        CDVHeadingData* hData = self.headingData;
-        if (hData) {
-            if (hData.headingStatus == HEADINGSTARTING) {
-                // heading error during startup - report error
-                for (NSString* callbackId in hData.headingCallbacks) {
-                    CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:0];
-                    [self.commandDelegate sendPluginResult:result callbackId:callbackId];
-                }
-
-                [hData.headingCallbacks removeAllObjects];
-            } // else for frequency watches next call to getCurrentHeading will report error
-            if (hData.headingFilter) {
-                CDVPluginResult* resultFilter = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsInt:0];
-                [self.commandDelegate sendPluginResult:resultFilter callbackId:hData.headingFilter];
-            }
-            hData.headingStatus = HEADINGERROR;
-        }
-    }
-    // Location Error
-    else {
-        CDVLocationData* lData = self.locationData;
-        if (lData && __locationStarted) {
-            // TODO: probably have to once over the various error codes and return one of:
-            // PositionError.PERMISSION_DENIED = 1;
-            // PositionError.POSITION_UNAVAILABLE = 2;
-            // PositionError.TIMEOUT = 3;
-            NSUInteger positionError = POSITIONUNAVAILABLE;
-            if (error.code == kCLErrorDenied) {
-                positionError = PERMISSIONDENIED;
-            }
-            [self returnLocationError:positionError withMessage:[error localizedDescription]];
+    CDVLocationData* lData = self.locationData;
+    if (lData && __locationStarted) {
+        // TODO: probably have to once over the various error codes and return one of:
+        // PositionError.PERMISSION_DENIED = 1;
+        // PositionError.POSITION_UNAVAILABLE = 2;
+        // PositionError.TIMEOUT = 3;
+        NSUInteger positionError = POSITIONUNAVAILABLE;
+        if (error.code == kCLErrorDenied) {
+            positionError = PERMISSIONDENIED;
         }
+        [self returnLocationError:positionError withMessage:[error localizedDescription]];
     }
 
     [self.locationManager stopUpdatingLocation];
@@ -578,46 +338,6 @@
 {
     [self _stopLocation];
     [self.locationManager stopUpdatingHeading];
-    self.headingData = nil;
-}
-
-@end
-
-#pragma mark -
-#pragma mark CLLocation(JSONMethods)
-
-@implementation CLLocation (JSONMethods)
-
-- (NSString*)JSONRepresentation
-{
-    return [NSString stringWithFormat:
-           @"{ timestamp: %.00f, \
-            coords: { latitude: %f, longitude: %f, altitude: %.02f, heading: %.02f, speed: %.02f, accuracy: %.02f, altitudeAccuracy: %.02f } \
-            }",
-           [self.timestamp timeIntervalSince1970] * 1000.0,
-           self.coordinate.latitude,
-           self.coordinate.longitude,
-           self.altitude,
-           self.course,
-           self.speed,
-           self.horizontalAccuracy,
-           self.verticalAccuracy
-    ];
-}
-
-@end
-
-#pragma mark NSError(JSONMethods)
-
-@implementation NSError (JSONMethods)
-
-- (NSString*)JSONRepresentation
-{
-    return [NSString stringWithFormat:
-           @"{ code: %d, message: '%@'}",
-           self.code,
-           [self localizedDescription]
-    ];
 }
 
 @end


[2/2] git commit: Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation

Posted by st...@apache.org.
Merge branch 'master' of https://git-wip-us.apache.org/repos/asf/cordova-plugin-geolocation


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

Branch: refs/heads/master
Commit: ef8a642bc9f0dda606fa58483531f0f4cbd15d0a
Parents: fdbdcf6 87f4725
Author: Steven Gill <st...@gmail.com>
Authored: Tue Jun 25 16:56:08 2013 -0700
Committer: Steven Gill <st...@gmail.com>
Committed: Tue Jun 25 16:56:08 2013 -0700

----------------------------------------------------------------------
 plugin.xml                | 27 ++++++++++++++++++
 src/blackberry10/index.js | 64 ++++++++++++++++++++++++++++++++++++++++++
 src/wp8/GeoLocation.cs    | 34 ++++++++++++++++++++++
 3 files changed, 125 insertions(+)
----------------------------------------------------------------------