Compare commits

...

44 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
Steve Gill 7c27000b3a CB-10035 linked issues in RELEASENOTES.md 2015-11-18 22:11:41 -08:00
Steve Gill a63282219c CB-10035 Updated version and RELEASENOTES.md for release 2.0.0 2015-11-18 19:45:06 -08:00
Steve Gill 265fde25a0 removed r prefix from tags 2015-11-18 14:53:11 -08:00
Steve Gill dc945bdc95 CB-10035 Updated RELEASENOTES to be newest to oldest 2015-11-18 13:54:08 -08:00
Jesse MacFadyen 60686a944a Pushed too soon, missed a _ 2015-11-11 13:53:41 -08:00
Jesse MacFadyen cf1092fe81 Added weakSelf reference for block use 2015-11-11 13:45:13 -08:00
Julio César 86b9edba5d Fixes CB-4712, CB-5439 statusbar issues
Fixes CB-4712, CB-5439 and hopefully all the statusbar issues related
to the size or resize of the cordova webview  when the status bar
changes the size and/or rotation and resizes first time
2015-11-07 18:21:54 +01:00
Dmitry Blotsky 3795486e33 Actually fixing the contribute link. 2015-10-23 12:11:50 -07:00
Dmitry Blotsky fbfaeaa7ab Fixing contribute link. 2015-10-23 12:03:42 -07:00
Simon MacDonald 7fa66c0b61 CB-9250 - Fix iOS warnings in Statusbar plugin
Closes PR #35

Merge branch 'CB-9250' of https://github.com/jcesarmobile/cordova-plugin-statusbar
2015-09-21 11:44:32 -04:00
Jesse MacFadyen 1923d4e91e Close #34, merged 2015-09-18 12:55:11 -07:00
Julien Bouquillon baefe6d109 add JIRA issue tracker link 2015-09-18 12:53:30 -07:00
Jesse MacFadyen 1b3fbf3f9a Close #7 2015-09-18 12:50:13 -07:00
Julio César 986516cf97 removed silly copy/paste mistakes
removed silly copy/paste mistakes
2015-09-14 23:04:53 +02:00
Julio César 145fad6764 fix ios warnings
fix ios 7 deprecate warnigns
2015-09-14 20:43:48 +02:00
Jesse MacFadyen b0b61af61a removed proxy and renamed platform file, merge instead of clobber, fixed failing tests for missing methods. 2015-09-02 00:22:57 -07:00
Jesse MacFadyen da924e16fe Merge branch 'browserSupport' of https://github.com/surajpindoria/cordova-plugin-statusbar 2015-09-01 22:55:32 -07:00
Suraj Pindoria a0e5b517e0 [CB-7965] Add cordova-plugin-statusbar support for browser platform 2015-08-31 16:36:10 -07:00
Jesse MacFadyen c4dcdacf6b Merge branch 'master' of https://github.com/cwannerstedt/cordova-plugin-statusbar 2015-07-28 10:45:43 -07:00
Jesse MacFadyen 1dfc83d57d remove travis-ci 2015-07-07 18:00:25 -07:00
Christian Wannerstedt 3e821abfc2 Don't use IsAtLeastiOSVersion macro to determine height 2015-07-01 13:49:50 +02:00
Christian Wannerstedt 07b55b7529 Use correct statusbar height for landscape orientation in iOS >= 8 2015-07-01 13:25:26 +02:00
Steve Gill 2e8164693e CB-9192 Incremented plugin version. 2015-06-17 17:42:14 -07:00
Steve Gill d07ecff31a CB-9202 updated repo url to github mirror in package.json 2015-06-17 17:42:14 -07:00
Steve Gill 3f5f727629 CB-9192 Updated version and RELEASENOTES.md for release 1.0.1 2015-06-17 17:42:14 -07:00
Jesse MacFadyen 5ac69e4962 Added verbose install text for users on < cordova 5.0, This closes #23 2015-06-17 12:56:24 -07:00
Jesse MacFadyen e2cea32ab4 Fix merge. This closes #20 2015-06-17 12:48:29 -07:00
Jesse MacFadyen 77ce75d4dd Merge branch 'master' of https://github.com/pbakondy/cordova-plugin-statusbar 2015-06-17 12:33:17 -07:00
Peter Bakondy e8c448100c fix warning message
This change is fix for the following warning message at startup:

