Compare commits

..
14 Commits
Author SHA1 Message Date
Carlos Santana f1aa062557 CB-10820 Updated version and RELEASENOTES.md for release 2.1.2 2016-03-09 22:12:41 -05:00
Julio César 7ca3552224 Fix for CB-10752 status bar overlays the webview on iOS 6 in some cases
We don’t allow the statusbar to overlay the webview on iOS 6, but in
some cases it happens. This changes avoid it.
2016-03-06 11:55:49 +01:00
daserge bf7869cec7 CB-10683 Fix wrong StatusBar.isVisible initial value on Windows 2016-02-24 10:32:46 +03:00
daserge 8a3f9edb9d CB-10636 Add JSHint for plugins 2016-02-24 10:28:04 +03:00
Julio César 47f245462d CB-10047 fix iOS 8 deprecated warnings
Removed all references to self.viewController.interfaceOrientation,
they weren’t really used on invertFrameIfNeeded and are deprecated on
iOS 8
Removed orientation param on invertFrameIfNeeded as it wasn’t being
used.

closes #26
2016-02-22 19:49:18 +01:00
Vladimir Kotikov 241577c3c8 CB-10557 Incremented plugin version. 2016-02-09 13:09:55 +03:00
Vladimir Kotikov 573176e3a7 CB-10557 Updated version and RELEASENOTES.md for release 2.1.1 2016-02-09 13:09:54 +03:00
Julio César a464526477 Fix for CB-10102
The removeObserver code was wrong and it might crash on plugin
deallocation

