From c2f13fe2319b5a6744c50808a2f8ac097e9fcb9b Mon Sep 17 00:00:00 2001 From: Shazron Abdullah Date: Mon, 7 Oct 2013 17:53:04 -0700 Subject: [PATCH] Implement StatusBar.isVisible --- README.md | 17 ++++++++++++++++- src/ios/CDVStatusBar.h | 2 ++ src/ios/CDVStatusBar.m | 24 ++++++++++++++++++++++++ www/statusbar.js | 4 +++- 4 files changed, 45 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 9863f11..94ca746 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Methods Properties -------- -- StatusBar.isVisible (TODO: not implemented yet) +- StatusBar.isVisible Permissions ----------- @@ -144,6 +144,21 @@ Supported Platforms - iOS +StatusBar.isVisible +================= + +Read this property to see if the statusbar is visible or not. + + if (StatusBar.isVisible) { + // do something + } + + +Supported Platforms +------------------- + +- iOS + \ No newline at end of file diff --git a/src/ios/CDVStatusBar.h b/src/ios/CDVStatusBar.h index f2ce759..d8cb709 100644 --- a/src/ios/CDVStatusBar.h +++ b/src/ios/CDVStatusBar.h @@ -39,4 +39,6 @@ - (void) backgroundColorByName:(CDVInvokedUrlCommand*)command; - (void) backgroundColorByHexString:(CDVInvokedUrlCommand*)command; +- (void) _ready:(CDVInvokedUrlCommand*)command; + @end diff --git a/src/ios/CDVStatusBar.m b/src/ios/CDVStatusBar.m index da4ae57..71dcfe0 100644 --- a/src/ios/CDVStatusBar.m +++ b/src/ios/CDVStatusBar.m @@ -40,8 +40,21 @@ } } +- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context +{ + if ([keyPath isEqual:@"statusBarHidden"]) { + NSNumber* newValue = [change objectForKey:NSKeyValueChangeNewKey]; + BOOL boolValue = [newValue boolValue]; + + [self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", boolValue? @"true" : @"false" ]]; + } +} + - (void)pluginInitialize { + // observe the statusBarHidden property + [[UIApplication sharedApplication] addObserver:self forKeyPath:@"statusBarHidden" options:NSKeyValueObservingOptionNew context:NULL]; + _statusBarOverlaysWebView = YES; // default CGRect frame = [[UIApplication sharedApplication] statusBarFrame]; @@ -65,6 +78,12 @@ } } +- (void) _ready:(CDVInvokedUrlCommand*)command +{ + // set the initial value + [self.commandDelegate evalJs:[NSString stringWithFormat:@"StatusBar.isVisible = %@;", [UIApplication sharedApplication].statusBarHidden? @"false" : @"true" ]]; +} + - (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView { // we only care about the latest iOS version or a change in setting @@ -184,5 +203,10 @@ [self _backgroundColorByHexString:value]; } +- (void) dealloc +{ + [[UIApplication sharedApplication] removeObserver:self forKeyPath:@"statusBarHidden"]; +} + @end diff --git a/www/statusbar.js b/www/statusbar.js index a2a8249..6de8bf2 100644 --- a/www/statusbar.js +++ b/www/statusbar.js @@ -23,6 +23,9 @@ var argscheck = require('cordova/argscheck'), utils = require('cordova/utils'), exec = require('cordova/exec'); +// prime it +exec(null, null, "StatusBar", "_ready", []); + var StatusBar = function() { }; @@ -54,7 +57,6 @@ StatusBar.backgroundColorByHexString = function(hexString) { exec(null, null, "StatusBar", "backgroundColorByHexString", [hexString]); } -// TODO: StatusBar.isVisible = true; module.exports = StatusBar;