W/CordovaPlugin( 6470): Attempted to send a second callback for ID:
StatusBar1091036409
W/CordovaPlugin( 6470): Result was: "Invalid action"
2015-04-20 16:39:10 +02:00
Connor Pearson 607e5d66ad update docs for StatusBarBackgroundColor
The default value is no longer black. (CB-7486)
2015-01-07 19:55:34 -05:00
15 changed files with 332 additions and 149 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
}
}
+3 -12
View File
@@ -1,13 +1,4 @@
language: objective-c
git:
depth: 2
language: node_js
sudo: false
node_js:
- "0.10"
install:
- echo -e "Host github.com\n\tStrictHostKeyChecking no\n" >> ~/.ssh/config
- cd ..
- npm install -g cordova-paramedic
- npm install -g cordova
- npm install -g ios-sim
script:
- cordova-paramedic --platform ios --plugin ${TRAVIS_BUILD_DIR}
- "4.2"
+1 -1
View File
@@ -27,7 +27,7 @@ There are multiple ways to contribute: report bugs, improve the docs, and
contribute code.
For instructions on this, start with the
[contribution overview](http://cordova.apache.org/#contribute).
[contribution overview](http://cordova.apache.org/contribute/).
The details are explained there, but the important items are:
- Sign and submit an Apache ICLA (Contributor License Agreement).
+14 -5
View File
@@ -17,19 +17,30 @@
# under the License.
-->
# cordova-plugin-statusbar
[![Build Status](https://travis-ci.org/apache/cordova-plugin-statusbar.svg?branch=master)](https://travis-ci.org/apache/cordova-plugin-statusbar)
[![Build Status](https://travis-ci.org/apache/cordova-plugin-statusbar.svg)](https://travis-ci.org/apache/cordova-plugin-statusbar)
# cordova-plugin-statusbar
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)
## Installation
This installation method requires cordova 5.0+
cordova plugin add cordova-plugin-statusbar
Older versions of cordova can still install via the __deprecated__ id
cordova plugin add org.apache.cordova.statusbar
It is also possible to install via repo url directly ( unstable )
cordova plugin add https://github.com/apache/cordova-plugin-statusbar.git
Preferences
-----------
@@ -40,7 +51,7 @@ Preferences
<preference name="StatusBarOverlaysWebView" value="true" />
- __StatusBarBackgroundColor__ (color hex string, defaults to #000000). On iOS 7 and Android 5, set the background color of the statusbar by a hex string (#RRGGBB) at startup.
- __StatusBarBackgroundColor__ (color hex string, no default value). On iOS 7, set the background color of the statusbar by a hex string (#RRGGBB) at startup. If this value is not set, the background color will be transparent.
<preference name="StatusBarBackgroundColor" value="#000000" />
@@ -293,5 +304,3 @@ Supported Platforms
- Windows Phone 7
- Windows Phone 8
- Windows Phone 8.1
+82 -49
View File
@@ -20,63 +20,96 @@
-->
# Release Notes
### 0.1.5 (Apr 17, 2014) (First release as a core Cordova Plugin)
* CB-6316: Added README.md which point to the new location for docs
* CB-6316: Added license header to the documentation. Added README.md which point to the new location for docs
* CB-6316: Moved StatusBar plugin documentation to docs folder
* CB-6314: [android] Add StatusBar.isVisible support to Android
* CB-6460: Update license headers
### 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
### 0.1.6 (Jun 05, 2014)
* CB-6783 - added StatusBarStyle config preference, updated docs (closes #9)
* CB-6812 Add license
* CB-6491 add CONTRIBUTING.md
* CB-6264 minor formatting issue
* Update docs with recent WP changes, remove 'clear' from the loist of named colors in documentation
* CB-6513 - Statusbar plugin for Android is not compiling
### 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
* Fixes [CB-4712](https://issues.apache.org/jira/browse/CB-4712), [CB-5439](https://issues.apache.org/jira/browse/CB-5439) statusbar issues
* Fixing contribute link.
* [CB-7965](https://issues.apache.org/jira/browse/CB-7965) Add cordova-plugin-statusbar support for **browser** platform
* Don't use `IsAtLeastiOSVersion` macro to determine height
* Use correct statusbar height for landscape orientation in iOS >= 8
* remove travis-ci
* [CB-9202](https://issues.apache.org/jira/browse/CB-9202) updated repo url to github mirror in package.json
* Added verbose install text for users on < cordova 5.0
* update docs for `StatusBarBackgroundColor`
### 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-9128](https://issues.apache.org/jira/browse/CB-9128) cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* fix npm md issue
### 1.0.0 (Apr 15, 2015)
* [CB-8746](https://issues.apache.org/jira/browse/CB-8746) gave plugin major version bump
* [CB-8683](https://issues.apache.org/jira/browse/CB-8683) changed plugin-id to pacakge-name
* [CB-8653](https://issues.apache.org/jira/browse/CB-8653) properly updated translated docs to use new id
* [CB-8653](https://issues.apache.org/jira/browse/CB-8653) updated translated docs to use new id
* Use TRAVIS_BUILD_DIR, install paramedic by npm
* [CB-8653](https://issues.apache.org/jira/browse/CB-8653) Updated Readme
* - Use StatusBarBackgroundColor instead of AndroidStatusBarBackgroundColor, and added a quirk to the readme.
* - Add support for StatusBar.backgroundColorByHexString (and StatusBar.backgroundColorByName) on Android 5 and up
* Allow setting the statusbar backgroundcolor on Android
* [CB-8575](https://issues.apache.org/jira/browse/CB-8575) Integrate TravisCI
* [CB-8438](https://issues.apache.org/jira/browse/CB-8438) cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* [CB-8538](https://issues.apache.org/jira/browse/CB-8538) Added package.json file
### 0.1.10 (Feb 04, 2015)
* [CB-8351](https://issues.apache.org/jira/browse/CB-8351) ios: Use argumentForIndex rather than NSArray extension
### 0.1.9 (Dec 02, 2014)
* Fix onload attribute within <feature> to be a <param>
* [CB-8010](https://issues.apache.org/jira/browse/CB-8010) - Statusbar colour does not change to orange
* added checks for running on windows when StatusBar is NOT available
* [CB-7986](https://issues.apache.org/jira/browse/CB-7986) Add cordova-plugin-statusbar support for **Windows Phone 8.1**
* [CB-7977](https://issues.apache.org/jira/browse/CB-7977) Mention `deviceready` in plugin docs
* [CB-7979](https://issues.apache.org/jira/browse/CB-7979) Each plugin doc should have a ## Installation section
* Inserting leading space after # for consistency
* [CB-7549](https://issues.apache.org/jira/browse/CB-7549) - (Re-fix) `StatusBar` **iOS 8** Landscape issue (closes #15)
* [CB-7700](https://issues.apache.org/jira/browse/CB-7700) cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* [CB-7571](https://issues.apache.org/jira/browse/CB-7571) Bump version of nested plugin to match parent plugin
### 0.1.8 (Sep 17, 2014)
* [CB-7549](https://issues.apache.org/jira/browse/CB-7549) [StatusBar][iOS 8] Landscape issue
* [CB-7486](https://issues.apache.org/jira/browse/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](https://issues.apache.org/jira/browse/CB-7195) ported statusbar tests to framework
### 0.1.7 (Aug 06, 2014)
* Add LICENSE and NOTICE
* Update statusbar.js
* Update backgroundColorByHexString function
* ios: Use a persistent callbackId instead of calling sendJs
* CB-6626 ios: Add a JS event for tapping on statusbar
* [CB-6626](https://issues.apache.org/jira/browse/CB-6626) ios: Add a JS event for tapping on statusbar
* ios: Fix hide to adjust webview's frame only when status bar is not overlaying webview
* CB-6127 Updated translations for docs
* [CB-6127](https://issues.apache.org/jira/browse/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.6 (Jun 05, 2014)
* [CB-6783](https://issues.apache.org/jira/browse/CB-6783) - added StatusBarStyle config preference, updated docs (closes #9)
* [CB-6812](https://issues.apache.org/jira/browse/CB-6812) Add license
* [CB-6491](https://issues.apache.org/jira/browse/CB-6491) add CONTRIBUTING.md
* [CB-6264](https://issues.apache.org/jira/browse/CB-6264) minor formatting issue
* Update docs with recent WP changes, remove 'clear' from the loist of named colors in documentation
* [CB-6513](https://issues.apache.org/jira/browse/CB-6513) - Statusbar plugin for Android is not compiling
### 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
### 0.1.10 (Feb 04, 2015)
* CB-8351 ios: Use argumentForIndex rather than NSArray extension
### 1.0.0 (Apr 15, 2015)
* CB-8746 gave plugin major version bump
* CB-8683 changed plugin-id to pacakge-name
* CB-8653 properly updated translated docs to use new id
* CB-8653 updated translated docs to use new id
* Use TRAVIS_BUILD_DIR, install paramedic by npm
* CB-8653 Updated Readme
* - Use StatusBarBackgroundColor instead of AndroidStatusBarBackgroundColor, and added a quirk to the readme.
* - Add support for StatusBar.backgroundColorByHexString (and StatusBar.backgroundColorByName) on Android 5 and up
* Allow setting the statusbar backgroundcolor on Android
* CB-8575 Integrate TravisCI
* CB-8438 cordova-plugin-statusbar documentation translation: cordova-plugin-statusbar
* CB-8538 Added package.json file
### 0.1.5 (Apr 17, 2014) (First release as a core Cordova Plugin)
* [CB-6316](https://issues.apache.org/jira/browse/CB-6316): Added README.md which point to the new location for docs
* [CB-6316](https://issues.apache.org/jira/browse/CB-6316): Added license header to the documentation. Added README.md which point to the new location for docs
* [CB-6316](https://issues.apache.org/jira/browse/CB-6316): Moved StatusBar plugin documentation to docs folder
* [CB-6314](https://issues.apache.org/jira/browse/CB-6314): [android] Add StatusBar.isVisible support to Android
* [CB-6460](https://issues.apache.org/jira/browse/CB-6460): Update license headers
+10 -3
View File
@@ -1,6 +1,6 @@
{
"name": "cordova-plugin-statusbar",
"version": "1.0.1-dev",
"version": "2.1.2",
"description": "Cordova StatusBar Plugin",
"cordova": {
"id": "cordova-plugin-statusbar",
@@ -14,7 +14,7 @@
},
"repository": {
"type": "git",
"url": "https://git-wip-us.apache.org/repos/asf/cordova-plugin-statusbar.git"
"url": "https://github.com/apache/cordova-plugin-statusbar"
},
"keywords": [
"cordova",
@@ -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"
}
}
+7 -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="1.0.1-dev">
version="2.1.2">
<name>StatusBar</name>
<description>Cordova StatusBar Plugin</description>
<license>Apache 2.0</license>
@@ -47,6 +47,12 @@
</config-file>
</platform>
<platform name="browser">
<js-module src="src/browser/statusbar.js" name="statusbar.Browser">
<merges target="window.StatusBar" />
</js-module>
</platform>
<!-- ios -->
<platform name="ios">
+25
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,15 +77,28 @@ 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));
return true;
}
if ("show".equals(action)) {
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);
}
});
@@ -95,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);
}
});
+39
View File
@@ -0,0 +1,39 @@
/*
* 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.
*
*/
function notSupported() {
console.log('StatusBar is not supported');
return false;
}
module.exports = {
isVisible: false,
styleBlackTranslucent:notSupported,
styleDefault:notSupported,
styleLightContent:notSupported,
styleBlackOpaque:notSupported,
overlaysWebView:notSupported,
styleLightContect: notSupported,
backgroundColorByName: notSupported,
backgroundColorByHexString: notSupported,
hide: notSupported,
show: notSupported
};
+81 -59
View File
@@ -90,6 +90,15 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
}
}
-(void)statusBarDidChangeFrame:(NSNotification*)notification
{
//add a small delay for iOS 7 ( 0.1 seconds )
__weak CDVStatusBar* weakSelf = self;
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC), dispatch_get_main_queue(), ^{
[weakSelf resizeWebView];
});
}
- (void)pluginInitialize
{
BOOL isiOS7 = (IsAtLeastiOSVersion(@"7.0"));
@@ -101,6 +110,8 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
// 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];
_statusBarOverlaysWebView = YES; // default
[self initializeStatusBarBackgroundView];
@@ -109,11 +120,6 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
NSString* setting;
setting = @"StatusBarOverlaysWebView";
if ([self settingForKey:setting]) {
self.statusBarOverlaysWebView = [(NSNumber*)[self settingForKey:setting] boolValue];
}
setting = @"StatusBarBackgroundColor";
if ([self settingForKey:setting]) {
[self _backgroundColorByHexString:[self settingForKey:setting]];
@@ -158,17 +164,33 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
[self.commandDelegate sendPluginResult:result callbackId:_eventsCallbackId];
}
- (void) _ready:(CDVInvokedUrlCommand*)command
{
_eventsCallbackId = command.callbackId;
[self updateIsVisible:![UIApplication sharedApplication].statusBarHidden];
NSString* setting = @"StatusBarOverlaysWebView";
if ([self settingForKey:setting]) {
self.statusBarOverlaysWebView = [(NSNumber*)[self settingForKey:setting] boolValue];
if (self.statusBarOverlaysWebView) {
[self resizeWebView];
}
}
}
- (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;
@@ -176,10 +198,10 @@ 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 (UIDeviceOrientationIsLandscape(orientation) && (rect.size.width < rect.size.height) ) {
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;
@@ -195,34 +217,22 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
if (!IsAtLeastiOSVersion(@"7.0") || statusBarOverlaysWebView == _statusBarOverlaysWebView) {
return;
}
_statusBarOverlaysWebView = statusBarOverlaysWebView;
CGRect bounds = [[UIScreen mainScreen] bounds];
[self resizeWebView];
if (statusBarOverlaysWebView) {
[_statusBarBackgroundView removeFromSuperview];
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
self.webView.frame = CGRectMake(0, 0, bounds.size.height, bounds.size.width);
} else {
self.webView.frame = bounds;
}
} else {
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
[self initializeStatusBarBackgroundView];
CGRect frame = self.webView.frame;
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
self.webView.frame = frame;
[self.webView.superview addSubview:_statusBarBackgroundView];
}
_statusBarOverlaysWebView = statusBarOverlaysWebView;
}
- (BOOL) statusBarOverlaysWebView
@@ -291,12 +301,22 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
- (void) styleBlackTranslucent:(CDVInvokedUrlCommand*)command
{
[self setStyleForStatusBar:UIStatusBarStyleBlackTranslucent];
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
# define TRANSLUCENT_STYLE UIStatusBarStyleBlackTranslucent
#else
# define TRANSLUCENT_STYLE UIStatusBarStyleLightContent
#endif
[self setStyleForStatusBar:TRANSLUCENT_STYLE];
}
- (void) styleBlackOpaque:(CDVInvokedUrlCommand*)command
{
[self setStyleForStatusBar:UIStatusBarStyleBlackOpaque];
#if __IPHONE_OS_VERSION_MAX_ALLOWED < 70000
# define OPAQUE_STYLE UIStatusBarStyleBlackOpaque
#else
# define OPAQUE_STYLE UIStatusBarStyleLightContent
#endif
[self setStyleForStatusBar:OPAQUE_STYLE];
}
- (void) backgroundColorByName:(CDVInvokedUrlCommand*)command
@@ -356,29 +376,14 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
if (!app.isStatusBarHidden)
{
self.viewController.wantsFullScreenLayout = YES;
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
[self hideStatusBar];
if (IsAtLeastiOSVersion(@"7.0")) {
[_statusBarBackgroundView removeFromSuperview];
}
if (!_statusBarOverlaysWebView) {
CGRect frame = self.webView.frame;
frame.origin.y = 0;
if (!self.statusBarOverlaysWebView) {
if (UIDeviceOrientationIsLandscape(self.viewController.interfaceOrientation)) {
frame.size.height += statusBarFrame.size.width;
} else {
frame.size.height += statusBarFrame.size.height;
}
}
self.webView.frame = frame;
}
[self resizeWebView];
_statusBarBackgroundView.hidden = YES;
}
@@ -404,46 +409,63 @@ static const void *kStatusBarStyle = &kStatusBarStyle;
if (app.isStatusBarHidden)
{
BOOL isIOS7 = (IsAtLeastiOSVersion(@"7.0"));
self.viewController.wantsFullScreenLayout = isIOS7;
[self showStatusBar];
[self resizeWebView];
if (isIOS7) {
CGRect frame = self.webView.frame;
self.viewController.view.frame = [[UIScreen mainScreen] bounds];
CGRect statusBarFrame = [UIApplication sharedApplication].statusBarFrame;
statusBarFrame = [self invertFrameIfNeeded:statusBarFrame orientation:self.viewController.interfaceOrientation];
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;
frame.origin.y = statusBarFrame.size.height;
frame.size.height -= statusBarFrame.size.height;
sbBgFrame.size = statusBarFrame.size;
_statusBarBackgroundView.frame = sbBgFrame;
[self.webView.superview addSubview:_statusBarBackgroundView];
}
self.webView.frame = frame;
} else {
CGRect bounds = [[UIScreen mainScreen] applicationFrame];
self.viewController.view.frame = bounds;
}
_statusBarBackgroundView.hidden = NO;
}
}
-(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;
}
}
- (void) dealloc
{
[[UIApplication sharedApplication] removeObserver:self forKeyPath:@"statusBarHidden"];
[[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="1.0.1-dev">
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;