github: close #45
2016-01-17 13:56:20 +01:00
Steve Gill 97f87d36c1 CB-10368 Incremented plugin version. 2016-01-15 16:58:32 -08:00
Steve Gill e6e8c5be10 CB-10368 Updated version and RELEASENOTES.md for release 2.1.0 2016-01-15 16:35:06 -08:00
Vladimir Kotikov a4a1065c4f CB-9513 Allow to show/hide status bar in fullscreen mode. This closes #42 2016-01-05 13:37:25 +03:00
Vladimir Kotikov d853f828d6 CB-8720 Fix status bar position when app started upside down on iOS 7. This closes #44 2016-01-05 13:34:37 +03:00
Vladimir Kotikov 3e9ce84a56 CB-10118 Fixes plugin loading error for browser platform
This closes #43
2016-01-05 13:16:26 +03:00
Steve Gill 999ad4f6c2 CB-10035 Incremented plugin version. 2015-11-30 17:57:07 -08:00
14 changed files with 163 additions and 60 deletions
+24
View File
@@ -0,0 +1,24 @@
#If ignorance is bliss, then somebody knock the smile off my face
*.csproj.user
*.suo
*.cache
Thumbs.db
*.DS_Store
*.bak
*.cache
*.log
*.swp
*.user
node_modules
+16
View File
@@ -0,0 +1,16 @@
{
"browser": true
, "devel": true
, "bitwise": true
, "undef": true
, "trailing": true
, "quotmark": false
, "indent": 4
, "unused": "vars"
, "latedef": "nofunc"
, "globals": {
"module": false,
"exports": false,
"require": false
}
}
+4
View File
@@ -0,0 +1,4 @@
language: node_js
sudo: false
node_js:
- "4.2"
+2
View File
@@ -17,6 +17,8 @@
# under the License.
-->
[![Build Status](https://travis-ci.org/apache/cordova-plugin-statusbar.svg?branch=master)](https://travis-ci.org/apache/cordova-plugin-statusbar)
# cordova-plugin-statusbar
StatusBar
+14
View File
@@ -20,6 +20,20 @@
-->
# Release Notes
### 2.1.2 (Mar 09, 2016)
* [CB-10752](https://issues.apache.org/jira/browse/CB-10752) for for status bar overlays the webview on ** iOS ** 6 in some cases
* [CB-10683](https://issues.apache.org/jira/browse/CB-10683) Fix wrong StatusBar.isVisible initial value on ** Windows **
* [CB-10636](https://issues.apache.org/jira/browse/CB-10636) Add JSHint for plugins
* [CB-10047](https://issues.apache.org/jira/browse/CB-10047) fix ** iOS ** 8 deprecated warnings
### 2.1.1 (Feb 09, 2016)
* [CB-10102](https://issues.apache.org/jira/browse/CB-10102) The removeObserver code was wrong and it might crash on plugin deallocation
### 2.1.0 (Jan 15, 2016)
* CB-9513 Allow to show/hide status bar in fullscreen mode.
* CB-8720 Fix status bar position when app started upside down on **iOS 7**.
* CB-10118 Fixes plugin loading error for **Browser** platform
### 2.0.0 (Nov 18, 2015)
* [CB-10035](https://issues.apache.org/jira/browse/CB-10035) Updated `RELEASENOTES` to be newest to oldest
* Added `weakSelf` reference for block use
+9 -2
View File
@@ -1,6 +1,6 @@
{
"name": "cordova-plugin-statusbar",
"version": "2.0.0",
"version": "2.1.2",
"description": "Cordova StatusBar Plugin",
"cordova": {
"id": "cordova-plugin-statusbar",
@@ -26,6 +26,10 @@
"cordova-wp8",
"cordova-windows"
],
"scripts": {
"test": "npm run jshint",
"jshint": "node node_modules/jshint/bin/jshint www && node node_modules/jshint/bin/jshint src && node node_modules/jshint/bin/jshint tests"
},
"engines": [
{
"name": "cordova",
@@ -33,5 +37,8 @@
}
],
"author": "Apache Software Foundation",
"license": "Apache 2.0"
"license": "Apache 2.0",
"devDependencies": {
"jshint": "^2.6.0"
}
}
+2 -2
View File
@@ -22,7 +22,7 @@
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-statusbar"
version="2.0.0">
version="2.1.2">
<name>StatusBar</name>
<description>Cordova StatusBar Plugin</description>
<license>Apache 2.0</license>
@@ -48,7 +48,7 @@
</platform>
<platform name="browser">
<js-module src="src/browser/statusbar.js" name="statusbar">
<js-module src="src/browser/statusbar.js" name="statusbar.Browser">
<merges target="window.StatusBar" />
</js-module>
</platform>
+24
View File
@@ -23,6 +23,7 @@ import android.app.Activity;
import android.graphics.Color;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
@@ -76,6 +77,7 @@ public class StatusBar extends CordovaPlugin {
Log.v(TAG, "Executing action: " + action);
final Activity activity = this.cordova.getActivity();
final Window window = activity.getWindow();
if ("_ready".equals(action)) {
boolean statusBarVisible = (window.getAttributes().flags & WindowManager.LayoutParams.FLAG_FULLSCREEN) == 0;
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, statusBarVisible));
@@ -86,6 +88,17 @@ public class StatusBar extends CordovaPlugin {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// SYSTEM_UI_FLAG_FULLSCREEN is available since JellyBean, but we
// use KitKat here to be aligned with "Fullscreen" preference
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
int uiOptions = window.getDecorView().getSystemUiVisibility();
uiOptions &= ~View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
uiOptions &= ~View.SYSTEM_UI_FLAG_FULLSCREEN;
window.getDecorView().setSystemUiVisibility(uiOptions);
return;
}
window.clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
});
@@ -96,6 +109,17 @@ public class StatusBar extends CordovaPlugin {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// SYSTEM_UI_FLAG_FULLSCREEN is available since JellyBean, but we
// use KitKat here to be aligned with "Fullscreen" preference
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
int uiOptions = window.getDecorView().getSystemUiVisibility()
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_FULLSCREEN;
window.getDecorView().setSystemUiVisibility(uiOptions);
return;
}
window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
}
});
-6
View File
@@ -18,8 +18,6 @@
*
*/
var cordova = require('cordova');
function notSupported() {
console.log('StatusBar is not supported');
return false;
@@ -32,11 +30,7 @@ module.exports = {
styleLightContent:notSupported,
styleBlackOpaque:notSupported,
overlaysWebView:notSupported,
overlaysWebView: notSupported,
styleDefault: notSupported,
styleLightContect: notSupported,
styleBlackTranslucent: notSupported,
styleBlackOpaque: notSupported,
backgroundColorByName: notSupported,
backgroundColorByHexString: notSupported,
hide: notSupported,
+38 -31
View File
@@ -180,7 +180,17 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) initializeStatusBarBackgroundView
{
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
if ([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown &&
statusBarFrame.size.height + statusBarFrame.origin.y == [[UIScreen mainScreen] bounds].size.height) {
// When started in upside-down orientation on iOS 7, status bar will be bound to lower edge of the
// screen (statusBarFrame.origin.y will be somewhere around screen height). In this case we need to
// correct frame's coordinates
statusBarFrame.origin.y = 0;
}
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
_statusBarBackgroundView = [[UIView alloc] initWithFrame:statusBarFrame];
_statusBarBackgroundView.backgroundColor = _statusBarBackgroundColor;
@@ -188,7 +198,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
_statusBarBackgroundView.autoresizesSubviews = YES;
}
- (CGRect) invertFrameIfNeeded:(CGRect)rect orientation:(UIInterfaceOrientation)orientation {
- (CGRect) invertFrameIfNeeded:(CGRect)rect {
// landscape is where (width > height). On iOS < 8, we need to invert since frames are
// always in Portrait context
if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) && (rect.size.width < rect.size.height)) {
@@ -401,18 +411,17 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
[self showStatusBar];
[self resizeWebView];
if (isIOS7) {
[self resizeWebView];
if (!self.statusBarOverlaysWebView) {
// there is a possibility that when the statusbar was hidden, it was in a different orientation
// from the current one. Therefore we need to expand the statusBarBackgroundView as well to the
// statusBar's current size
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
CGRect sbBgFrame = _statusBarBackgroundView.frame;
sbBgFrame.size = statusBarFrame.size;
_statusBarBackgroundView.frame = sbBgFrame;
@@ -420,45 +429,43 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
}
} else {
CGRect bounds = [[UIScreen mainScreen] applicationFrame];
self.viewController.view.frame = bounds;
}
_statusBarBackgroundView.hidden = NO;
}
}
-(void)resizeWebView {
CGRect bounds = [[UIScreen mainScreen] bounds];
bounds = [self invertFrameIfNeeded:bounds orientation:self.viewController.interfaceOrientation];
if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
-(void)resizeWebView
{
BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
if (isIOS7) {
CGRect bounds = [[UIScreen mainScreen] bounds];
bounds = [self invertFrameIfNeeded:bounds];
if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
self.viewController.view.frame = bounds;
}
self.webView.frame = bounds;
if (!self.statusBarOverlaysWebView) {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
CGRect frame = self.webView.frame;
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
self.webView.frame = frame;
}
} else {
CGRect bounds = [[UIScreen mainScreen] applicationFrame];
self.viewController.view.frame = bounds;
}
self.webView.frame = bounds;
if (!self.statusBarOverlaysWebView) {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
CGRect frame = self.webView.frame;
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
self.webView.frame = frame;
}
}
- (void) dealloc
{
[[UIApplication sharedApplication] removeObserver:self forKeyPath:@"statusBarHidden"];
[[NSNotificationCenter defaultCenter] removeObserver:self forKeyPath:UIApplicationDidChangeStatusBarFrameNotification];
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIApplicationDidChangeStatusBarOrientationNotification object:nil];
}
+13 -9
View File
@@ -18,16 +18,18 @@
*
*/
var _supported = null; // set to null so we can check first time
/* global Windows */
function isSupported() {
// if not checked before, run check
if (_supported == null) {
var _supported = null; // set to null so we can check first time
function isSupported() {
// if not checked before, run check
if (_supported === null) {
var viewMan = Windows.UI.ViewManagement;
_supported = (viewMan.StatusBar && viewMan.StatusBar.getForCurrentView);
}
return _supported;
}
}
function getViewStatusBar() {
if (!isSupported()) {
@@ -53,9 +55,11 @@ function hexToRgb(hex) {
module.exports = {
_ready: function(win, fail) {
win(statusBar.occludedRect.height !== 0);
if(isSupported()) {
var statusBar = getViewStatusBar();
win(statusBar.occludedRect.height !== 0);
}
},
overlaysWebView: function () {
// not supported
},
@@ -94,14 +98,14 @@ module.exports = {
},
show: function (win, fail) {
// added support check so no error thrown, when calling this method
// added support check so no error thrown, when calling this method
if (isSupported()) {
getViewStatusBar().showAsync().done(win, fail);
}
},
hide: function (win, fail) {
// added support check so no error thrown, when calling this method
// added support check so no error thrown, when calling this method
if (isSupported()) {
getViewStatusBar().hideAsync().done(win, fail);
}
+1 -1
View File
@@ -22,7 +22,7 @@
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="cordova-plugin-statusbar-tests"
version="2.0.0">
version="2.1.2">
<name>Cordova StatusBar Plugin Tests</name>
<license>Apache 2.0</license>
+3
View File
@@ -19,6 +19,9 @@
*
*/
/* jshint jasmine: true */
/* global StatusBar */
exports.defineAutoTests = function () {
describe("StatusBar", function () {
it("statusbar.spec.1 should exist", function() {
+13 -9
View File
@@ -19,6 +19,8 @@
*
*/
/* global cordova */
var exec = require('cordova/exec');
var namedColors = {
@@ -95,15 +97,17 @@ var StatusBar = {
};
// prime it
exec(function (res) {
if (typeof res == 'object') {
if (res.type == 'tap') {
cordova.fireWindowEvent('statusTap');
// prime it. setTimeout so that proxy gets time to init
window.setTimeout(function () {
exec(function (res) {
if (typeof res == 'object') {
if (res.type == 'tap') {
cordova.fireWindowEvent('statusTap');
}
} else {
StatusBar.isVisible = res;
}
} else {
StatusBar.isVisible = res;
}
}, null, "StatusBar", "_ready", []);
}, null, "StatusBar", "_ready", []);
}, 0);
module.exports = StatusBar;