Compare commits

...
60 Commits
Author SHA1 Message Date
Steve Gill fbc4862dbd CB-14030 Updated version and RELEASENOTES.md for release 2.4.2 (via coho) 2018-04-12 17:06:22 -07:00
jcesarmobileandGitHub 4c1507b525 Merge pull request #95 from jcesarmobile/CB-12679
CB-12679: Remove Permissions section
2018-01-12 10:55:33 +01:00
Julio César 62e8a187c1 CB-12679: Remove Permissions section 2018-01-11 23:13:12 +01:00
jcesarmobileandGitHub e3138a9f08 Merge pull request #94 from jcesarmobile/CB-13754
CB-13754: Add build-tools-26.0.2 to travis
2018-01-10 23:45:04 +01:00
Julio César f1407e7ae5 CB-13754: Add build-tools-26.0.2 to travis 2018-01-10 00:19:36 +01:00
jcesarmobileandSimon MacDonald 70a421bd25 Fix release notes (#93) 2017-12-30 00:55:27 -05:00
Simon MacDonald bca70c21e9 Set VERSION to 2.4.2-dev (via coho) 2017-12-27 19:13:50 -05:00
Simon MacDonald 4988b6fec3 CB-13714 Updated version and RELEASENOTES.md for release 2.4.1 (via coho) 2017-12-27 19:13:36 -05:00
jcesarmobileandSimon MacDonald 8da38f5075 CB-13712 (iOS): fix overlaysWebView reset on rotation (#92) 2017-12-27 10:43:58 -05:00
Steve Gill 6352d80a96 Set VERSION to 2.4.1-dev (via coho) 2017-12-15 17:26:45 -08:00
Steve Gill caf2ae6605 CB-13681 Updated version and RELEASENOTES.md for release 2.4.0 (via coho) 2017-12-15 17:25:13 -08:00
Steve GillandGitHub 3d614115b8 Merge pull request #91 from jcesarmobile/CB-13623
CB-13623 (iOS): Remove iOS 6-7 code
2017-12-15 16:29:02 -08:00
Julio César 9a976a9744 CB-13623 (iOS): Remove iOS 6-7 code 2017-12-01 00:30:35 +01:00
Steve Gill 611169c89f Set VERSION to 2.3.1-dev (via coho) 2017-11-06 14:38:40 -08:00
Steve Gill 655f6cb1da CB-13542 Updated version and RELEASENOTES.md for release 2.3.0 (via coho) 2017-11-06 14:37:46 -08:00
jcesarmobileandGitHub 4642be07a6 Merge pull request #83 from lunaru/master
CB-13124: Add option for native scroll-to-top on WebView
2017-11-02 23:54:26 +01:00
Lu Wang e41c06334e Merge branch 'master' of https://github.com/apache/cordova-plugin-statusbar 2017-10-25 11:00:51 -07:00
Julio Cesar Sanchez Hernandez c45331b955 CB-13476 (iOS): handle double size statusbar on SDK 10 for iOS 11
This closes #90
2017-10-21 00:05:08 +02:00
Julio César cdc9295b30 CB-13394 (iOS): fix iPhone X StatusBar rendering in landscape
This closes #89 and closes #88
2017-10-20 12:04:38 +02:00
Alexander Sorokin 049ac41dad CB-13473: (CI) Removed browser builds from AppVeyor 2017-10-20 10:23:31 +03:00
Alexander Sorokin 241d30fff5 CB-13472: (CI) Fixed Travis Android builds again 2017-10-20 08:59:30 +03:00
Joe Bowser ca3da118f0 This closes #51 2017-10-12 13:27:20 -07:00
Joe Bowser b03a8313ef Merge branch 'CB-11858' of github.com:urmx/cordova-plugin-statusbar
This closes #78
2017-10-12 13:25:12 -07:00
Joe Bowser 08127bf674 This closes #64 2017-10-10 14:38:32 -07:00
jcesarmobile fff289c0b8 CB-13311: (iOS) Statusbar does not overlay correctly on iPhone X
This closes #87
2017-09-22 20:21:33 +02:00
Alexander Sorokin ef5fb5b9e6 CB-13299 (CI) Fix Android builds 2017-09-19 09:07:13 +03:00
Alexander Sorokin 267ebad1be CB-13028 (CI) Browser builds on Travis and AppVeyor 2017-07-28 15:11:35 +03:00
Jan Piotrowskiandfilmaj 70468157c5 Fix issue tracker link - closes #82 2017-07-27 13:47:24 -07:00
Lu WangandLu Wang b204d2747d Add preference for native scroll to top
- As described in https://issues.apache.org/jira/browse/CB-13124
2017-07-26 17:48:37 -07:00
Alexander Sorokin 1bb250788e CB-13000: (CI) Speed up android builds 2017-07-10 10:35:05 +03:00
Alexander Sorokin 2cd86e63ac CB-12991: (CI) Updated CI badges 2017-07-07 11:38:40 +03:00
Alexander Sorokin 1ae18933d5 CB-12935: (windows) Enable paramedic builds on AppVeyor 2017-06-30 09:32:32 +03:00
Alexander Sorokin 0364d4a4f9 CB-12935: (ios, android) Enable paramedic builds on Travis CI 2017-06-27 09:06:11 +03:00
Max Ruman 3d8cff14bd Merge branch 'master' of https://github.com/apache/cordova-plugin-statusbar 2017-06-22 23:02:36 +02:00
imgx64 92fff60cc7 CB-12812: (browser) Fix statusbar plugin with browser platform 2017-06-07 08:16:32 +03:00
filmaj 0a3dadfdb0 CB-12847: added bugs entry to package.json. 2017-05-25 19:05:08 +02:00
filmaj 0285cf0a21 Set VERSION to 2.2.4-dev (via coho) 2017-04-27 13:07:50 -07:00
filmaj 77a6ae5dfe CB-12736 Updated version and RELEASENOTES.md for release 2.2.3 (via coho) 2017-04-27 13:07:47 -07:00
Alexander Sorokin ecf61e7800 CB-12622 Added Android 6.0 build badge to README 2017-04-26 16:34:23 +03:00
Andrea LazzarottoandJoe Bowser 3f552ed734 CB-10879: Enable overlaysWebView on Android API 21+
This closes #77

This patch enables devices running Android API 21+ to have the status bar overlaying the WebView, i.e. `StatusBar.overlaysWebView(true)`. It lets any Android version call `StatusBar.overlaysWebView(false)` to disable the overlay, which is actually the default behavior on that platform.
2017-04-25 12:05:23 -07:00
Steve Gill d980145c98 CB-12685: added package.json to tests folder 2017-04-21 19:27:17 -07:00
Max Ruman dd879140c4 CB-11858: (android) Add StatusBarStyle feature support for Android M+ 2017-04-21 12:55:58 +02:00
Steve Gill 95eb824d0a Set VERSION to 2.2.3-dev (via coho) 2017-03-02 15:30:32 -08:00
Steve Gill cb1297b0ac CB-12519 Updated version and RELEASENOTES.md for release 2.2.2 2017-02-28 17:41:27 -08:00
olln3andSteve Gill 916cccc2c0 CB-12188 Status Bar is not changing in some specific android phone (Red MI 3s Prime)
This closes #76
2017-02-22 16:46:55 -08:00
Nikita MatrosovandVladimir Kotikov 995e4fdf9d CB-12369: Add plugin typings from DefinitelyTyped
This closes #75
2017-01-20 11:46:51 +03:00
Alexander Sorokin a204f69ffe CB-12363 Added build badges for iOS 9.3 and 10.0 2017-01-18 13:38:21 +03:00
Julio César fa57e92c55 CB-12196 (iOS) fix Status Bar Not Hiding
This closes #74
2016-12-29 00:01:19 +01:00
Julio César a120ba1a1f CB-12141 (ios) fix white app screen after camera overlay shown on iPad
This closes #73
2016-12-16 00:44:09 +01:00
Julio César 834b8cb5fb Closing invalid pull request: close #72 2016-12-16 00:03:03 +01:00
Shazron Abdullah d601f1a143 CB-12236 - Fixed RELEASENOTES for cordova-plugin-statusbar 2016-12-11 12:58:46 -08:00
Alexander Sorokin 59101557b7 CB-12230 Removed Windows 8.1 build badges 2016-12-09 13:56:46 +03:00
Shazron Abdullah a07c24fe78 CB-12224 Incremented plugin version. 2016-12-07 16:55:08 -08:00
Shazron Abdullah a50208bda2 CB-12224 Updated version and RELEASENOTES.md for release 2.2.1 2016-12-07 16:39:46 -08:00
Jonathan LiandJulio César 6bfc749f84 CB-10288 statusbar plugin interaction with iOS multitasking
This closes #62
2016-11-13 23:14:11 +01:00
Julio Cesar Sanchez Hernandez b7dc5ef7cb CB-10158 (ios) fix StatusBar issue when recovering from fullscreen video
This closes #70
2016-10-30 17:48:37 +01:00
Julio Cesar Sanchez Hernandez 086234b881 CB-10341 ios, document statusTap event
This closes #69
2016-10-30 17:46:36 +01:00
Julio César 2c036c9c91 CB-11191: Statusbar plugin causing issues with webview size
This closes #65
2016-10-29 00:10:20 +02:00
Shazron AbdullahandShazron Abdullah 940a8ee920 CB-11917 - Remove pull request template checklist item: "iCLA has been submitted…"
This closes #66
2016-10-04 21:34:54 -07:00
Steve Gill 53d0b04ed6 CB-11832 Incremented plugin version. 2016-09-09 16:08:04 -07:00
14 changed files with 467 additions and 113 deletions
+28
View File
@@ -0,0 +1,28 @@
# appveyor file
# http://www.appveyor.com/docs/appveyor-yml
max_jobs: 1
shallow_clone: true
init:
- git config --global core.autocrlf true
image:
- Visual Studio 2017
environment:
nodejs_version: "4"
matrix:
- PLATFORM: windows-10-store
JUST_BUILD: --justBuild
install:
- npm cache clean -f
- node --version
- npm install -g cordova-paramedic@https://github.com/apache/cordova-paramedic.git
- npm install -g cordova
build: off
test_script:
- cordova-paramedic --config pr\%PLATFORM% --plugin . %JUST_BUILD%
-1
View File
@@ -17,7 +17,6 @@ Thanks!
### Checklist
- [ ] [ICLA](http://www.apache.org/licenses/icla.txt) has been signed and submitted to secretary@apache.org.
- [ ] [Reported an issue](http://cordova.apache.org/contribute/issues.html) in the JIRA database
- [ ] Commit message follows the format: "CB-3232: (android) Fix bug with resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform affected.
- [ ] Added automated test coverage as appropriate for this change.
+85 -3
View File
@@ -1,4 +1,86 @@
language: node_js
sudo: false
node_js:
- "4.2"
addons:
jwt:
secure: Rd/wGSUWGWbc0Y/vqPgI29nybq+j/zWilEIOCBJeRQVwfubdbJNZUIb5DFlSSVzMEavkxZ0PYJ45h21iXyWo3aOoxUJwhkO7QZNzW2MsYzy9qpiKK1jOESXMrpboRWoxg+BL85YbaDF3u1XRy+Xm1nraStT6mDfx5LlUG1Lac6A=
env:
global:
- SAUCE_USERNAME=snay
- TRAVIS_NODE_VERSION="4.2"
matrix:
include:
- env: PLATFORM=browser-chrome
os: linux
language: node_js
node_js: '4.2'
- env: PLATFORM=browser-firefox
os: linux
language: node_js
node_js: '4.2'
- env: PLATFORM=browser-safari
os: linux
language: node_js
node_js: '4.2'
- env: PLATFORM=browser-edge
os: linux
language: node_js
node_js: '4.2'
- env: PLATFORM=ios-9.3
os: osx
osx_image: xcode7.3
language: node_js
node_js: '4.2'
- env: PLATFORM=ios-10.0
os: osx
osx_image: xcode7.3
language: node_js
node_js: '4.2'
- env: PLATFORM=android-4.4
os: linux
language: android
jdk: oraclejdk8
android:
components:
- tools
- build-tools-26.0.2
- env: PLATFORM=android-5.1
os: linux
language: android
jdk: oraclejdk8
android:
components:
- tools
- build-tools-26.0.2
- env: PLATFORM=android-6.0
os: linux
language: android
jdk: oraclejdk8
android:
components:
- tools
- build-tools-26.0.2
- env: PLATFORM=android-7.0
os: linux
language: android
jdk: oraclejdk8
android:
components:
- tools
- build-tools-26.0.2
before_install:
- rm -rf ~/.nvm && git clone https://github.com/creationix/nvm.git ~/.nvm && (cd ~/.nvm
&& git checkout `git describe --abbrev=0 --tags`) && source ~/.nvm/nvm.sh && nvm
install $TRAVIS_NODE_VERSION
- node --version
- if [[ "$PLATFORM" =~ android ]]; then gradle --version; fi
- if [[ "$PLATFORM" =~ ios ]]; then npm install -g ios-deploy; fi
- if [[ "$PLATFORM" =~ android ]]; then echo y | android update sdk -u --filter android-22,android-23,android-24,android-25,android-26;
fi
- git clone https://github.com/apache/cordova-paramedic /tmp/paramedic && pushd /tmp/paramedic
&& npm install && popd
- npm install -g cordova
install:
- npm install
script:
- npm test
- node /tmp/paramedic/main.js --config pr/$PLATFORM --plugin $(pwd) --shouldUseSauce
--buildName travis-plugin-statusbar-$TRAVIS_JOB_NUMBER
+31 -11
View File
@@ -21,9 +21,9 @@ description: Control the device status bar.
# under the License.
-->
|Android|iOS| Windows 8.1 Store | Windows 8.1 Phone | Windows 10 Store | Travis CI |
|:-:|:-:|:-:|:-:|:-:|:-:|
|[![Build Status](http://cordova-ci.cloudapp.net:8080/buildStatus/icon?job=cordova-periodic-build/PLATFORM=android,PLUGIN=cordova-plugin-statusbar)](http://cordova-ci.cloudapp.net:8080/job/cordova-periodic-build/PLATFORM=android,PLUGIN=cordova-plugin-statusbar/)|[![Build Status](http://cordova-ci.cloudapp.net:8080/buildStatus/icon?job=cordova-periodic-build/PLATFORM=ios,PLUGIN=cordova-plugin-statusbar)](http://cordova-ci.cloudapp.net:8080/job/cordova-periodic-build/PLATFORM=ios,PLUGIN=cordova-plugin-statusbar/)|[![Build Status](http://cordova-ci.cloudapp.net:8080/buildStatus/icon?job=cordova-periodic-build/PLATFORM=windows-8.1-store,PLUGIN=cordova-plugin-statusbar)](http://cordova-ci.cloudapp.net:8080/job/cordova-periodic-build/PLATFORM=windows-8.1-store,PLUGIN=cordova-plugin-statusbar/)|[![Build Status](http://cordova-ci.cloudapp.net:8080/buildStatus/icon?job=cordova-periodic-build/PLATFORM=windows-8.1-phone,PLUGIN=cordova-plugin-statusbar)](http://cordova-ci.cloudapp.net:8080/job/cordova-periodic-build/PLATFORM=windows-8.1-phone,PLUGIN=cordova-plugin-statusbar/)|[![Build Status](http://cordova-ci.cloudapp.net:8080/buildStatus/icon?job=cordova-periodic-build/PLATFORM=windows-10-store,PLUGIN=cordova-plugin-statusbar)](http://cordova-ci.cloudapp.net:8080/job/cordova-periodic-build/PLATFORM=windows-10-store,PLUGIN=cordova-plugin-statusbar/)|[![Build Status](https://travis-ci.org/apache/cordova-plugin-statusbar.svg?branch=master)](https://travis-ci.org/apache/cordova-plugin-statusbar)|
|AppVeyor|Travis CI|
|:-:|:-:|
|[![Build status](https://ci.appveyor.com/api/projects/status/github/apache/cordova-plugin-statusbar?branch=master)](https://ci.appveyor.com/project/ApacheSoftwareFoundation/cordova-plugin-statusbar)|[![Build Status](https://travis-ci.org/apache/cordova-plugin-statusbar.svg?branch=master)](https://travis-ci.org/apache/cordova-plugin-statusbar)|
# cordova-plugin-statusbar
@@ -32,7 +32,7 @@ StatusBar
> The `StatusBar` object provides some functions to customize the iOS and Android StatusBar.
:warning: Report issues on the [Apache Cordova issue tracker](https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20in%20%28Open%2C%20%22In%20Progress%22%2C%20Reopened%29%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20%22Plugin%20Statusbar%22%20ORDER%20BY%20priority%20DESC%2C%20summary%20ASC%2C%20updatedDate%20DESC)
:warning: Report issues on the [Apache Cordova issue tracker](https://issues.apache.org/jira/issues/?jql=project%20%3D%20CB%20AND%20status%20in%20(Open%2C%20%22In%20Progress%22%2C%20Reopened)%20AND%20resolution%20%3D%20Unresolved%20AND%20component%20%3D%20%22cordova-plugin-statusbar%22%20ORDER%20BY%20priority%20DESC%2C%20summary%20ASC%2C%20updatedDate%20DESC)
## Installation
@@ -65,6 +65,10 @@ Preferences
<preference name="StatusBarStyle" value="lightcontent" />
- __StatusBarDefaultScrollToTop__ (boolean, defaults to false). On iOS 7, allows the Cordova WebView to use default scroll-to-top behavior. Defaults to false so you can listen to the "statusTap" event (described below) and customize the behavior instead.
<preference name="StatusBarDefaultScrollToTop" value="false" />
### Android Quirks
The Android 5+ guidelines specify using a different color for the statusbar than your main app color (unlike the uniform statusbar color of many iOS 7+ apps), so you may want to set the statusbar color at runtime instead via `StatusBar.backgroundColorByHexString` or `StatusBar.backgroundColorByName`. One way to do that would be:
```js
@@ -113,14 +117,10 @@ Properties
- StatusBar.isVisible
Permissions
-----------
Events
------
#### config.xml
<feature name="StatusBar">
<param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>
- statusTap
StatusBar.overlaysWebView
=================
@@ -158,6 +158,7 @@ Supported Platforms
-------------------
- iOS
- Android 6+
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
@@ -174,6 +175,7 @@ Supported Platforms
-------------------
- iOS
- Android 6+
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
@@ -190,6 +192,7 @@ Supported Platforms
-------------------
- iOS
- Android 6+
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
@@ -206,6 +209,7 @@ Supported Platforms
-------------------
- iOS
- Android 6+
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
@@ -310,3 +314,19 @@ Supported Platforms
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
statusTap
=========
Listen for this event to know if the statusbar was tapped.
window.addEventListener('statusTap', function() {
// scroll-up with document.body.scrollTop = 0; or do whatever you want
});
Supported Platforms
-------------------
- iOS
+41 -1
View File
@@ -20,6 +20,46 @@
-->
# Release Notes
### 2.4.2 (Apr 12, 2018)
* [CB-12679](https://issues.apache.org/jira/browse/CB-12679) Remove Permissions section
### 2.4.1 (Dec 27, 2017)
* [CB-13712](https://issues.apache.org/jira/browse/CB-13712) (iOS): fix overlaysWebView reset on rotation (#92)
### 2.4.0 (Dec 15, 2017)
* [CB-13623](https://issues.apache.org/jira/browse/CB-13623) (iOS): Remove **iOS** 6-7 code
### 2.3.0 (Nov 06, 2017)
* [CB-13476](https://issues.apache.org/jira/browse/CB-13476) (iOS): handle double size statusbar on SDK 10 for **iOS 11**
* [CB-13394](https://issues.apache.org/jira/browse/CB-13394) (iOS): fix `iPhone X` StatusBar rendering in landscape
* [CB-11858](https://issues.apache.org/jira/browse/CB-11858) (android) Add `StatusBarStyle` feature support for **Android M+**
* [CB-13311](https://issues.apache.org/jira/browse/CB-13311) (iOS) Statusbar does not overlay correctly on `iPhone X`
* [CB-13028](https://issues.apache.org/jira/browse/CB-13028) (CI) **Browser** builds on Travis and AppVeyor
* [CB-12812](https://issues.apache.org/jira/browse/CB-12812) (browser) Fix statusbar plugin with **Browser** platform
* [CB-12847](https://issues.apache.org/jira/browse/CB-12847) added `bugs` entry to `package.json`.
### 2.2.3 (Apr 27, 2017)
* [CB-12622](https://issues.apache.org/jira/browse/CB-12622) Added **Android 6.0** build badge to `README`
* [CB-10879](https://issues.apache.org/jira/browse/CB-10879) Enable overlaysWebView on **Android** API 21+
* [CB-12685](https://issues.apache.org/jira/browse/CB-12685) added `package.json` to tests folder
### 2.2.2 (Feb 28, 2017)
* [CB-12188](https://issues.apache.org/jira/browse/CB-12188) Status Bar is not changing in some specific **Android** phone (Red MI 3s Prime)
* [CB-12369](https://issues.apache.org/jira/browse/CB-12369) Add plugin typings from `DefinitelyTyped`
* [CB-12363](https://issues.apache.org/jira/browse/CB-12363) Added build badges for **iOS 9.3** and **iOS 10.0**
* [CB-12196](https://issues.apache.org/jira/browse/CB-12196) **iOS** fix Status Bar Not Hiding
* [CB-12141](https://issues.apache.org/jira/browse/CB-12141) **iOS** fix white app screen after camera overlay shown on iPad
* [CB-12230](https://issues.apache.org/jira/browse/CB-12230) Removed **Windows 8.1** build badges
### 2.2.1 (Dec 07, 2016)
* [CB-12224](https://issues.apache.org/jira/browse/CB-12224) Updated version and RELEASENOTES.md for release 2.2.1
* [CB-10288](https://issues.apache.org/jira/browse/CB-10288) statusbar plugin interaction with iOS multitasking
* [CB-10158](https://issues.apache.org/jira/browse/CB-10158) (ios) fix StatusBar issue when recovering from fullscreen video
* [CB-10341](https://issues.apache.org/jira/browse/CB-10341) ios, document statusTap event
* [CB-11191](https://issues.apache.org/jira/browse/CB-11191) Statusbar plugin causing issues with webview size
* [CB-11917](https://issues.apache.org/jira/browse/CB-11917) - Remove pull request template checklist item: "iCLA has been submitted…"
* [CB-11832](https://issues.apache.org/jira/browse/CB-11832) Incremented plugin version.
### 2.2.0 (Sep 08, 2016)
* [CB-11795](https://issues.apache.org/jira/browse/CB-11795) Add 'protective' entry to cordovaDependencies
* Handle extended status bar on **iOS**
@@ -66,7 +106,7 @@
### 1.0.1 (Jun 17, 2015)
* add auto-tests for basic api
* [CB-9180](https://issues.apache.org/jira/browse/CB-9180) Add correct supported check for Windows 8.1 desktop
* [CB-9180](https://issues.apache.org/jira/browse/CB-9180) Add correct supported check for **Windows 8.1** desktop
* [CB-9128](https://issues.apache.org/jira/browse/CB-9128) cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* fix npm md issue
+5 -1
View File
@@ -1,7 +1,8 @@
{
"name": "cordova-plugin-statusbar",
"version": "2.2.0",
"version": "2.4.2",
"description": "Cordova StatusBar Plugin",
"types": "./types/index.d.ts",
"cordova": {
"id": "cordova-plugin-statusbar",
"platforms": [
@@ -16,6 +17,9 @@
"type": "git",
"url": "https://github.com/apache/cordova-plugin-statusbar"
},
"bugs": {
"url": "https://issues.apache.org/jira/browse/CB"
},
"keywords": [
"cordova",
"statusbar",
+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"
version="2.2.0">
version="2.4.2">
<name>StatusBar</name>
<description>Cordova StatusBar Plugin</description>
<license>Apache 2.0</license>
+110 -1
View File
@@ -34,6 +34,7 @@ import org.apache.cordova.CordovaWebView;
import org.apache.cordova.LOG;
import org.apache.cordova.PluginResult;
import org.json.JSONException;
import java.util.Arrays;
public class StatusBar extends CordovaPlugin {
private static final String TAG = "StatusBar";
@@ -60,6 +61,9 @@ public class StatusBar extends CordovaPlugin {
// Read 'StatusBarBackgroundColor' from config.xml, default is #000000.
setStatusBarBackgroundColor(preferences.getString("StatusBarBackgroundColor", "#000000"));
// Read 'StatusBarStyle' from config.xml, default is 'lightcontent'.
setStatusBarStyle(preferences.getString("StatusBarStyle", "lightcontent"));
}
});
}
@@ -142,6 +146,63 @@ public class StatusBar extends CordovaPlugin {
return true;
}
if ("overlaysWebView".equals(action)) {
if (Build.VERSION.SDK_INT >= 21) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
try {
setStatusBarTransparent(args.getBoolean(0));
} catch (JSONException ignore) {
LOG.e(TAG, "Invalid boolean argument");
}
}
});
return true;
}
else return args.getBoolean(0) == false;
}
if ("styleDefault".equals(action)) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setStatusBarStyle("default");
}
});
return true;
}
if ("styleLightContent".equals(action)) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setStatusBarStyle("lightcontent");
}
});
return true;
}
if ("styleBlackTranslucent".equals(action)) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setStatusBarStyle("blacktranslucent");
}
});
return true;
}
if ("styleBlackOpaque".equals(action)) {
this.cordova.getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
setStatusBarStyle("blackopaque");
}
});
return true;
}
return false;
}
@@ -154,7 +215,7 @@ public class StatusBar extends CordovaPlugin {
window.addFlags(0x80000000); // SDK 21: WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
try {
// Using reflection makes sure any 5.0+ device will work without having to compile with SDK level 21
window.getClass().getDeclaredMethod("setStatusBarColor", int.class).invoke(window, Color.parseColor(colorPref));
window.getClass().getMethod("setStatusBarColor", int.class).invoke(window, Color.parseColor(colorPref));
} catch (IllegalArgumentException ignore) {
LOG.e(TAG, "Invalid hexString argument, use f.i. '#999999'");
} catch (Exception ignore) {
@@ -164,4 +225,52 @@ public class StatusBar extends CordovaPlugin {
}
}
}
private void setStatusBarTransparent(final boolean transparent) {
if (Build.VERSION.SDK_INT >= 21) {
final Window window = cordova.getActivity().getWindow();
if (transparent) {
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
window.setStatusBarColor(Color.TRANSPARENT);
}
else {
window.getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_VISIBLE);
}
}
}
private void setStatusBarStyle(final String style) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (style != null && !style.isEmpty()) {
View decorView = cordova.getActivity().getWindow().getDecorView();
int uiOptions = decorView.getSystemUiVisibility();
String[] darkContentStyles = {
"default",
};
String[] lightContentStyles = {
"lightcontent",
"blacktranslucent",
"blackopaque",
};
if (Arrays.asList(darkContentStyles).contains(style.toLowerCase())) {
decorView.setSystemUiVisibility(uiOptions | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
return;
}
if (Arrays.asList(lightContentStyles).contains(style.toLowerCase())) {
decorView.setSystemUiVisibility(uiOptions & ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
return;
}
LOG.e(TAG, "Invalid style, must be either 'default', 'lightcontent' or the deprecated 'blacktranslucent' and 'blackopaque'");
}
}
}
}
+3 -1
View File
@@ -22,7 +22,9 @@ function notSupported(win,fail) {
//
console.log('StatusBar is not supported');
setTimeout(function(){
win();
if (win) {
win();
}
// note that while it is not explicitly supported, it does not fail
// this is really just here to allow developers to test their code in the browser
// and if we fail, then their app might as well. -jm
+1
View File
@@ -30,6 +30,7 @@
}
@property (atomic, assign) BOOL statusBarOverlaysWebView;
@property (atomic, assign) BOOL statusBarVisible;
- (void) overlaysWebView:(CDVInvokedUrlCommand*)command;
+70 -92
View File
@@ -90,28 +90,34 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
}
}
-(void)cordovaViewWillAppear:(NSNotification*)notification
{
[self resizeWebView];
}
-(void)statusBarDidChangeFrame:(NSNotification*)notification
{
//add a small delay for iOS 7 ( 0.1 seconds )
//add a small delay ( 0.1 seconds ) or statusbar size will be wrong
__weak CDVStatusBar* weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[weakSelf resizeStatusBarBackgroundView];
[weakSelf resizeWebView];
});
}
- (void)pluginInitialize
{
BOOL isiOS7 = (IsAtLeastiOSVersion(@"7.0"));
// init
NSNumber* uiviewControllerBasedStatusBarAppearance = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"UIViewControllerBasedStatusBarAppearance"];
_uiviewControllerBasedStatusBarAppearance = (uiviewControllerBasedStatusBarAppearance == nil || [uiviewControllerBasedStatusBarAppearance boolValue]) && isiOS7;
_uiviewControllerBasedStatusBarAppearance = (uiviewControllerBasedStatusBarAppearance == nil || [uiviewControllerBasedStatusBarAppearance boolValue]);
// observe the statusBarHidden property
[[UIApplication sharedApplication] addObserver:self forKeyPath:@"statusBarHidden" options:NSKeyValueObservingOptionNew context:NULL];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(statusBarDidChangeFrame:) name: UIApplicationDidChangeStatusBarFrameNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(cordovaViewWillAppear:) name: @"CDVViewWillAppearNotification" object:nil];
_statusBarOverlaysWebView = YES; // default
[self initializeStatusBarBackgroundView];
@@ -130,8 +136,14 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
[self setStatusBarStyle:[self settingForKey:setting]];
}
setting = @"StatusBarDefaultScrollToTop";
if ([self settingForKey:setting]) {
self.webView.scrollView.scrollsToTop = [(NSNumber*)[self settingForKey:setting] boolValue];
} else {
self.webView.scrollView.scrollsToTop = NO;
}
// blank scroll view to intercept status bar taps
self.webView.scrollView.scrollsToTop = NO;
UIScrollView *fakeScrollView = [[UIScrollView alloc] initWithFrame:UIScreen.mainScreen.bounds];
fakeScrollView.delegate = self;
fakeScrollView.scrollsToTop = YES;
@@ -139,6 +151,8 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
[self.viewController.view sendSubviewToBack:fakeScrollView]; // Send it to the very back of the view heirarchy
fakeScrollView.contentSize = CGSizeMake(UIScreen.mainScreen.bounds.size.width, UIScreen.mainScreen.bounds.size.height * 2.0f); // Make the scroll view longer than the screen itself
fakeScrollView.contentOffset = CGPointMake(0.0f, UIScreen.mainScreen.bounds.size.height); // Scroll down so a tap will take scroll view back to the top
_statusBarVisible = ![UIApplication sharedApplication].isStatusBarHidden;
}
- (void)onReset {
@@ -182,7 +196,7 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
if ([[UIApplication sharedApplication]statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown &&
statusBarFrame.size.height + statusBarFrame.origin.y == [[UIScreen mainScreen] bounds].size.height) {
statusBarFrame.size.height + statusBarFrame.origin.y == [self.viewController.view.window 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
@@ -190,34 +204,19 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
statusBarFrame.origin.y = 0;
}
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
_statusBarBackgroundView = [[UIView alloc] initWithFrame:statusBarFrame];
_statusBarBackgroundView.backgroundColor = _statusBarBackgroundColor;
_statusBarBackgroundView.autoresizingMask = (UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin);
_statusBarBackgroundView.autoresizesSubviews = YES;
}
- (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)) {
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
if (!IsAtLeastiOSVersion(@"7.0") || statusBarOverlaysWebView == _statusBarOverlaysWebView) {
if (statusBarOverlaysWebView == _statusBarOverlaysWebView) {
return;
}
_statusBarOverlaysWebView = statusBarOverlaysWebView;
[self resizeWebView];
@@ -301,22 +300,12 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) styleBlackTranslucent:(CDVInvokedUrlCommand*)command
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
# define TRANSLUCENT_STYLE UIStatusBarStyleBlackTranslucent
#else
# define TRANSLUCENT_STYLE UIStatusBarStyleLightContent
#endif
[self setStyleForStatusBar:TRANSLUCENT_STYLE];
[self setStyleForStatusBar:UIStatusBarStyleLightContent];
}
- (void) styleBlackOpaque:(CDVInvokedUrlCommand*)command
{
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
# define OPAQUE_STYLE UIStatusBarStyleBlackOpaque
#else
# define OPAQUE_STYLE UIStatusBarStyleLightContent
#endif
[self setStyleForStatusBar:OPAQUE_STYLE];
[self setStyleForStatusBar:UIStatusBarStyleLightContent];
}
- (void) backgroundColorByName:(CDVInvokedUrlCommand*)command
@@ -372,16 +361,15 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) hide:(CDVInvokedUrlCommand*)command
{
_statusBarVisible = NO;
UIApplication* app = [UIApplication sharedApplication];
if (!app.isStatusBarHidden)
{
[self hideStatusBar];
if (IsAtLeastiOSVersion(@"7.0")) {
[_statusBarBackgroundView removeFromSuperview];
}
[_statusBarBackgroundView removeFromSuperview];
[self resizeWebView];
@@ -404,30 +392,21 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) show:(CDVInvokedUrlCommand*)command
{
_statusBarVisible = YES;
UIApplication* app = [UIApplication sharedApplication];
if (app.isStatusBarHidden)
{
BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
[self showStatusBar];
[self resizeWebView];
if (isIOS7) {
if (!self.statusBarOverlaysWebView) {
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];
CGRect sbBgFrame = _statusBarBackgroundView.frame;
sbBgFrame.size = statusBarFrame.size;
_statusBarBackgroundView.frame = sbBgFrame;
[self.webView.superview addSubview:_statusBarBackgroundView];
}
// 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
[self resizeStatusBarBackgroundView];
[self.webView.superview addSubview:_statusBarBackgroundView];
}
@@ -435,52 +414,51 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
}
}
-(void)resizeStatusBarBackgroundView {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
CGRect sbBgFrame = _statusBarBackgroundView.frame;
sbBgFrame.size = statusBarFrame.size;
_statusBarBackgroundView.frame = sbBgFrame;
}
-(void)resizeWebView
{
BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
BOOL isIOS11 = (IsAtLeastiOSVersion(@"11.0"));
if (isIOS7) {
CGRect bounds = [[UIScreen mainScreen] bounds];
bounds = [self invertFrameIfNeeded:bounds];
CGRect bounds = [self.viewController.view.window bounds];
if (CGRectEqualToRect(bounds, CGRectZero)) {
bounds = [[UIScreen mainScreen] bounds];
}
if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation])) {
self.viewController.view.frame = bounds;
} else if (self.viewController.presentedViewController != nil) {
// https://issues.apache.org/jira/browse/CB-11018
BOOL isIOS8 = (IsAtLeastiOSVersion(@"8.0"));
BOOL isIOS9 = (IsAtLeastiOSVersion(@"9.0"));
if (isIOS8 && !isIOS9) {
// iOS 8
bounds = CGRectMake(0, 0, bounds.size.width, bounds.size.height);
} else {
// iOS7, iOS9+
if ([self.viewController.presentedViewController.presentationController isKindOfClass:[UIPopoverPresentationController class]] || UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad) {
bounds = CGRectMake(0, 0, bounds.size.width, bounds.size.height);
self.viewController.view.frame = bounds;
self.webView.frame = bounds;
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
CGRect frame = self.webView.frame;
CGFloat height = statusBarFrame.size.height;
if (!self.statusBarOverlaysWebView) {
frame.origin.y = height;
} else {
frame.origin.y = height >= 20 ? height - 20 : 0;
if (isIOS11) {
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
if (@available(iOS 11.0, *)) {
float safeAreaTop = self.webView.safeAreaInsets.top;
if (height >= safeAreaTop && safeAreaTop >0) {
// Sometimes when in-call/recording/hotspot larger status bar is present, the safeAreaTop is 40 but we want frame.origin.y to be 20
frame.origin.y = safeAreaTop == 40 ? 20 : height - safeAreaTop;
} else {
bounds = CGRectMake(0, 0, bounds.size.height, bounds.size.width);
frame.origin.y = 0;
}
}
#endif
}
self.webView.frame = bounds;
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame];
CGRect frame = self.webView.frame;
if (!self.statusBarOverlaysWebView) {
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
} else {
// even if overlay is used, we want to handle in-call/recording/hotspot larger status bar
CGFloat height = statusBarFrame.size.height;
frame.origin.y = height >= 20 ? height - 20 : 0;
frame.size.height -= frame.origin.y;
}
self.webView.frame = frame;
} else {
CGRect bounds = [[UIScreen mainScreen] applicationFrame];
self.viewController.view.frame = bounds;
}
frame.size.height -= frame.origin.y;
self.webView.frame = frame;
}
- (void) dealloc
+14
View File
@@ -0,0 +1,14 @@
{
"name": "cordova-plugin-statusbar-tests",
"version": "2.2.3-dev",
"description": "",
"cordova": {
"id": "cordova-plugin-statusbar-tests",
"platforms": []
},
"keywords": [
"ecosystem:cordova"
],
"author": "",
"license": "Apache 2.0"
}
+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.2.0">
version="2.4.2">
<name>Cordova StatusBar Plugin Tests</name>
<license>Apache 2.0</license>
+77
View File
@@ -0,0 +1,77 @@
// Type definitions for Apache Cordova StatusBar plugin
// Project: https://github.com/apache/cordova-plugin-statusbar
// Definitions by: Xinkai Chen <https://github.com/Xinkai>
// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
/**
* Global object StatusBar.
*/
interface Window {
StatusBar: StatusBar;
}
/**
* The StatusBar object provides some functions to customize the iOS and Android StatusBar.
*/
interface StatusBar {
/**
* On iOS 7, make the statusbar overlay or not overlay the WebView.
* @param isOverlay On iOS 7, set to false to make the statusbar appear like iOS 6.
* Set the style and background color to suit using the other functions.
*/
overlaysWebView: (isOverlay: boolean) => void;
/**
* Use the default statusbar (dark text, for light backgrounds).
*/
styleDefault: () => void;
/**
* Use the lightContent statusbar (light text, for dark backgrounds).
*/
styleLightContent: () => void;
/**
* Use the blackTranslucent statusbar (light text, for dark backgrounds).
*/
styleBlackTranslucent: () => void;
/**
* Use the blackOpaque statusbar (light text, for dark backgrounds).
*/
styleBlackOpaque: () => void;
/**
* On iOS 7, when you set StatusBar.statusBarOverlaysWebView to false,
* you can set the background color of the statusbar by color name.
* @param color Supported color names are:
* black, darkGray, lightGray, white, gray, red, green, blue, cyan, yellow, magenta, orange, purple, brown
*/
backgroundColorByName: (color: string) => void;
/**
* Sets the background color of the statusbar by a hex string.
* @param color CSS shorthand properties are also supported.
* On iOS 7, when you set StatusBar.statusBarOverlaysWebView to false, you can set the background color of the statusbar by a hex string (#RRGGBB).
* On WP7 and WP8 you can also specify values as #AARRGGBB, where AA is an alpha value
*/
backgroundColorByHexString: (color: string) => void;
/**
* Hide the statusbar.
*/
hide: () => void;
/**
* Show the statusbar.
*/
show: () => void;
/**
* Read this property to see if the statusbar is visible or not.
*/
isVisible: boolean;
}
declare var StatusBar: StatusBar;