Compare commits

...
24 Commits
Author SHA1 Message Date
Steve Gill e445123e4c CB-8110 Updated version and RELEASENOTES.md for release 0.1.9 2014-12-02 16:07:02 -08:00
Andrew Grieve 3bc16d942b Fix onload attribute within <feature> to be a <param>
This syntax worked on iOS, but not Android.
2014-11-27 14:51:49 -05:00
Shazron Abdullah a96226a074 CB-8010 - Statusbar colour does not change to orange 2014-11-19 16:24:12 -08:00
Jesse MacFadyen c89fdd4617 added checks for running on windows when StatusBar is NOT available 2014-11-12 18:04:38 -08:00
Jesse MacFadyen 251e904492 rejiggered some stuff around 2014-11-12 14:53:44 -08:00
Jesse MacFadyen 7bc7c326c8 Renamed to proxy 2014-11-12 14:53:06 -08:00
Jesse MacFadyen 83978519ad Merge branch 'CB-7986' of https://github.com/MSOpenTech/cordova-plugin-statusbar 2014-11-12 14:27:13 -08:00
daserge a6344f14f9 CB-7986 Add cordova-plugin-statusbar support for Windows Phone 8.1
Added Windows Phone 8.1 support
Updated the documentation
2014-11-10 22:20:42 +03:00
Josh Soref 8685564ec1 CB-7977 Mention deviceready in plugin docs 2014-11-06 17:34:03 -05:00
Josh Soref 1e9d588101 CB-7979 Each plugin doc should have a ## Installation section 2014-11-06 17:33:46 -05:00
Josh Soref f1c76226e1 Inserting leading space after # for consistency 2014-11-06 17:13:34 -05:00
Shazron Abdullah 5658e7548c CB-7549 - (Re-fix) [StatusBar][iOS 8] Landscape issue (closes #15) 2014-10-06 14:43:12 -07:00
Victor Sosa 33674fffd3 CB-7700 cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar 2014-10-02 18:13:25 -05:00
Marcel Kinard 68d5508539 CB-7571 Bump version of nested plugin to match parent plugin 2014-09-17 16:27:18 -04:00
Marcel Kinard 6481e0fc8a CB-7571 Incremented plugin version. 2014-09-17 15:35:02 -04:00
Marcel Kinard 6cce513237 CB-7571 Updated version and RELEASENOTES.md for release 0.1.8 2014-09-17 15:27:44 -04:00
twomzandShazron Abdullah 921daccd2c CB-7549 - [StatusBar][iOS 8] Landscape issue
When starting an app in landscape mode in ios 8 and then calling StatusBar.overlaysWebView(false), the screen would be pushed down all the way.  Changing the orientation did not fix the issue, leaving the page pushed down the width of the device.

We found that excluding the changes above in ios 8 fixed the issue, although it's possible that this is hiding a landscape orientation bug in ios 8 that may get fixed later.

Signed-off-by: Shazron Abdullah <shazron@apache.org>
2014-09-16 16:40:15 -07:00
SayreBladesandShazron Abdullah 61024e50b3 CB-7486 - Remove StatusBarBackgroundColor intial preference (black background) so background will be initially transparent
This should not be a default ios setting:
<preference name="StatusBarBackgroundColor" value="#000000" />
It makes it impossible to unset the initial background color (for transparent backgrounds).  Instead just have the default as no background color (which will effectively be transparent), and then allow users to override that with a desired color.

Signed-off-by: Shazron Abdullah <shazron@apache.org>
2014-09-15 15:58:34 -07:00
Edna Morales 03fbd9dedf Merge renamed tests dir 2014-08-13 13:27:10 -04:00
Jesse MacFadyen d109b7ade7 Merge branch 'CB-7195' of https://github.com/stacic/cordova-plugin-statusbar 2014-08-07 13:40:41 -07:00
Steven Gill c4638c8583 CB-7244 Incremented plugin version. 2014-08-06 19:24:29 -07:00
Staci Cooper 32fca02faa Renamed test dir, added nested plugin.xml 2014-08-01 16:39:12 -04:00
Edna Morales 0d52e1bf10 added documentation for manual tests, moved background color test below overlay test 2014-07-29 11:53:53 -04:00
Staci Cooper 83697e52ef CB-7195 ported statusbar tests to framework 2014-07-24 15:40:31 -04:00
10 changed files with 315 additions and 31 deletions
+19
View File
@@ -44,3 +44,22 @@
* ios: Fix hide to adjust webview's frame only when status bar is not overlaying webview
* CB-6127 Updated translations for docs
* android: Fix StatusBar.initialize() not running on UI thread
### 0.1.8 (Sep 17, 2014)
* CB-7549 [StatusBar][iOS 8] Landscape issue
* CB-7486 Remove StatusBarBackgroundColor intial preference (black background) so background will be initially transparent
* Renamed test dir, added nested plugin.xml
* added documentation for manual tests, moved background color test below overlay test
* CB-7195 ported statusbar tests to framework
### 0.1.9 (Dec 02, 2014)
* Fix onload attribute within <feature> to be a <param>
* CB-8010 - Statusbar colour does not change to orange
* added checks for running on windows when StatusBar is NOT available
* CB-7986 Add cordova-plugin-statusbar support for **Windows Phone 8.1**
* CB-7977 Mention `deviceready` in plugin docs
* CB-7979 Each plugin doc should have a ## Installation section
* Inserting leading space after # for consistency
* CB-7549 - (Re-fix) `StatusBar` **iOS 8** Landscape issue (closes #15)
* CB-7700 cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* CB-7571 Bump version of nested plugin to match parent plugin
+1 -1
View File
@@ -94,7 +94,7 @@ Auf iOS 7 zu der Statusbar wie iOS 6 erscheinen auf False festgelegt. Legen Sie
* iOS
## Kleines Beispiel
## Kurzes Beispiel
StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);
+22 -1
View File
@@ -16,7 +16,7 @@
specific language governing permissions and limitations
under the License.
-->
#org.apache.cordova.statusbar
# org.apache.cordova.statusbar
StatusBar
======
@@ -24,6 +24,10 @@ StatusBar
> The `StatusBar` object provides some functions to customize the iOS and Android StatusBar.
## Installation
cordova plugin add org.apache.cordova.statusbar
Preferences
-----------
@@ -57,6 +61,14 @@ Add/edit these two attributes if not present. Set **"Status bar is initially hid
Methods
-------
This plugin defines global `StatusBar` object.
Although in the global scope, it is not available until after the `deviceready` event.
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
console.log(StatusBar);
}
- StatusBar.overlaysWebView
- StatusBar.styleDefault
@@ -120,6 +132,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.styleLightContent
=================
@@ -135,6 +148,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.styleBlackTranslucent
=================
@@ -150,6 +164,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.styleBlackOpaque
=================
@@ -165,6 +180,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.backgroundColorByName
@@ -185,6 +201,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.backgroundColorByHexString
=================
@@ -208,6 +225,7 @@ Supported Platforms
- iOS
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.hide
=================
@@ -224,6 +242,7 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.show
=================
@@ -240,6 +259,7 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
StatusBar.isVisible
@@ -259,5 +279,6 @@ Supported Platforms
- Android
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
+2 -2
View File
@@ -66,7 +66,7 @@
* StatusBar.hide
* StatusBar.show
## Свойства
## Параметры
* StatusBar.isVisible
@@ -94,7 +94,7 @@
* iOS
## Быстрый пример
## Краткий пример
StatusBar.overlaysWebView(true);
StatusBar.overlaysWebView(false);
+11 -4
View File
@@ -22,7 +22,7 @@
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="org.apache.cordova.statusbar"
version="0.1.7">
version="0.1.9">
<name>StatusBar</name>
<description>Cordova StatusBar Plugin</description>
<license>Apache 2.0</license>
@@ -41,7 +41,8 @@
<config-file target="res/xml/config.xml" parent="/*">
<feature name="StatusBar">
<param name="android-package" value="org.apache.cordova.statusbar.StatusBar" onload="true" />
<param name="android-package" value="org.apache.cordova.statusbar.StatusBar" />
<param name="onload" value="true" />
</feature>
</config-file>
</platform>
@@ -51,10 +52,10 @@
<config-file target="config.xml" parent="/*">
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true" />
<param name="ios-package" value="CDVStatusBar" />
<param name="onload" value="true" />
</feature>
<preference name="StatusBarOverlaysWebView" value="true" />
<preference name="StatusBarBackgroundColor" value="#000000" />
<preference name="StatusBarStyle" value="lightcontent" />
</config-file>
@@ -83,4 +84,10 @@
<source-file src="src/wp/StatusBar.cs" />
</platform>
<!-- windows -->
<platform name="windows">
<js-module src="src/windows/StatusBarProxy.js" name="StatusBarProxy">
<runs />
</js-module>
</platform>
</plugin>
+21 -22
View File
@@ -168,10 +168,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) initializeStatusBarBackgroundView
{
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
// swap width and height. set origin to zero
statusBarFrame = CGRectMake(0, 0, statusBarFrame.size.height, statusBarFrame.size.width);
}
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
_statusBarBackgroundView = [[UIView alloc] initWithFrame:statusBarFrame];
_statusBarBackgroundView.backgroundColor = _statusBarBackgroundColor;
@@ -179,6 +176,19 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
_statusBarBackgroundView.autoresizesSubviews = YES;
}
- (CGRect) invertFrameIfNeeded:(CGRect)rect orientation:(UIInterfaceOrientation)orientation {
// landscape is where (width > height). On iOS < 8, we need to invert since frames are
// always in Portrait context
if (UIDeviceOrientationIsLandscape(orientation) && (rect.size.width < rect.size.height) ) {
CGFloat temp = rect.size.width;
rect.size.width = rect.size.height;
rect.size.height = temp;
rect.origin = CGPointZero;
}
return rect;
}
- (void) setStatusBarOverlaysWebView:(BOOL)statusBarOverlaysWebView
{
// we only care about the latest iOS version or a change in setting
@@ -200,18 +210,13 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
} else {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
[self initializeStatusBarBackgroundView];
CGRect frame = self.webView.frame;
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
frame.origin.y = statusBarFrame.size.width;
frame.size.height -= statusBarFrame.size.width;
} else {
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
}
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
self.webView.frame = frame;
[self.webView.superview addSubview:_statusBarBackgroundView];
@@ -408,6 +413,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
self.viewController.view.frame = [[UIScreen mainScreen] bounds];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
if (!self.statusBarOverlaysWebView) {
@@ -415,16 +421,9 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
// from the current one. Therefore we need to expand the statusBarBackgroundView as well to the
// statusBar's current size
CGRect sbBgFrame = _statusBarBackgroundView.frame;
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
frame.origin.y = statusBarFrame.size.width;
frame.size.height -= statusBarFrame.size.width;
sbBgFrame.size = CGSizeMake(statusBarFrame.size.height, statusBarFrame.size.width);
} else {
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
sbBgFrame.size = statusBarFrame.size;
}
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
sbBgFrame.size = statusBarFrame.size;
_statusBarBackgroundView.frame = sbBgFrame;
[self.webView.superview addSubview:_statusBarBackgroundView];
+100
View File
@@ -0,0 +1,100 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
var isSupported = true; // we assume
function getViewStatusBar() {
if(isSupported) {
var ViewMan = Windows.UI.ViewManagement; // quick alias to save char
if( ViewMan.StatusBar &&
ViewMan.StatusBar.getForCurrentView ) {
return ViewMan.StatusBar.getForCurrentView();
}
else {
isSupported = false; // so we won't check again
}
}
return null;
}
function hexToRgb(hex) {
// Expand shorthand form (e.g. "03F") to full form (e.g. "0033FF")
var shorthandRegex = /^#?([a-f\d])([a-f\d])([a-f\d])$/i;
hex = hex.replace(shorthandRegex, function (m, r, g, b) {
return r + r + g + g + b + b;
});
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
module.exports = {
_ready: function(win, fail) {
win(statusBar.occludedRect.height !== 0);
},
overlaysWebView: function () {
// not supported
},
styleDefault: function () {
// dark text ( to be used on a light background )
getViewStatusBar().foregroundColor = { a: 0, r: 0, g: 0, b: 0 };
},
styleLightContent: function () {
// light text ( to be used on a dark background )
getViewStatusBar().foregroundColor = { a: 0, r: 255, g: 255, b: 255 };
},
styleBlackTranslucent: function () {
// #88000000 ? Apple says to use lightContent instead
return this.styleLightContent();
},
styleBlackOpaque: function () {
// #FF000000 ? Apple says to use lightContent instead
return this.styleLightContent();
},
backgroundColorByHexString: function (win, fail, args) {
var rgb = hexToRgb(args[0]);
var statusBar = getViewStatusBar();
if(statusBar) {
statusBar.backgroundColor = { a: 0, r: rgb.r, g: rgb.g, b: rgb.b };
statusBar.backgroundOpacity = 1;
}
},
show: function (win, fail) {
getViewStatusBar().showAsync().done(win, fail);
},
hide: function (win, fail) {
getViewStatusBar().hideAsync().done(win, fail);
}
};
require("cordova/exec/proxy").add("StatusBar", module.exports);
+31
View File
@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0"
xmlns:rim="http://www.blackberry.com/ns/widgets"
xmlns:android="http://schemas.android.com/apk/res/android"
id="org.apache.cordova.statusbar.tests"
version="0.1.9">
<name>Cordova StatusBar Plugin Tests</name>
<license>Apache 2.0</license>
<js-module src="tests.js" name="tests">
</js-module>
</plugin>
+107
View File
@@ -0,0 +1,107 @@
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
exports.defineManualTests = function (contentEl, createActionButton) {
function log(msg) {
var el = document.getElementById("info");
var logLine = document.createElement('div');
logLine.innerHTML = msg;
el.appendChild(logLine);
}
function doShow() {
StatusBar.show();
log('StatusBar.isVisible=' + StatusBar.isVisible);
}
function doHide() {
StatusBar.hide();
log('StatusBar.isVisible=' + StatusBar.isVisible);
}
function doColor1() {
log('set color=red');
StatusBar.backgroundColorByName('red');
}
function doColor2() {
log('set style=translucent black');
StatusBar.styleBlackTranslucent();
}
function doColor3() {
log('set style=default');
StatusBar.styleDefault();
}
var showOverlay = true;
function doOverlay() {
showOverlay = !showOverlay;
StatusBar.overlaysWebView(showOverlay);
log('Set overlay=' + showOverlay);
}
/******************************************************************************/
contentEl.innerHTML = '<div id="info"></div>' +
'Also: tapping bar on iOS should emit a log.' +
'<div id="action-show"></div>' +
'Expected result: Status bar will be visible' +
'</p> <div id="action-hide"></div>' +
'Expected result: Status bar will be hidden' +
'</p> <div id="action-color2"></div>' +
'Expected result: Status bar text will be a light (white) color' +
'</p> <div id="action-color3"></div>' +
'Expected result: Status bar text will be a dark (black) color' +
'</p> <div id="action-overlays"></div>' +
'Expected result:<br>Overlay true = status bar will lay on top of web view content<br>Overlay false = status bar will be separate from web view and will not cover content' +
'</p> <div id="action-color1"></div>' +
'Expected result: If overlay false, background color for status bar will be red';
log('StatusBar.isVisible=' + StatusBar.isVisible);
window.addEventListener('statusTap', function () {
log('tap!');
}, false);
createActionButton("Show", function () {
doShow();
}, 'action-show');
createActionButton("Hide", function () {
doHide();
}, 'action-hide');
createActionButton("Style=red (background)", function () {
doColor1();
}, 'action-color1');
createActionButton("Style=translucent black", function () {
doColor2();
}, 'action-color2');
createActionButton("Style=default", function () {
doColor3();
}, 'action-color3');
createActionButton("Toggle Overlays", function () {
doOverlay();
}, 'action-overlays');
};
+1 -1
View File
@@ -33,7 +33,7 @@ var namedColors = {
"cyan": "#00FFFF",
"yellow": "#FFFF00",
"magenta": "#FF00FF",
"orange": "##FFA500",
"orange": "#FFA500",
"purple": "#800080",
"brown": "#A52A2A"
};