You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by ti...@apache.org on 2012/06/07 22:59:18 UTC
[8/9] js commit: merging in gord changes on playbook
merging in gord changes on playbook
Project: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/commit/ce4a05cc
Tree: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/tree/ce4a05cc
Diff: http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/diff/ce4a05cc
Branch: refs/heads/master
Commit: ce4a05cc9937c8b31dee64d4bef4aa555289d6e7
Parents: b78cd90
Author: Tim Kim <ti...@nitobi.com>
Authored: Thu Jun 7 13:50:31 2012 -0700
Committer: Tim Kim <ti...@nitobi.com>
Committed: Thu Jun 7 13:50:31 2012 -0700
----------------------------------------------------------------------
lib/playbook/plugin/manager.js | 418 +++++++++++++++++++----------------
1 files changed, 225 insertions(+), 193 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-cordova-js/blob/ce4a05cc/lib/playbook/plugin/manager.js
----------------------------------------------------------------------
diff --git a/lib/playbook/plugin/manager.js b/lib/playbook/plugin/manager.js
index 593c812..04d070d 100644
--- a/lib/playbook/plugin/manager.js
+++ b/lib/playbook/plugin/manager.js
@@ -11,80 +11,67 @@ var cordova = require('cordova'),
return { "status" : cordova.callbackStatus.NO_RESULT, "message" : "WebWorks Is On It" };
},
batteryAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- if (action === 'start') {
- // Register one listener to each of level and state change
- // events using WebWorks API.
- blackberry.system.event.deviceBatteryStateChange(function(state) {
- var me = navigator.battery;
- // state is either CHARGING or UNPLUGGED
- if (state === 2 || state === 3) {
- var info = {
- "level" : me._level,
- "isPlugged" : state === 2
- };
-
- if (me._isPlugged !== info.isPlugged && typeof win === 'function') {
- win(info);
- }
+ start: function (args, win, fail) {
+ // Register one listener to each of level and state change
+ // events using WebWorks API.
+ blackberry.system.event.deviceBatteryStateChange(function(state) {
+ var me = navigator.battery;
+ // state is either CHARGING or UNPLUGGED
+ if (state === 2 || state === 3) {
+ var info = {
+ "level" : me._level,
+ "isPlugged" : state === 2
+ };
+
+ if (me._isPlugged !== info.isPlugged && typeof win === 'function') {
+ win(info);
}
- });
- blackberry.system.event.deviceBatteryLevelChange(function(level) {
- var me = navigator.battery;
- if (level != me._level && typeof win === 'function') {
- win({'level' : level, 'isPlugged' : me._isPlugged});
- }
- });
- } else if (action === 'stop') {
- // Unregister battery listeners.
- blackberry.system.event.deviceBatteryStateChange(null);
- blackberry.system.event.deviceBatteryLevelChange(null);
- } else {
- return retInvalidAction();
- }
+ }
+ });
+ blackberry.system.event.deviceBatteryLevelChange(function(level) {
+ var me = navigator.battery;
+ if (level != me._level && typeof win === 'function') {
+ win({'level' : level, 'isPlugged' : me._isPlugged});
+ }
+ });
+
+ return retAsyncCall();
+ },
+ stop: function (args, win, fail) {
+ // Unregister battery listeners.
+ blackberry.system.event.deviceBatteryStateChange(null);
+ blackberry.system.event.deviceBatteryLevelChange(null);
+ return retAsyncCall();
}
},
cameraAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- if (action === 'takePicture') {
- blackberry.media.camera.takePicture(win, fail, fail);
- return retAsyncCall();
- }
- else {
- return retInvalidAction();
- }
+ takePicture: function (args, win, fail) {
+ blackberry.media.camera.takePicture(win, fail, fail);
+ return retAsyncCall();
}
},
deviceAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- if (action === 'getDeviceInfo') {
- return {"status" : cordova.callbackStatus.OK,
- "message" : {
- "version" : blackberry.system.softwareVersion,
- "name" : blackberry.system.model,
- "uuid" : blackberry.identity.PIN,
- "platform" : "PlayBook",
- "cordova" : "1.8.0"
- }
- };
- }
- return retInvalidAction();
+ getDeviceInfo: function (args, win, fail) {
+ return {"status" : cordova.callbackStatus.OK,
+ "message" : {
+ "version" : blackberry.system.softwareVersion,
+ "name" : blackberry.system.model,
+ "uuid" : blackberry.identity.PIN,
+ "platform" : "PlayBook",
+ "cordova" : "1.7.0rc1"
+ }
+ };
}
},
loggerAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- if (action === 'log') {
- console.log(args);
- return {"status" : cordova.callbackStatus.OK,
- "message" : 'Message logged to console: ' + args};
- }
- else {
- return retInvalidAction();
- }
+ log: function (args, win, fail) {
+ console.log(args);
+ return {"status" : cordova.callbackStatus.OK,
+ "message" : 'Message logged to console: ' + args};
}
},
mediaAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
+ startPlayingAudio: function (args, win, fail) {
if (!args.length) {
return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
}
@@ -93,150 +80,189 @@ var cordova = require('cordova'),
audio = audioObjects[id],
result;
- switch (action) {
- case 'startPlayingAudio':
- if (args.length === 1) {
- result = {"status" : 9, "message" : "Media source argument not found"};
+ if (args.length === 1) {
+ return {"status" : 9, "message" : "Media source argument not found"};
+ }
- }
+ if (audio) {
+ audio.pause();
+ audioObjects[id] = undefined;
+ }
- if (audio) {
- audio.pause();
- audioObjects[id] = undefined;
- }
+ audio = audioObjects[id] = new Audio(args[1]);
+ audio.play();
- audio = audioObjects[id] = new Audio(args[1]);
- audio.play();
+ return {"status" : 1, "message" : "Audio play started" };
+ },
+ stopPlayingAudio: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
- result = {"status" : 1, "message" : "Audio play started" };
- break;
- case 'stopPlayingAudio':
- if (!audio) {
- return {"status" : 2, "message" : "Audio Object has not been initialized"};
- }
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
- audio.pause();
- audioObjects[id] = undefined;
+ if (!audio) {
+ return {"status" : 2, "message" : "Audio Object has not been initialized"};
+ }
- result = {"status" : 1, "message" : "Audio play stopped" };
- break;
- case 'seekToAudio':
- if (!audio) {
- result = {"status" : 2, "message" : "Audio Object has not been initialized"};
- } else if (args.length === 1) {
- result = {"status" : 9, "message" : "Media seek time argument not found"};
- } else {
- try {
- audio.currentTime = args[1];
- } catch (e) {
- console.log('Error seeking audio: ' + e);
- return {"status" : 3, "message" : "Error seeking audio: " + e};
- }
+ audio.pause();
+ audioObjects[id] = undefined;
- result = {"status" : 1, "message" : "Seek to audio succeeded" };
- }
- break;
- case 'pausePlayingAudio':
- if (!audio) {
- return {"status" : 2, "message" : "Audio Object has not been initialized"};
- }
+ return {"status" : 1, "message" : "Audio play stopped" };
+ },
+ seekToAudio: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
- audio.pause();
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
- result = {"status" : 1, "message" : "Audio paused" };
- break;
- case 'getCurrentPositionAudio':
- if (!audio) {
- return {"status" : 2, "message" : "Audio Object has not been initialized"};
+ if (!audio) {
+ result = {"status" : 2, "message" : "Audio Object has not been initialized"};
+ } else if (args.length === 1) {
+ result = {"status" : 9, "message" : "Media seek time argument not found"};
+ } else {
+ try {
+ audio.currentTime = args[1];
+ } catch (e) {
+ console.log('Error seeking audio: ' + e);
+ return {"status" : 3, "message" : "Error seeking audio: " + e};
}
- result = {"status" : 1, "message" : audio.currentTime };
- break;
- case 'getDuration':
- if (!audio) {
- return {"status" : 2, "message" : "Audio Object has not been initialized"};
- }
+ result = {"status" : 1, "message" : "Seek to audio succeeded" };
+ }
- result = {"status" : 1, "message" : audio.duration };
- break;
- case 'startRecordingAudio':
- if (args.length <= 1) {
- result = {"status" : 9, "message" : "Media start recording, insufficient arguments"};
- }
+ return result;
+ },
+ pausePlayingAudio: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
- blackberry.media.microphone.record(args[1], win, fail);
- result = retAsyncCall();
- break;
- case 'stopRecordingAudio':
- break;
- case 'release':
- if (audio) {
- audioObjects[id] = undefined;
- audio.src = undefined;
- //delete audio;
- }
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
- result = {"status" : 1, "message" : "Media resources released"};
- break;
- default:
- result = retInvalidAction();
+ if (!audio) {
+ return {"status" : 2, "message" : "Audio Object has not been initialized"};
}
- return result;
- }
- },
- mediaCaptureAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- var limit = args[0],
- pictureFiles = [],
- captureMethod;
-
- function captureCB(filePath) {
- var mediaFile;
-
- if (filePath) {
- mediaFile = new MediaFile();
- mediaFile.fullPath = filePath;
- pictureFiles.push(mediaFile);
- }
+ audio.pause();
- if (limit > 0) {
- limit--;
- blackberry.media.camera[captureMethod](win, fail, fail);
- return;
- }
+ return {"status" : 1, "message" : "Audio paused" };
+ },
+ getCurrentPositionAudio: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
- win(pictureFiles);
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
- return retAsyncCall();
+ if (!audio) {
+ return {"status" : 2, "message" : "Audio Object has not been initialized"};
}
- switch (action) {
- case 'getSupportedAudioModes':
- case 'getSupportedImageModes':
- case 'getSupportedVideoModes':
- return {"status": cordova.callbackStatus.OK, "message": []};
- case 'captureImage':
- captureMethod = "takePicture";
- captureCB();
- break;
- case 'captureVideo':
- captureMethod = "takeVideo";
- captureCB();
- break;
- case 'captureAudio':
- return {"status": cordova.callbackStatus.INVALID_ACTION, "message": "captureAudio is not currently supported"};
+ return {"status" : 1, "message" : audio.currentTime };
+ },
+ getDuration: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
}
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
+
+ if (!audio) {
+ return {"status" : 2, "message" : "Audio Object has not been initialized"};
+ }
+
+ return {"status" : 1, "message" : audio.duration };
+ },
+ startRecordingAudio: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
+
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
+
+ if (args.length <= 1) {
+ result = {"status" : 9, "message" : "Media start recording, insufficient arguments"};
+ }
+
+ blackberry.media.microphone.record(args[1], win, fail);
return retAsyncCall();
+ },
+ stopRecordingAudio: function (args, win, fail) {
+ },
+ release: function (args, win, fail) {
+ if (!args.length) {
+ return {"status" : 9, "message" : "Media Object id was not sent in arguments"};
+ }
+
+ var id = args[0],
+ audio = audioObjects[id],
+ result;
+
+ if (audio) {
+ audioObjects[id] = undefined;
+ audio.src = undefined;
+ //delete audio;
+ }
+
+ result = {"status" : 1, "message" : "Media resources released"};
+
+ return result;
}
},
- networkAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
- if (action !== 'getConnectionInfo') {
- return retInvalidAction();
+ mediaCaptureAPI = {
+ getSupportedAudioModes: function (args, win, fail) {
+ return {"status": cordova.callbackStatus.OK, "message": []};
+ },
+ getSupportedImageModes: function (args, win, fail) {
+ return {"status": cordova.callbackStatus.OK, "message": []};
+ },
+ getSupportedVideoModes: function (args, win, fail) {
+ return {"status": cordova.callbackStatus.OK, "message": []};
+ },
+ captureImage: function (args, win, fail) {
+ var limit = args[0];
+
+ if (limit > 0) {
+ blackberry.media.camera.takePicture(win, fail, fail);
+ }
+ else {
+ win([]);
}
+ return retAsyncCall();
+ },
+ captureVideo: function (args, win, fail) {
+ var limit = args[0];
+
+ if (limit > 0) {
+ blackberry.media.camera.takeVideo(win, fail, fail);
+ }
+ else {
+ win([]);
+ }
+
+ return retAsyncCall();
+ },
+ captureAudio: function (args, win, fail) {
+ return {"status": cordova.callbackStatus.INVALID_ACTION, "message": "captureAudio is not currently supported"};
+ }
+ },
+ networkAPI = {
+ getConnectionInfo: function (args, win, fail) {
var connectionType = require("cordova/plugin/Connection").NONE,
eventType = "offline",
callbackID,
@@ -266,29 +292,32 @@ var cordova = require('cordova'),
}
},
notificationAPI = {
- execute: function (webWorksResult, action, args, win, fail) {
+ alert: function (args, win, fail) {
if (args.length !== 3) {
- return {"status" : 9, "message" : "Notification action - " + action + " arguments not found"};
+ return {"status" : 9, "message" : "Notification action - alert arguments not found"};
+ }
+
+ //Unpack and map the args
+ var msg = args[0],
+ title = args[1],
+ btnLabel = args[2];
+ blackberry.ui.dialog.customAskAsync.apply(this, [ msg, [ btnLabel ], win, { "title" : title } ]);
+ return retAsyncCall();
+ },
+ confirm: function (args, win, fail) {
+ if (args.length !== 3) {
+ return {"status" : 9, "message" : "Notification action - confirm arguments not found"};
}
//Unpack and map the args
var msg = args[0],
title = args[1],
btnLabel = args[2],
- btnLabels;
-
- switch (action) {
- case 'alert':
- blackberry.ui.dialog.customAskAsync.apply(this, [ msg, [ btnLabel ], win, { "title" : title } ]);
- return retAsyncCall();
- case 'confirm':
btnLabels = btnLabel.split(",");
- blackberry.ui.dialog.customAskAsync.apply(this, [msg, btnLabels, win, {"title" : title} ]);
- return retAsyncCall();
- }
- return retInvalidAction();
+ blackberry.ui.dialog.customAskAsync.apply(this, [msg, btnLabels, win, {"title" : title} ]);
+ return retAsyncCall();
}
},
plugins = {
@@ -306,10 +335,13 @@ module.exports = {
exec: function (win, fail, clazz, action, args) {
var result = {"status" : cordova.callbackStatus.CLASS_NOT_FOUND_EXCEPTION, "message" : "Class " + clazz + " cannot be found"};
- //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 (plugins[clazz]) {
- result = plugins[clazz].execute(result.message, action, args, win, fail);
+ if (plugins[clazz][action]) {
+ result = plugins[clazz][action](args, win, fail);
+ }
+ else {
+ result = retInvalidAction();
+ }
}
return result;