You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ag...@apache.org on 2014/07/15 04:56:58 UTC
[3/3] git commit: ios: Use a persistent callbackId instead of calling
sendJs
ios: Use a persistent callbackId instead of calling sendJs
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/commit/be8a3e59
Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/tree/be8a3e59
Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/diff/be8a3e59
Branch: refs/heads/master
Commit: be8a3e5947e5ad47e602cd0064e0ce9442177729
Parents: f0031ca
Author: Andrew Grieve <ag...@chromium.org>
Authored: Mon Jul 14 22:55:04 2014 -0400
Committer: Andrew Grieve <ag...@chromium.org>
Committed: Mon Jul 14 22:56:42 2014 -0400
----------------------------------------------------------------------
src/ios/CDVStatusBar.h | 4 +---
src/ios/CDVStatusBar.m | 39 +++++++++++++++++++++++++++++++--------
www/statusbar.js | 8 +++++++-
3 files changed, 39 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/blob/be8a3e59/src/ios/CDVStatusBar.h
----------------------------------------------------------------------
diff --git a/src/ios/CDVStatusBar.h b/src/ios/CDVStatusBar.h
index df48d2d..84f37fa 100644
--- a/src/ios/CDVStatusBar.h
+++ b/src/ios/CDVStatusBar.h
@@ -23,12 +23,10 @@
@interface CDVStatusBar : CDVPlugin {
@protected
BOOL _statusBarOverlaysWebView;
- @protected
UIView* _statusBarBackgroundView;
- @protected
BOOL _uiviewControllerBasedStatusBarAppearance;
- @protected
UIColor* _statusBarBackgroundColor;
+ NSString* _eventsCallbackId;
}
@property (atomic, assign) BOOL statusBarOverlaysWebView;
http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/blob/be8a3e59/src/ios/CDVStatusBar.m
----------------------------------------------------------------------
diff --git a/src/ios/CDVStatusBar.m b/src/ios/CDVStatusBar.m
index 98f2285..8b6666e 100644
--- a/src/ios/CDVStatusBar.m
+++ b/src/ios/CDVStatusBar.m
@@ -70,8 +70,9 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
@end
-@interface CDVStatusBar () <
- UIScrollViewDelegate>
+@interface CDVStatusBar () <UIScrollViewDelegate>
+- (void)fireTappedEvent;
+- (void)updateIsVisible:(BOOL)visible;
@end
@implementation CDVStatusBar
@@ -85,9 +86,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
{
if ([keyPath isEqual:@"statusBarHidden"]) {
NSNumber* newValue = [change objectForKey:NSKeyValueChangeNewKey];
- BOOL boolValue = [newValue boolValue];
-
- [self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", boolValue? @"false" : @"true" ]];
+ [self updateIsVisible:![newValue boolValue]];
}
}
@@ -136,10 +135,34 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
fakeScrollView.contentOffset = CGPointMake(0.0f, UIScreen.mainScreen.bounds.size.height); // Scroll down so a tap will take scroll view back to the top
}
+- (void)onReset {
+ _eventsCallbackId = nil;
+}
+
+- (void)fireTappedEvent {
+ if (_eventsCallbackId == nil) {
+ return;
+ }
+ NSDictionary* payload = @{@"type": @"tap"};
+ CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:payload];
+ [result setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:result callbackId:_eventsCallbackId];
+}
+
+- (void)updateIsVisible:(BOOL)visible {
+ if (_eventsCallbackId == nil) {
+ return;
+ }
+ CDVPluginResult* result = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsBool:visible];
+ [result setKeepCallbackAsBool:YES];
+ [self.commandDelegate sendPluginResult:result callbackId:_eventsCallbackId];
+}
+
+
- (void) _ready:(CDVInvokedUrlCommand*)command
{
- // set the initial value
- [self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", [UIApplication sharedApplication].statusBarHidden? @"false" : @"true" ]];
+ _eventsCallbackId = command.callbackId;
+ [self updateIsVisible:![UIApplication sharedApplication].statusBarHidden];
}
- (void) initializeStatusBarBackgroundView
@@ -429,7 +452,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
- [self.webView stringByEvaluatingJavaScriptFromString:@"var evt = document.createEvent(\"Event\"); evt.initEvent(\"statusTap\",true,true); window.dispatchEvent(evt);"];
+ [self fireTappedEvent];
return NO;
}
http://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar/blob/be8a3e59/www/statusbar.js
----------------------------------------------------------------------
diff --git a/www/statusbar.js b/www/statusbar.js
index 53e89fd..63967a9 100644
--- a/www/statusbar.js
+++ b/www/statusbar.js
@@ -97,7 +97,13 @@ var StatusBar = {
// prime it
exec(function (res) {
- StatusBar.isVisible = res;
+ if (typeof res == 'object') {
+ if (res.type == 'tap') {
+ cordova.fireWindowEvent('statusTap');
+ }
+ } else {
+ StatusBar.isVisible = res;
+ }
}, null, "StatusBar", "_ready", []);
module.exports = StatusBar;