You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by fi...@apache.org on 2012/01/06 01:48:52 UTC
git commit: #124: Adding Battery events to the PlayBook.
Updated Branches:
refs/heads/master a96e4d9ef -> 5b78343ab
#124: Adding Battery events to the PlayBook.
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/commit/5b78343a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/tree/5b78343a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/diff/5b78343a
Branch: refs/heads/master
Commit: 5b78343abdec031b88b156e1bad5a4a7cc790bc0
Parents: a96e4d9
Author: Fil Maj <fi...@nitobi.com>
Authored: Thu Jan 5 16:44:32 2012 -0800
Committer: Fil Maj <fi...@nitobi.com>
Committed: Thu Jan 5 16:44:32 2012 -0800
----------------------------------------------------------------------
.../ext/src/com/phonegap/battery/Battery.java | 1 +
javascript/battery.js | 138 ------------
javascript/blackberry/battery.js | 135 ++++++++++++
javascript/playbook/battery.js | 165 +++++++++++++++
javascript/playbook/playBookPluginManager.js | 20 +-
javascript/webWorksPluginManager.js | 4 +-
6 files changed, 313 insertions(+), 150 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/framework/ext/src/com/phonegap/battery/Battery.java
----------------------------------------------------------------------
diff --git a/framework/ext/src/com/phonegap/battery/Battery.java b/framework/ext/src/com/phonegap/battery/Battery.java
index f930ccf..cb01de2 100644
--- a/framework/ext/src/com/phonegap/battery/Battery.java
+++ b/framework/ext/src/com/phonegap/battery/Battery.java
@@ -197,3 +197,4 @@ public class Battery extends Plugin {
}
}
+
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/javascript/battery.js
----------------------------------------------------------------------
diff --git a/javascript/battery.js b/javascript/battery.js
deleted file mode 100644
index 4cb32ea..0000000
--- a/javascript/battery.js
+++ /dev/null
@@ -1,138 +0,0 @@
-
-/*
- * PhoneGap is available under *either* the terms of the modified BSD license *or* the
- * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
- *
- * Copyright (c) 2005-2010, Nitobi Software Inc.
- * Copyright (c) 2010-2011, IBM Corporation
- */
-
-/**
- * navigator.battery
- */
-(function() {
- /**
- * Check to see that navigator.battery has not been initialized.
- */
- if (typeof navigator.battery !== "undefined") {
- return;
- }
-
- /**
- * This class contains information about the current battery status.
- * @constructor
- */
- var Battery = function() {
- this._level = null;
- this._isPlugged = null;
- this._batteryListener = [];
- this._lowListener = [];
- this._criticalListener = [];
- };
-
- /**
- * Registers as an event producer for battery events.
- *
- * @param {Object} eventType
- * @param {Object} handler
- * @param {Object} add
- */
- Battery.prototype.eventHandler = function(eventType, handler, add) {
- var me = navigator.battery;
- if (add) {
- // If there are no current registered event listeners start the
- // battery listener on native side.
- if (me._batteryListener.length === 0 && me._lowListener.length === 0
- && me._criticalListener.length === 0) {
- PhoneGap.exec(me._status, me._error, "Battery", "start", []);
- }
-
- // Register the event listener in the proper array
- if (eventType === "batterystatus") {
- var pos = me._batteryListener.indexOf(handler);
- if (pos === -1) {
- me._batteryListener.push(handler);
- }
- } else if (eventType === "batterylow") {
- var pos = me._lowListener.indexOf(handler);
- if (pos === -1) {
- me._lowListener.push(handler);
- }
- } else if (eventType === "batterycritical") {
- var pos = me._criticalListener.indexOf(handler);
- if (pos === -1) {
- me._criticalListener.push(handler);
- }
- }
- } else {
- // Remove the event listener from the proper array
- if (eventType === "batterystatus") {
- var pos = me._batteryListener.indexOf(handler);
- if (pos > -1) {
- me._batteryListener.splice(pos, 1);
- }
- } else if (eventType === "batterylow") {
- var pos = me._lowListener.indexOf(handler);
- if (pos > -1) {
- me._lowListener.splice(pos, 1);
- }
- } else if (eventType === "batterycritical") {
- var pos = me._criticalListener.indexOf(handler);
- if (pos > -1) {
- me._criticalListener.splice(pos, 1);
- }
- }
-
- // If there are no more registered event listeners stop the battery
- // listener on native side.
- if (me._batteryListener.length === 0 && me._lowListener.length === 0
- && me._criticalListener.length === 0) {
- PhoneGap.exec(null, null, "Battery", "stop", []);
- }
- }
- };
-
- /**
- * Callback for battery status
- *
- * @param {Object} info keys: level, isPlugged
- */
- Battery.prototype._status = function(info) {
- if (info) {
- var me = this;
- if (me._level != info.level || me._isPlugged != info.isPlugged) {
- // Fire batterystatus event
- PhoneGap.fireWindowEvent("batterystatus", info);
-
- // Fire low battery event
- if (info.level == 20 || info.level == 5) {
- if (info.level == 20) {
- PhoneGap.fireWindowEvent("batterylow", info);
- }
- else {
- PhoneGap.fireWindowEvent("batterycritical", info);
- }
- }
- }
- me._level = info.level;
- me._isPlugged = info.isPlugged;
- }
- };
-
- /**
- * Error callback for battery start
- */
- Battery.prototype._error = function(e) {
- console.log("Error initializing Battery: " + e);
- };
-
- PhoneGap.addConstructor(function() {
- if (typeof navigator.battery === "undefined") {
- navigator.battery = new Battery();
- PhoneGap.addWindowEventHandler("batterystatus", navigator.battery.eventHandler);
- PhoneGap.addWindowEventHandler("batterylow", navigator.battery.eventHandler);
- PhoneGap.addWindowEventHandler("batterycritical", navigator.battery.eventHandler);
- }
- });
-
-}());
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/javascript/blackberry/battery.js
----------------------------------------------------------------------
diff --git a/javascript/blackberry/battery.js b/javascript/blackberry/battery.js
new file mode 100644
index 0000000..551c073
--- /dev/null
+++ b/javascript/blackberry/battery.js
@@ -0,0 +1,135 @@
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+/**
+ * navigator.battery
+ */
+(function() {
+ /**
+ * Check to see that navigator.battery has not been initialized.
+ */
+ if (typeof navigator.battery !== "undefined") {
+ return;
+ }
+
+ /**
+ * This class contains information about the current battery status.
+ * @constructor
+ */
+ var Battery = function() {
+ this._level = null;
+ this._isPlugged = null;
+ this._batteryListener = [];
+ this._lowListener = [];
+ this._criticalListener = [];
+ };
+
+ /**
+ * Registers as an event producer for battery events.
+ *
+ * @param {Object} eventType
+ * @param {Object} handler
+ * @param {Object} add
+ */
+ Battery.prototype.eventHandler = function(eventType, handler, add) {
+ var me = navigator.battery;
+ if (add) {
+ // If there are no current registered event listeners start the
+ // battery listener on native side.
+ if (me._batteryListener.length === 0 && me._lowListener.length === 0 && me._criticalListener.length === 0) {
+ PhoneGap.exec(me._status, me._error, "Battery", "start", []);
+ }
+
+ // Register the event listener in the proper array
+ if (eventType === "batterystatus") {
+ var pos = me._batteryListener.indexOf(handler);
+ if (pos === -1) {
+ me._batteryListener.push(handler);
+ }
+ } else if (eventType === "batterylow") {
+ var pos = me._lowListener.indexOf(handler);
+ if (pos === -1) {
+ me._lowListener.push(handler);
+ }
+ } else if (eventType === "batterycritical") {
+ var pos = me._criticalListener.indexOf(handler);
+ if (pos === -1) {
+ me._criticalListener.push(handler);
+ }
+ }
+ } else {
+ // Remove the event listener from the proper array
+ if (eventType === "batterystatus") {
+ var pos = me._batteryListener.indexOf(handler);
+ if (pos > -1) {
+ me._batteryListener.splice(pos, 1);
+ }
+ } else if (eventType === "batterylow") {
+ var pos = me._lowListener.indexOf(handler);
+ if (pos > -1) {
+ me._lowListener.splice(pos, 1);
+ }
+ } else if (eventType === "batterycritical") {
+ var pos = me._criticalListener.indexOf(handler);
+ if (pos > -1) {
+ me._criticalListener.splice(pos, 1);
+ }
+ }
+
+ // If there are no more registered event listeners stop the battery
+ // listener on native side.
+ if (me._batteryListener.length === 0 && me._lowListener.length === 0 && me._criticalListener.length === 0) {
+ PhoneGap.exec(null, null, "Battery", "stop", []);
+ }
+ }
+ };
+
+ /**
+ * Callback for battery status
+ *
+ * @param {Object} info keys: level, isPlugged
+ */
+ Battery.prototype._status = function(info) {
+ if (info) {
+ var me = this;
+ if (me._level != info.level || me._isPlugged != info.isPlugged) {
+ // Fire batterystatus event
+ PhoneGap.fireWindowEvent("batterystatus", info);
+
+ // Fire low battery event
+ if (info.level == 20 || info.level == 5) {
+ if (info.level == 20) {
+ PhoneGap.fireWindowEvent("batterylow", info);
+ } else {
+ PhoneGap.fireWindowEvent("batterycritical", info);
+ }
+ }
+ }
+ me._level = info.level;
+ me._isPlugged = info.isPlugged;
+ }
+ };
+
+ /**
+ * Error callback for battery start
+ */
+ Battery.prototype._error = function(e) {
+ console.log("Error initializing Battery: " + e);
+ };
+
+ PhoneGap.addConstructor(function() {
+ if (typeof navigator.battery === "undefined") {
+ navigator.battery = new Battery();
+ PhoneGap.addWindowEventHandler("batterystatus", navigator.battery.eventHandler);
+ PhoneGap.addWindowEventHandler("batterylow", navigator.battery.eventHandler);
+ PhoneGap.addWindowEventHandler("batterycritical", navigator.battery.eventHandler);
+ }
+ });
+
+}());
+
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/javascript/playbook/battery.js
----------------------------------------------------------------------
diff --git a/javascript/playbook/battery.js b/javascript/playbook/battery.js
new file mode 100644
index 0000000..a52141a
--- /dev/null
+++ b/javascript/playbook/battery.js
@@ -0,0 +1,165 @@
+
+/*
+ * PhoneGap is available under *either* the terms of the modified BSD license *or* the
+ * MIT License (2008). See http://opensource.org/licenses/alphabetical for full text.
+ *
+ * Copyright (c) 2005-2010, Nitobi Software Inc.
+ * Copyright (c) 2010-2011, IBM Corporation
+ */
+
+/**
+ * navigator.battery
+ */
+(function() {
+ /**
+ * Check to see that navigator.battery has not been initialized.
+ */
+ if (typeof navigator.battery !== "undefined") {
+ return;
+ }
+ /**
+ * This class contains information about the current battery status.
+ * @constructor
+ */
+ var Battery = function() {
+ this._level = null;
+ this._isPlugged = null;
+ this._batteryListener = [];
+ this._lowListener = [];
+ this._criticalListener = [];
+ // Register one listener to each of level and state change events using WebWorks API.
+ blackberry.system.event.deviceBatteryStateChange(this._stateChange);
+ blackberry.system.event.deviceBatteryLevelChange(this._levelChange);
+ };
+
+ /**
+ * Registers as an event producer for battery events.
+ *
+ * @param {Object} eventType
+ * @param {Object} handler
+ * @param {Object} add
+ */
+ Battery.prototype.eventHandler = function(eventType, handler, add) {
+ var me = navigator.battery;
+ if (add) {
+ // Register the event listener in the proper array
+ if (eventType === "batterystatus") {
+ var pos = me._batteryListener.indexOf(handler);
+ if (pos === -1) {
+ me._batteryListener.push(handler);
+ }
+ } else if (eventType === "batterylow") {
+ var pos = me._lowListener.indexOf(handler);
+ if (pos === -1) {
+ me._lowListener.push(handler);
+ }
+ } else if (eventType === "batterycritical") {
+ var pos = me._criticalListener.indexOf(handler);
+ if (pos === -1) {
+ me._criticalListener.push(handler);
+ }
+ }
+ } else {
+ // Remove the event listener from the proper array
+ if (eventType === "batterystatus") {
+ var pos = me._batteryListener.indexOf(handler);
+ if (pos > -1) {
+ me._batteryListener.splice(pos, 1);
+ }
+ } else if (eventType === "batterylow") {
+ var pos = me._lowListener.indexOf(handler);
+ if (pos > -1) {
+ me._lowListener.splice(pos, 1);
+ }
+ } else if (eventType === "batterycritical") {
+ var pos = me._criticalListener.indexOf(handler);
+ if (pos > -1) {
+ me._criticalListener.splice(pos, 1);
+ }
+ }
+ }
+ };
+
+ /**
+ * Callback for battery state change using WebWorks API
+ *
+ * @param {Object} state
+ */
+ Battery.prototype._stateChange = function(state) {
+ var me = navigator.battery;
+ if (state === 2 || state === 3) { // state is either CHARGING or UNPLUGGED
+ var info = {
+ "level":me._level,
+ "isPlugged":me._isPlugged
+ };
+
+ if (state === 2 && (me._isPlugged === false || me._isPlugged === null)) {
+ me._isPlugged = info.isPlugged = true;
+ me._fire('status', info);
+ } else if (state === 3 && (me._isPlugged === true || me._isPlugged === null)) {
+ me._isPlugged = info.isPlugged = false;
+
+ me._fire('status', info);
+ }
+ }
+ };
+
+ /**
+ * Callback for battery level change using WebWorks API
+ *
+ * @param {Object} level
+ */
+ Battery.prototype._levelChange = function(level) {
+ var me = navigator.battery;
+
+ if (level != me._level) {
+ me._level = level;
+ var info = {
+ "level":me._level,
+ "isPlugged":me._isPlugged
+ };
+
+ // Fire off the basic battery status change event listeners.
+ me._fire('status', info);
+
+ // Fire low battery events if applicable
+ if (level == 20 || level == 5) {
+ if (level == 20) {
+ me._fire('low', info);
+ } else {
+ me._fire('critical', info);
+ }
+ }
+ }
+ };
+
+ /**
+ * Helper function to fire all listeners of a type.
+ *
+ * @param {Object} type
+ * @param {Object} data
+ */
+ Battery.prototype._fire = function(type, data) {
+ var targetAr = '_batteryListener';
+
+ if (type == 'critical') {
+ targetAr = '_criticalListener';
+ } else if (type == 'low') {
+ targetAr = '_lowListener';
+ }
+ for (var i = 0, l = this[targetAr].length; i < l; i++) {
+ this[targetAr][i](data);
+ }
+ };
+
+ PhoneGap.addConstructor(function() {
+
+ if (typeof navigator.battery === "undefined") {
+ navigator.battery = new Battery();
+ PhoneGap.addWindowEventHandler("batterystatus", navigator.battery.eventHandler);
+ PhoneGap.addWindowEventHandler("batterylow", navigator.battery.eventHandler);
+ PhoneGap.addWindowEventHandler("batterycritical", navigator.battery.eventHandler);
+ }
+ });
+
+}());
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/javascript/playbook/playBookPluginManager.js
----------------------------------------------------------------------
diff --git a/javascript/playbook/playBookPluginManager.js b/javascript/playbook/playBookPluginManager.js
index 8752f2d..d3097a0 100644
--- a/javascript/playbook/playBookPluginManager.js
+++ b/javascript/playbook/playBookPluginManager.js
@@ -142,7 +142,7 @@ phonegap.PluginManager = (function (webworksPluginManager) {
case 'release':
if (audio) {
audioObjects[id] = undefined;
- audio.src = undefined;
+ audio.src = undefined;
//delete audio;
}
@@ -237,16 +237,16 @@ phonegap.PluginManager = (function (webworksPluginManager) {
notificationAPI = {
execute: function (webWorksResult, action, args, win, fail) {
- if (args.length !== 3) {
- return {"status" : 9, "message" : "Notification action - " + action + " arguments not found"};
+ if (args.length !== 3) {
+ return {"status" : 9, "message" : "Notification action - " + action + " arguments not found"};
- }
-
- //Unpack and map the args
+ }
+
+ //Unpack and map the args
var msg = args[0],
title = args[1],
- btnLabel = args[2],
- btnLabels;
+ btnLabel = args[2],
+ btnLabels;
switch (action) {
case 'alert':
@@ -282,8 +282,8 @@ phonegap.PluginManager = (function (webworksPluginManager) {
//We got a sync result or a not found from WW that we can pass on to get a native mixin
//For async calls there's nothing to do
if ((wwResult.status === PhoneGap.callbackStatus.OK ||
- wwResult.status === PhoneGap.callbackStatus.CLASS_NOT_FOUND_EXCEPTION) &&
- plugins[clazz]) {
+ wwResult.status === PhoneGap.callbackStatus.CLASS_NOT_FOUND_EXCEPTION) &&
+ plugins[clazz]) {
return plugins[clazz].execute(wwResult.message, action, args, win, fail);
}
http://git-wip-us.apache.org/repos/asf/incubator-cordova-blackberry-webworks/blob/5b78343a/javascript/webWorksPluginManager.js
----------------------------------------------------------------------
diff --git a/javascript/webWorksPluginManager.js b/javascript/webWorksPluginManager.js
index cd41b27..8c6276f 100644
--- a/javascript/webWorksPluginManager.js
+++ b/javascript/webWorksPluginManager.js
@@ -18,8 +18,8 @@ if (!window.phonegap) { window.phonegap = {}; }
// WebWorks platforms (phone/tablet).
plugins = {};
- phonegap.WebWorksPluginManager = function () {
- };
+ phonegap.WebWorksPluginManager = function () {
+ };
phonegap.WebWorksPluginManager.prototype.exec = function (win, fail, clazz, action, args) {
if (plugins[clazz]) {