Permalink
Browse files

Merge branch 'master' of git://github.com/shazron/phonegap

  • Loading branch information...
2 parents c917751 + 167bbe8 commit 23e3fed563301cbaf6cf4f21dc1eb5c7e7e12a10 @sintaxi sintaxi committed Jul 30, 2009
View
@@ -43,7 +43,7 @@ iphone: lib/iphone/phonegap-min.js
lib/iphone/phonegap-min.js: lib/iphone/phonegap.js
$(JAVA) -jar util/yuicompressor-2.4.2.jar --charset UTF-8 -o $@ lib/iphone/phonegap.js
-lib/iphone/phonegap.js: javascripts/phonegap.js.base javascripts/acceleration.js javascripts/accelerometer.js javascripts/camera.js javascripts/contact.js javascripts/debugconsole.js javascripts/device.js javascripts/file.js javascripts/geolocation.js javascripts/compass.js javascripts/map.js javascripts/media.js javascripts/notification.js javascripts/orientation.js javascripts/position.js javascripts/sms.js javascripts/telephony.js javascripts/uicontrols.js javascripts/iphone/accelerometer.js javascripts/iphone/bonjour.js javascripts/iphone/contact.js javascripts/iphone/camera.js javascripts/iphone/debugconsole.js javascripts/iphone/device.js javascripts/iphone/geolocation.js javascripts/iphone/compass.js javascripts/iphone/media.js javascripts/iphone/notification.js javascripts/iphone/phonegap.js javascripts/iphone/uicontrols.js
+lib/iphone/phonegap.js: javascripts/phonegap.js.base javascripts/acceleration.js javascripts/accelerometer.js javascripts/camera.js javascripts/contact.js javascripts/debugconsole.js javascripts/device.js javascripts/file.js javascripts/geolocation.js javascripts/compass.js javascripts/map.js javascripts/media.js javascripts/notification.js javascripts/orientation.js javascripts/position.js javascripts/sms.js javascripts/telephony.js javascripts/uicontrols.js javascripts/network.js javascripts/iphone/accelerometer.js javascripts/iphone/bonjour.js javascripts/iphone/contact.js javascripts/iphone/camera.js javascripts/iphone/debugconsole.js javascripts/iphone/device.js javascripts/iphone/geolocation.js javascripts/iphone/compass.js javascripts/iphone/media.js javascripts/iphone/notification.js javascripts/iphone/phonegap.js javascripts/iphone/uicontrols.js javascripts/iphone/network.js
$(RM_RF) lib/iphone
$(MKPATH) lib/iphone
$(RM_F) $@
@@ -65,6 +65,7 @@ lib/iphone/phonegap.js: javascripts/phonegap.js.base javascripts/acceleration.js
$(CAT) javascripts/sms.js >> $@
$(CAT) javascripts/telephony.js >> $@
$(CAT) javascripts/uicontrols.js >> $@
+ $(CAT) javascripts/network.js >> $@
$(CAT) javascripts/iphone/accelerometer.js >> $@
$(CAT) javascripts/iphone/bonjour.js >> $@
$(CAT) javascripts/iphone/contact.js >> $@
@@ -77,6 +78,8 @@ lib/iphone/phonegap.js: javascripts/phonegap.js.base javascripts/acceleration.js
$(CAT) javascripts/iphone/notification.js >> $@
$(CAT) javascripts/iphone/phonegap.js >> $@
$(CAT) javascripts/iphone/uicontrols.js >> $@
+ $(CAT) javascripts/iphone/network.js >> $@
+
blackberry: lib/blackberry/phonegap-min.js
lib/blackberry/phonegap-min.js: lib/blackberry/phonegap.js
View
@@ -0,0 +1,23 @@
+//
+// Network.h
+// PhoneGap
+//
+// Created by Shazron Abdullah on 29/07/09.
+// Copyright 2009 Nitobi Inc. All rights reserved.
+//
+
+#import <Foundation/Foundation.h>
+#import "PhoneGapCommand.h"
+
+@class Reachability;
+
+@interface Network : PhoneGapCommand {
+
+}
+
+- (void) isReachable:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options;
+
+- (void) reachabilityChanged:(NSNotification *)note;
+- (void) updateReachability:(NSString*)callback;
+
+@end
View
@@ -0,0 +1,64 @@
+//
+// Network.m
+// PhoneGap
+//
+// Created by Shazron Abdullah on 29/07/09.
+// Copyright 2009 Nitobi Inc. All rights reserved.
+//
+
+#import "Network.h"
+#import "Reachability.h"
+#import "Categories.h"
+
+@implementation Network
+
+- (void) isReachable:(NSMutableArray*)arguments withDict:(NSMutableDictionary*)options
+{
+ NSUInteger argc = [arguments count];
+ NSString* hostName = nil, *callback = nil;
+
+ if (argc > 0) hostName = [arguments objectAtIndex:0];
+ if (argc > 1) callback = [arguments objectAtIndex:1];
+
+ if (argc < 1) {
+ NSLog(@"Network.startReachability: Missing 1st argument (hostName).");
+ return;
+ }
+
+ if ([options existsValue:@"true" forKey:@"isIpAddress"]) {
+ [[Reachability sharedReachability] setAddress:hostName];
+ } else {
+ [[Reachability sharedReachability] setHostName:hostName];
+ }
+
+ //[[Reachability sharedReachability] setNetworkStatusNotificationsEnabled:YES];
+ [self updateReachability:callback];
+
+ //[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:@"kNetworkReachabilityChangedNotification" object:nil];
+}
+
+- (void)reachabilityChanged:(NSNotification *)note
+{
+ [self updateReachability:nil];
+}
+
+- (void)updateReachability:(NSString*)callback
+{
+ NSString* jsCallback = @"navigator.network.updateReachability";
+ if (callback)
+ jsCallback = callback;
+
+ NSString* status = [[NSString alloc] initWithFormat:@"%@({ hostName: '%@', ipAddress: '%@', remoteHostStatus: %d, internetConnectionStatus: %d, localWiFiConnectionStatus: %d });",
+ jsCallback,
+ [[Reachability sharedReachability] hostName],
+ [[Reachability sharedReachability] address],
+ [[Reachability sharedReachability] remoteHostStatus],
+ [[Reachability sharedReachability] internetConnectionStatus],
+ [[Reachability sharedReachability] localWiFiConnectionStatus]];
+
+
+ [webView stringByEvaluatingJavaScriptFromString:status];
+ [status release];
+}
+
+@end
@@ -0,0 +1,122 @@
+/*
+
+File: Reachability.h
+Abstract: SystemConfiguration framework wrapper.
+
+Version: 1.5
+
+Disclaimer: IMPORTANT: This Apple software is supplied to you by Apple Inc.
+("Apple") in consideration of your agreement to the following terms, and your
+use, installation, modification or redistribution of this Apple software
+constitutes acceptance of these terms. If you do not agree with these terms,
+please do not use, install, modify or redistribute this Apple software.
+
+In consideration of your agreement to abide by the following terms, and subject
+to these terms, Apple grants you a personal, non-exclusive license, under
+Apple's copyrights in this original Apple software (the "Apple Software"), to
+use, reproduce, modify and redistribute the Apple Software, with or without
+modifications, in source and/or binary forms; provided that if you redistribute
+the Apple Software in its entirety and without modifications, you must retain
+this notice and the following text and disclaimers in all such redistributions
+of the Apple Software.
+Neither the name, trademarks, service marks or logos of Apple Inc. may be used
+to endorse or promote products derived from the Apple Software without specific
+prior written permission from Apple. Except as expressly stated in this notice,
+no other rights or licenses, express or implied, are granted by Apple herein,
+including but not limited to any patent rights that may be infringed by your
+derivative works or by other works in which the Apple Software may be
+incorporated.
+
+The Apple Software is provided by Apple on an "AS IS" basis. APPLE MAKES NO
+WARRANTIES, EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED
+WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS USE AND OPERATION ALONE OR IN
+COMBINATION WITH YOUR PRODUCTS.
+
+IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ARISING IN ANY WAY OUT OF THE USE, REPRODUCTION, MODIFICATION AND/OR
+DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND WHETHER UNDER THEORY OF
+CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR OTHERWISE, EVEN IF
+APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Copyright (C) 2008 Apple Inc. All Rights Reserved.
+
+*/
+
+#import <UIKit/UIKit.h>
+#import <SystemConfiguration/SystemConfiguration.h>
+
+@class Reachability;
+
+@interface Reachability : NSObject {
+
+@private
+ BOOL _networkStatusNotificationsEnabled;
+
+ NSString *_hostName;
+ NSString *_address;
+
+ NSMutableDictionary *_reachabilityQueries;
+}
+
+/*
+ An enumeration that defines the return values of the network state
+ of the device.
+ */
+typedef enum {
+ NotReachable = 0,
+ ReachableViaCarrierDataNetwork,
+ ReachableViaWiFiNetwork
+} NetworkStatus;
+
+
+// Set to YES to register for changes in network status. Otherwise reachability queries
+// will be handled synchronously.
+@property BOOL networkStatusNotificationsEnabled;
+// The remote host whose reachability will be queried.
+// Either this or 'addressName' must be set.
+@property (nonatomic, retain) NSString *hostName;
+// The IP address of the remote host whose reachability will be queried.
+// Either this or 'hostName' must be set.
+@property (nonatomic, retain) NSString *address;
+// A cache of ReachabilityQuery objects, which encapsulate a SCNetworkReachabilityRef, a host or address, and a run loop. The keys are host names or addresses.
+@property (nonatomic, assign) NSMutableDictionary *reachabilityQueries;
+
+// This class is intended to be used as a singleton.
++ (Reachability *)sharedReachability;
+
+// Is self.hostName is not nil, determines its reachability.
+// If self.hostName is nil and self.address is not nil, determines the reachability of self.address.
+- (NetworkStatus)remoteHostStatus;
+// Is the device able to communicate with Internet hosts? If so, through which network interface?
+- (NetworkStatus)internetConnectionStatus;
+// Is the device able to communicate with hosts on the local WiFi network? (Typically these are Bonjour hosts).
+- (NetworkStatus)localWiFiConnectionStatus;
+
+/*
+ When reachability change notifications are posted, the callback method 'ReachabilityCallback' is called
+ and posts a notification that the client application can observe to learn about changes.
+ */
+static void ReachabilityCallback(SCNetworkReachabilityRef target, SCNetworkReachabilityFlags flags, void *info);
+
+@end
+
+@interface ReachabilityQuery : NSObject
+{
+@private
+ SCNetworkReachabilityRef _reachabilityRef;
+ CFMutableArrayRef _runLoops;
+ NSString *_hostNameOrAddress;
+}
+// Keep around each network reachability query object so that we can
+// register for updates from those objects.
+@property (nonatomic) SCNetworkReachabilityRef reachabilityRef;
+@property (nonatomic, retain) NSString *hostNameOrAddress;
+@property (nonatomic) CFMutableArrayRef runLoops;
+
+- (void)scheduleOnRunLoop:(NSRunLoop *)inRunLoop;
+
+@end
+
Oops, something went wrong.

0 comments on commit 23e3fed

Please sign in to comment.