mobile_template 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. data/.gitignore +17 -0
  2. data/Gemfile +4 -0
  3. data/LICENSE +22 -0
  4. data/README.md +28 -0
  5. data/Rakefile +3 -0
  6. data/bin/mobile_template +71 -0
  7. data/lib/mobile_template/version.rb +4 -0
  8. data/lib/mobile_template.rb +5 -0
  9. data/mobile_template.gemspec +21 -0
  10. data/templates/assets/Gemfile +4 -0
  11. data/templates/assets/config.rb +96 -0
  12. data/templates/assets/config.ru +4 -0
  13. data/templates/assets/source/images/vendor/ajax-loader.gif +0 -0
  14. data/templates/assets/source/images/vendor/ajax-loader.png +0 -0
  15. data/templates/assets/source/images/vendor/icons-18-black.png +0 -0
  16. data/templates/assets/source/images/vendor/icons-18-white.png +0 -0
  17. data/templates/assets/source/images/vendor/icons-36-black.png +0 -0
  18. data/templates/assets/source/images/vendor/icons-36-white.png +0 -0
  19. data/templates/assets/source/index.html.erb +2 -0
  20. data/templates/assets/source/javascripts/app/index.js.coffee +2 -0
  21. data/templates/assets/source/javascripts/application.js.coffee +5 -0
  22. data/templates/assets/source/javascripts/vendor/cordova.js +4841 -0
  23. data/templates/assets/source/javascripts/vendor/jquery.js +9267 -0
  24. data/templates/assets/source/javascripts/vendor/jquery.mobile.js +7410 -0
  25. data/templates/assets/source/layout.erb +24 -0
  26. data/templates/assets/source/stylesheets/application.css.scss +2 -0
  27. data/templates/assets/source/stylesheets/vendor/jquery.mobile.css.scss +1872 -0
  28. data/templates/cordova_android/.gitignore +18 -0
  29. data/templates/cordova_android/LICENSE +202 -0
  30. data/templates/cordova_android/NOTICE +5 -0
  31. data/templates/cordova_android/README.md +95 -0
  32. data/templates/cordova_android/VERSION +1 -0
  33. data/templates/cordova_android/bin/BOOM +4 -0
  34. data/templates/cordova_android/bin/autotest +2 -0
  35. data/templates/cordova_android/bin/bench +29 -0
  36. data/templates/cordova_android/bin/create +46 -0
  37. data/templates/cordova_android/bin/create.bat +1 -0
  38. data/templates/cordova_android/bin/create.js +88 -0
  39. data/templates/cordova_android/bin/create.xml +79 -0
  40. data/templates/cordova_android/bin/node_modules/.bin/cake +7 -0
  41. data/templates/cordova_android/bin/node_modules/.bin/coffee +7 -0
  42. data/templates/cordova_android/bin/node_modules/.bin/nodeunit +120 -0
  43. data/templates/cordova_android/bin/node_modules/coffee-script/.npmignore +11 -0
  44. data/templates/cordova_android/bin/node_modules/coffee-script/LICENSE +22 -0
  45. data/templates/cordova_android/bin/node_modules/coffee-script/README +48 -0
  46. data/templates/cordova_android/bin/node_modules/coffee-script/Rakefile +78 -0
  47. data/templates/cordova_android/bin/node_modules/coffee-script/bin/cake +7 -0
  48. data/templates/cordova_android/bin/node_modules/coffee-script/bin/coffee +7 -0
  49. data/templates/cordova_android/bin/node_modules/coffee-script/extras/jsl.conf +44 -0
  50. data/templates/cordova_android/bin/node_modules/coffee-script/lib/browser.js +75 -0
  51. data/templates/cordova_android/bin/node_modules/coffee-script/lib/cake.js +76 -0
  52. data/templates/cordova_android/bin/node_modules/coffee-script/lib/coffee-script.js +135 -0
  53. data/templates/cordova_android/bin/node_modules/coffee-script/lib/command.js +301 -0
  54. data/templates/cordova_android/bin/node_modules/coffee-script/lib/grammar.js +591 -0
  55. data/templates/cordova_android/bin/node_modules/coffee-script/lib/helpers.js +66 -0
  56. data/templates/cordova_android/bin/node_modules/coffee-script/lib/index.js +8 -0
  57. data/templates/cordova_android/bin/node_modules/coffee-script/lib/lexer.js +656 -0
  58. data/templates/cordova_android/bin/node_modules/coffee-script/lib/nodes.js +2289 -0
  59. data/templates/cordova_android/bin/node_modules/coffee-script/lib/optparse.js +111 -0
  60. data/templates/cordova_android/bin/node_modules/coffee-script/lib/parser.js +676 -0
  61. data/templates/cordova_android/bin/node_modules/coffee-script/lib/repl.js +123 -0
  62. data/templates/cordova_android/bin/node_modules/coffee-script/lib/rewriter.js +363 -0
  63. data/templates/cordova_android/bin/node_modules/coffee-script/lib/scope.js +120 -0
  64. data/templates/cordova_android/bin/node_modules/coffee-script/package.json +27 -0
  65. data/templates/cordova_android/bin/node_modules/nodeunit/.gitignore +5 -0
  66. data/templates/cordova_android/bin/node_modules/nodeunit/.npmignore +3 -0
  67. data/templates/cordova_android/bin/node_modules/nodeunit/CONTRIBUTORS.md +60 -0
  68. data/templates/cordova_android/bin/node_modules/nodeunit/LICENSE +19 -0
  69. data/templates/cordova_android/bin/node_modules/nodeunit/Makefile +126 -0
  70. data/templates/cordova_android/bin/node_modules/nodeunit/README.md +432 -0
  71. data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit +120 -0
  72. data/templates/cordova_android/bin/node_modules/nodeunit/bin/nodeunit.json +10 -0
  73. data/templates/cordova_android/bin/node_modules/nodeunit/deps/async.js +623 -0
  74. data/templates/cordova_android/bin/node_modules/nodeunit/deps/console.log.js +55 -0
  75. data/templates/cordova_android/bin/node_modules/nodeunit/deps/ejs.js +125 -0
  76. data/templates/cordova_android/bin/node_modules/nodeunit/deps/json2.js +483 -0
  77. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/nodeunit.js +1757 -0
  78. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite1.js +12 -0
  79. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/suite2.js +13 -0
  80. data/templates/cordova_android/bin/node_modules/nodeunit/examples/browser/test.html +16 -0
  81. data/templates/cordova_android/bin/node_modules/nodeunit/img/example_fail.png +0 -0
  82. data/templates/cordova_android/bin/node_modules/nodeunit/img/example_pass.png +0 -0
  83. data/templates/cordova_android/bin/node_modules/nodeunit/index.js +3 -0
  84. data/templates/cordova_android/bin/node_modules/nodeunit/lib/assert.js +316 -0
  85. data/templates/cordova_android/bin/node_modules/nodeunit/lib/core.js +260 -0
  86. data/templates/cordova_android/bin/node_modules/nodeunit/lib/nodeunit.js +82 -0
  87. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/browser.js +119 -0
  88. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/default.js +123 -0
  89. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/html.js +107 -0
  90. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/index.js +9 -0
  91. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/junit.js +183 -0
  92. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/minimal.js +112 -0
  93. data/templates/cordova_android/bin/node_modules/nodeunit/lib/reporters/skip_passed.js +105 -0
  94. data/templates/cordova_android/bin/node_modules/nodeunit/lib/track.js +48 -0
  95. data/templates/cordova_android/bin/node_modules/nodeunit/lib/types.js +187 -0
  96. data/templates/cordova_android/bin/node_modules/nodeunit/lib/utils.js +209 -0
  97. data/templates/cordova_android/bin/node_modules/nodeunit/man1/nodeunit.1 +95 -0
  98. data/templates/cordova_android/bin/node_modules/nodeunit/nodelint.cfg +4 -0
  99. data/templates/cordova_android/bin/node_modules/nodeunit/package.json +56 -0
  100. data/templates/cordova_android/bin/node_modules/nodeunit/share/junit.xml.ejs +19 -0
  101. data/templates/cordova_android/bin/node_modules/nodeunit/share/license.js +11 -0
  102. data/templates/cordova_android/bin/node_modules/nodeunit/share/nodeunit.css +70 -0
  103. data/templates/cordova_android/bin/templates/project/.cordova/android/readme.md +1 -0
  104. data/templates/cordova_android/bin/templates/project/.cordova/readme.md +3 -0
  105. data/templates/cordova_android/bin/templates/project/cordova/create +36 -0
  106. data/templates/cordova_android/bin/templates/project/cordova/debug +9 -0
  107. data/templates/cordova_android/bin/templates/project/cordova/emulate +12 -0
  108. data/templates/cordova_android/bin/templates/project/cordova/log +3 -0
  109. data/templates/cordova_android/bin/templates/project/cordova/templates/Activity.java +16 -0
  110. data/templates/cordova_android/bin/templates/project/cordova/templates/project/AndroidManifest.xml +50 -0
  111. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/index.html +42 -0
  112. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/main.js +146 -0
  113. data/templates/cordova_android/bin/templates/project/cordova/templates/project/assets/www/master.css +96 -0
  114. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/drawable/icon.png +0 -0
  115. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/cordova.xml +5 -0
  116. data/templates/cordova_android/bin/templates/project/cordova/templates/project/res/xml/plugins.xml +19 -0
  117. data/templates/cordova_android/bin/test +26 -0
  118. data/templates/cordova_android/bin/tests/autotest.coffee +4 -0
  119. data/templates/cordova_android/bin/tests/create.coffee +21 -0
  120. data/templates/cordova_android/bin/tests/debug.coffee +0 -0
  121. data/templates/cordova_android/bin/tests/test.coffee +0 -0
  122. data/templates/cordova_android/framework/.classpath +8 -0
  123. data/templates/cordova_android/framework/.project +33 -0
  124. data/templates/cordova_android/framework/AndroidManifest.xml +68 -0
  125. data/templates/cordova_android/framework/ant.properties +34 -0
  126. data/templates/cordova_android/framework/assets/js/accelerometer.js +137 -0
  127. data/templates/cordova_android/framework/assets/js/app.js +89 -0
  128. data/templates/cordova_android/framework/assets/js/battery.js +134 -0
  129. data/templates/cordova_android/framework/assets/js/camera.js +168 -0
  130. data/templates/cordova_android/framework/assets/js/capture.js +203 -0
  131. data/templates/cordova_android/framework/assets/js/compass.js +168 -0
  132. data/templates/cordova_android/framework/assets/js/contact.js +310 -0
  133. data/templates/cordova_android/framework/assets/js/cordova.android.js +4841 -0
  134. data/templates/cordova_android/framework/assets/js/cordova.js.base +924 -0
  135. data/templates/cordova_android/framework/assets/js/crypto.js +54 -0
  136. data/templates/cordova_android/framework/assets/js/device.js +83 -0
  137. data/templates/cordova_android/framework/assets/js/file.js +1082 -0
  138. data/templates/cordova_android/framework/assets/js/filetransfer.js +125 -0
  139. data/templates/cordova_android/framework/assets/js/geolocation.js +209 -0
  140. data/templates/cordova_android/framework/assets/js/header.txt +19 -0
  141. data/templates/cordova_android/framework/assets/js/media.js +233 -0
  142. data/templates/cordova_android/framework/assets/js/network.js +100 -0
  143. data/templates/cordova_android/framework/assets/js/notification.js +133 -0
  144. data/templates/cordova_android/framework/assets/js/position.js +100 -0
  145. data/templates/cordova_android/framework/assets/js/storage.js +439 -0
  146. data/templates/cordova_android/framework/assets/www/index.html +27 -0
  147. data/templates/cordova_android/framework/build.xml +216 -0
  148. data/templates/cordova_android/framework/libs/commons-codec-1.3.jar +0 -0
  149. data/templates/cordova_android/framework/proguard-project.txt +20 -0
  150. data/templates/cordova_android/framework/project.properties +14 -0
  151. data/templates/cordova_android/framework/res/drawable/icon.png +0 -0
  152. data/templates/cordova_android/framework/res/drawable/splash.png +0 -0
  153. data/templates/cordova_android/framework/res/layout/main.xml +29 -0
  154. data/templates/cordova_android/framework/res/values/strings.xml +23 -0
  155. data/templates/cordova_android/framework/res/xml/cordova.xml +37 -0
  156. data/templates/cordova_android/framework/res/xml/plugins.xml +37 -0
  157. data/templates/cordova_android/framework/src/com/phonegap/api/IPlugin.java +27 -0
  158. data/templates/cordova_android/framework/src/com/phonegap/api/LOG.java +28 -0
  159. data/templates/cordova_android/framework/src/com/phonegap/api/PhonegapActivity.java +28 -0
  160. data/templates/cordova_android/framework/src/com/phonegap/api/Plugin.java +27 -0
  161. data/templates/cordova_android/framework/src/com/phonegap/api/PluginManager.java +35 -0
  162. data/templates/cordova_android/framework/src/com/phonegap/api/PluginResult.java +53 -0
  163. data/templates/cordova_android/framework/src/org/apache/cordova/AccelListener.java +311 -0
  164. data/templates/cordova_android/framework/src/org/apache/cordova/App.java +198 -0
  165. data/templates/cordova_android/framework/src/org/apache/cordova/AudioHandler.java +364 -0
  166. data/templates/cordova_android/framework/src/org/apache/cordova/AudioPlayer.java +450 -0
  167. data/templates/cordova_android/framework/src/org/apache/cordova/AuthenticationToken.java +69 -0
  168. data/templates/cordova_android/framework/src/org/apache/cordova/BatteryListener.java +156 -0
  169. data/templates/cordova_android/framework/src/org/apache/cordova/CallbackServer.java +431 -0
  170. data/templates/cordova_android/framework/src/org/apache/cordova/CameraLauncher.java +500 -0
  171. data/templates/cordova_android/framework/src/org/apache/cordova/Capture.java +400 -0
  172. data/templates/cordova_android/framework/src/org/apache/cordova/CompassListener.java +308 -0
  173. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessor.java +198 -0
  174. data/templates/cordova_android/framework/src/org/apache/cordova/ContactAccessorSdk5.java +1934 -0
  175. data/templates/cordova_android/framework/src/org/apache/cordova/ContactManager.java +113 -0
  176. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaChromeClient.java +314 -0
  177. data/templates/cordova_android/framework/src/org/apache/cordova/CordovaWebViewClient.java +306 -0
  178. data/templates/cordova_android/framework/src/org/apache/cordova/Device.java +219 -0
  179. data/templates/cordova_android/framework/src/org/apache/cordova/DirectoryManager.java +161 -0
  180. data/templates/cordova_android/framework/src/org/apache/cordova/DroidGap.java +1417 -0
  181. data/templates/cordova_android/framework/src/org/apache/cordova/ExifHelper.java +165 -0
  182. data/templates/cordova_android/framework/src/org/apache/cordova/FileTransfer.java +458 -0
  183. data/templates/cordova_android/framework/src/org/apache/cordova/FileUploadResult.java +63 -0
  184. data/templates/cordova_android/framework/src/org/apache/cordova/FileUtils.java +1048 -0
  185. data/templates/cordova_android/framework/src/org/apache/cordova/GeoBroker.java +165 -0
  186. data/templates/cordova_android/framework/src/org/apache/cordova/GeoListener.java +133 -0
  187. data/templates/cordova_android/framework/src/org/apache/cordova/GpsListener.java +163 -0
  188. data/templates/cordova_android/framework/src/org/apache/cordova/HttpHandler.java +80 -0
  189. data/templates/cordova_android/framework/src/org/apache/cordova/LinearLayoutSoftKeyboardDetect.java +104 -0
  190. data/templates/cordova_android/framework/src/org/apache/cordova/NetworkListener.java +153 -0
  191. data/templates/cordova_android/framework/src/org/apache/cordova/NetworkManager.java +248 -0
  192. data/templates/cordova_android/framework/src/org/apache/cordova/Notification.java +366 -0
  193. data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceNode.java +34 -0
  194. data/templates/cordova_android/framework/src/org/apache/cordova/PreferenceSet.java +62 -0
  195. data/templates/cordova_android/framework/src/org/apache/cordova/StandAlone.java +35 -0
  196. data/templates/cordova_android/framework/src/org/apache/cordova/Storage.java +239 -0
  197. data/templates/cordova_android/framework/src/org/apache/cordova/TempListener.java +112 -0
  198. data/templates/cordova_android/framework/src/org/apache/cordova/api/CordovaInterface.java +145 -0
  199. data/templates/cordova_android/framework/src/org/apache/cordova/api/IPlugin.java +116 -0
  200. data/templates/cordova_android/framework/src/org/apache/cordova/api/LOG.java +234 -0
  201. data/templates/cordova_android/framework/src/org/apache/cordova/api/Plugin.java +210 -0
  202. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginManager.java +359 -0
  203. data/templates/cordova_android/framework/src/org/apache/cordova/api/PluginResult.java +119 -0
  204. data/templates/cordova_android/framework/src/org/apache/cordova/file/EncodingException.java +28 -0
  205. data/templates/cordova_android/framework/src/org/apache/cordova/file/FileExistsException.java +28 -0
  206. data/templates/cordova_android/framework/src/org/apache/cordova/file/InvalidModificationException.java +29 -0
  207. data/templates/cordova_android/framework/src/org/apache/cordova/file/NoModificationAllowedException.java +28 -0
  208. data/templates/cordova_android/framework/src/org/apache/cordova/file/TypeMismatchException.java +29 -0
  209. data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceNodeTest.java +53 -0
  210. data/templates/cordova_android/framework/test/org/apache/cordova/PreferenceSetTest.java +73 -0
  211. metadata +279 -0
@@ -0,0 +1,134 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ if (!Cordova.hasResource("battery")) {
21
+ Cordova.addResource("battery");
22
+
23
+ /**
24
+ * This class contains information about the current battery status.
25
+ * @constructor
26
+ */
27
+ var Battery = function() {
28
+ this._level = null;
29
+ this._isPlugged = null;
30
+ this._batteryListener = [];
31
+ this._lowListener = [];
32
+ this._criticalListener = [];
33
+ };
34
+
35
+ /**
36
+ * Registers as an event producer for battery events.
37
+ *
38
+ * @param {Object} eventType
39
+ * @param {Object} handler
40
+ * @param {Object} add
41
+ */
42
+ Battery.prototype.eventHandler = function(eventType, handler, add) {
43
+ var me = navigator.battery;
44
+ if (add) {
45
+ // If there are no current registered event listeners start the battery listener on native side.
46
+ if (me._batteryListener.length === 0 && me._lowListener.length === 0 && me._criticalListener.length === 0) {
47
+ Cordova.exec(me._status, me._error, "Battery", "start", []);
48
+ }
49
+
50
+ // Register the event listener in the proper array
51
+ if (eventType === "batterystatus") {
52
+ if (me._batteryListener.indexOf(handler) === -1) {
53
+ me._batteryListener.push(handler);
54
+ }
55
+ } else if (eventType === "batterylow") {
56
+ if (me._lowListener.indexOf(handler) === -1) {
57
+ me._lowListener.push(handler);
58
+ }
59
+ } else if (eventType === "batterycritical") {
60
+ if (me._criticalListener.indexOf(handler) === -1) {
61
+ me._criticalListener.push(handler);
62
+ }
63
+ }
64
+ } else {
65
+ var pos = -1;
66
+ // Remove the event listener from the proper array
67
+ if (eventType === "batterystatus") {
68
+ pos = me._batteryListener.indexOf(handler);
69
+ if (pos > -1) {
70
+ me._batteryListener.splice(pos, 1);
71
+ }
72
+ } else if (eventType === "batterylow") {
73
+ pos = me._lowListener.indexOf(handler);
74
+ if (pos > -1) {
75
+ me._lowListener.splice(pos, 1);
76
+ }
77
+ } else if (eventType === "batterycritical") {
78
+ pos = me._criticalListener.indexOf(handler);
79
+ if (pos > -1) {
80
+ me._criticalListener.splice(pos, 1);
81
+ }
82
+ }
83
+
84
+ // If there are no more registered event listeners stop the battery listener on native side.
85
+ if (me._batteryListener.length === 0 && me._lowListener.length === 0 && me._criticalListener.length === 0) {
86
+ Cordova.exec(null, null, "Battery", "stop", []);
87
+ }
88
+ }
89
+ };
90
+
91
+ /**
92
+ * Callback for battery status
93
+ *
94
+ * @param {Object} info keys: level, isPlugged
95
+ */
96
+ Battery.prototype._status = function(info) {
97
+ if (info) {
98
+ var me = this;
99
+ var level = info.level;
100
+ if (me._level !== level || me._isPlugged !== info.isPlugged) {
101
+ // Fire batterystatus event
102
+ Cordova.fireWindowEvent("batterystatus", info);
103
+
104
+ // Fire low battery event
105
+ if (level === 20 || level === 5) {
106
+ if (level === 20) {
107
+ Cordova.fireWindowEvent("batterylow", info);
108
+ }
109
+ else {
110
+ Cordova.fireWindowEvent("batterycritical", info);
111
+ }
112
+ }
113
+ }
114
+ me._level = level;
115
+ me._isPlugged = info.isPlugged;
116
+ }
117
+ };
118
+
119
+ /**
120
+ * Error callback for battery start
121
+ */
122
+ Battery.prototype._error = function(e) {
123
+ console.log("Error initializing Battery: " + e);
124
+ };
125
+
126
+ Cordova.addConstructor(function() {
127
+ if (typeof navigator.battery === "undefined") {
128
+ navigator.battery = new Battery();
129
+ Cordova.addWindowEventHandler("batterystatus", navigator.battery.eventHandler);
130
+ Cordova.addWindowEventHandler("batterylow", navigator.battery.eventHandler);
131
+ Cordova.addWindowEventHandler("batterycritical", navigator.battery.eventHandler);
132
+ }
133
+ });
134
+ }
@@ -0,0 +1,168 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ if (!Cordova.hasResource("camera")) {
21
+ Cordova.addResource("camera");
22
+
23
+ /**
24
+ * This class provides access to the device camera.
25
+ *
26
+ * @constructor
27
+ */
28
+ var Camera = function() {
29
+ this.successCallback = null;
30
+ this.errorCallback = null;
31
+ this.options = null;
32
+ };
33
+
34
+ /**
35
+ * Format of image that returned from getPicture.
36
+ *
37
+ * Example: navigator.camera.getPicture(success, fail,
38
+ * { quality: 80,
39
+ * destinationType: Camera.DestinationType.DATA_URL,
40
+ * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
41
+ */
42
+ Camera.DestinationType = {
43
+ DATA_URL: 0, // Return base64 encoded string
44
+ FILE_URI: 1 // Return file uri (content://media/external/images/media/2 for Android)
45
+ };
46
+ Camera.prototype.DestinationType = Camera.DestinationType;
47
+
48
+ /**
49
+ * Encoding of image returned from getPicture.
50
+ *
51
+ * Example: navigator.camera.getPicture(success, fail,
52
+ * { quality: 80,
53
+ * destinationType: Camera.DestinationType.DATA_URL,
54
+ * sourceType: Camera.PictureSourceType.CAMERA,
55
+ * encodingType: Camera.EncodingType.PNG})
56
+ */
57
+ Camera.EncodingType = {
58
+ JPEG: 0, // Return JPEG encoded image
59
+ PNG: 1 // Return PNG encoded image
60
+ };
61
+ Camera.prototype.EncodingType = Camera.EncodingType;
62
+
63
+ /**
64
+ * Type of pictures to select from. Only applicable when
65
+ * PictureSourceType is PHOTOLIBRARY or SAVEDPHOTOALBUM
66
+ *
67
+ * Example: navigator.camera.getPicture(success, fail,
68
+ * { quality: 80,
69
+ * destinationType: Camera.DestinationType.DATA_URL,
70
+ * sourceType: Camera.PictureSourceType.PHOTOLIBRARY,
71
+ * mediaType: Camera.MediaType.PICTURE})
72
+ */
73
+ Camera.MediaType = {
74
+ PICTURE: 0, // allow selection of still pictures only. DEFAULT. Will return format specified via DestinationType
75
+ VIDEO: 1, // allow selection of video only, ONLY RETURNS URL
76
+ ALLMEDIA : 2 // allow selection from all media types
77
+ };
78
+ Camera.prototype.MediaType = Camera.MediaType;
79
+
80
+
81
+ /**
82
+ * Source to getPicture from.
83
+ *
84
+ * Example: navigator.camera.getPicture(success, fail,
85
+ * { quality: 80,
86
+ * destinationType: Camera.DestinationType.DATA_URL,
87
+ * sourceType: Camera.PictureSourceType.PHOTOLIBRARY})
88
+ */
89
+ Camera.PictureSourceType = {
90
+ PHOTOLIBRARY : 0, // Choose image from picture library (same as SAVEDPHOTOALBUM for Android)
91
+ CAMERA : 1, // Take picture from camera
92
+ SAVEDPHOTOALBUM : 2 // Choose image from picture library (same as PHOTOLIBRARY for Android)
93
+ };
94
+ Camera.prototype.PictureSourceType = Camera.PictureSourceType;
95
+
96
+ /**
97
+ * Gets a picture from source defined by "options.sourceType", and returns the
98
+ * image as defined by the "options.destinationType" option.
99
+
100
+ * The defaults are sourceType=CAMERA and destinationType=DATA_URL.
101
+ *
102
+ * @param {Function} successCallback
103
+ * @param {Function} errorCallback
104
+ * @param {Object} options
105
+ */
106
+ Camera.prototype.getPicture = function(successCallback, errorCallback, options) {
107
+
108
+ // successCallback required
109
+ if (typeof successCallback !== "function") {
110
+ console.log("Camera Error: successCallback is not a function");
111
+ return;
112
+ }
113
+
114
+ // errorCallback optional
115
+ if (errorCallback && (typeof errorCallback !== "function")) {
116
+ console.log("Camera Error: errorCallback is not a function");
117
+ return;
118
+ }
119
+
120
+ if (options === null || typeof options === "undefined") {
121
+ options = {};
122
+ }
123
+ if (options.quality === null || typeof options.quality === "undefined") {
124
+ options.quality = 80;
125
+ }
126
+ if (options.maxResolution === null || typeof options.maxResolution === "undefined") {
127
+ options.maxResolution = 0;
128
+ }
129
+ if (options.destinationType === null || typeof options.destinationType === "undefined") {
130
+ options.destinationType = Camera.DestinationType.FILE_URI;
131
+ }
132
+ if (options.sourceType === null || typeof options.sourceType === "undefined") {
133
+ options.sourceType = Camera.PictureSourceType.CAMERA;
134
+ }
135
+ if (options.encodingType === null || typeof options.encodingType === "undefined") {
136
+ options.encodingType = Camera.EncodingType.JPEG;
137
+ }
138
+ if (options.mediaType === null || typeof options.mediaType === "undefined") {
139
+ options.mediaType = Camera.MediaType.PICTURE;
140
+ }
141
+ if (options.targetWidth === null || typeof options.targetWidth === "undefined") {
142
+ options.targetWidth = -1;
143
+ }
144
+ else if (typeof options.targetWidth === "string") {
145
+ var width = new Number(options.targetWidth);
146
+ if (isNaN(width) === false) {
147
+ options.targetWidth = width.valueOf();
148
+ }
149
+ }
150
+ if (options.targetHeight === null || typeof options.targetHeight === "undefined") {
151
+ options.targetHeight = -1;
152
+ }
153
+ else if (typeof options.targetHeight === "string") {
154
+ var height = new Number(options.targetHeight);
155
+ if (isNaN(height) === false) {
156
+ options.targetHeight = height.valueOf();
157
+ }
158
+ }
159
+
160
+ Cordova.exec(successCallback, errorCallback, "Camera", "takePicture", [options]);
161
+ };
162
+
163
+ Cordova.addConstructor(function() {
164
+ if (typeof navigator.camera === "undefined") {
165
+ navigator.camera = new Camera();
166
+ }
167
+ });
168
+ }
@@ -0,0 +1,203 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ if (!Cordova.hasResource("capture")) {
21
+ Cordova.addResource("capture");
22
+
23
+ /**
24
+ * Represents a single file.
25
+ *
26
+ * name {DOMString} name of the file, without path information
27
+ * fullPath {DOMString} the full path of the file, including the name
28
+ * type {DOMString} mime type
29
+ * lastModifiedDate {Date} last modified date
30
+ * size {Number} size of the file in bytes
31
+ */
32
+ var MediaFile = function(name, fullPath, type, lastModifiedDate, size){
33
+ this.name = name || null;
34
+ this.fullPath = fullPath || null;
35
+ this.type = type || null;
36
+ this.lastModifiedDate = lastModifiedDate || null;
37
+ this.size = size || 0;
38
+ };
39
+
40
+ /**
41
+ * Launch device camera application for recording video(s).
42
+ *
43
+ * @param {Function} successCB
44
+ * @param {Function} errorCB
45
+ */
46
+ MediaFile.prototype.getFormatData = function(successCallback, errorCallback){
47
+ Cordova.exec(successCallback, errorCallback, "Capture", "getFormatData", [this.fullPath, this.type]);
48
+ };
49
+
50
+ /**
51
+ * MediaFileData encapsulates format information of a media file.
52
+ *
53
+ * @param {DOMString} codecs
54
+ * @param {long} bitrate
55
+ * @param {long} height
56
+ * @param {long} width
57
+ * @param {float} duration
58
+ */
59
+ var MediaFileData = function(codecs, bitrate, height, width, duration){
60
+ this.codecs = codecs || null;
61
+ this.bitrate = bitrate || 0;
62
+ this.height = height || 0;
63
+ this.width = width || 0;
64
+ this.duration = duration || 0;
65
+ };
66
+
67
+ /**
68
+ * The CaptureError interface encapsulates all errors in the Capture API.
69
+ */
70
+ var CaptureError = function(){
71
+ this.code = null;
72
+ };
73
+
74
+ // Capture error codes
75
+ CaptureError.CAPTURE_INTERNAL_ERR = 0;
76
+ CaptureError.CAPTURE_APPLICATION_BUSY = 1;
77
+ CaptureError.CAPTURE_INVALID_ARGUMENT = 2;
78
+ CaptureError.CAPTURE_NO_MEDIA_FILES = 3;
79
+ CaptureError.CAPTURE_NOT_SUPPORTED = 20;
80
+
81
+ /**
82
+ * The Capture interface exposes an interface to the camera and microphone of the hosting device.
83
+ */
84
+ var Capture = function(){
85
+ this.supportedAudioModes = [];
86
+ this.supportedImageModes = [];
87
+ this.supportedVideoModes = [];
88
+ };
89
+
90
+ /**
91
+ * Launch audio recorder application for recording audio clip(s).
92
+ *
93
+ * @param {Function} successCB
94
+ * @param {Function} errorCB
95
+ * @param {CaptureAudioOptions} options
96
+ */
97
+ Capture.prototype.captureAudio = function(successCallback, errorCallback, options){
98
+ navigator.device.capture._capture("captureAudio", successCallback, errorCallback, options);
99
+ };
100
+
101
+ /**
102
+ * Launch camera application for taking image(s).
103
+ *
104
+ * @param {Function} successCB
105
+ * @param {Function} errorCB
106
+ * @param {CaptureImageOptions} options
107
+ */
108
+ Capture.prototype.captureImage = function(successCallback, errorCallback, options){
109
+ navigator.device.capture._capture("captureImage", successCallback, errorCallback, options);
110
+ };
111
+
112
+ /**
113
+ * Launch device camera application for recording video(s).
114
+ *
115
+ * @param {Function} successCB
116
+ * @param {Function} errorCB
117
+ * @param {CaptureVideoOptions} options
118
+ */
119
+ Capture.prototype.captureVideo = function(successCallback, errorCallback, options){
120
+ navigator.device.capture._capture("captureVideo", successCallback, errorCallback, options);
121
+ };
122
+
123
+ /**
124
+ * Launches the correct capture.
125
+ *
126
+ * @param (DOMString} type
127
+ * @param {Function} successCB
128
+ * @param {Function} errorCB
129
+ * @param {CaptureVideoOptions} options
130
+ */
131
+ Capture.prototype._capture = function(type, successCallback, errorCallback, options){
132
+ var win = function(result) {
133
+ var mediaFiles = [];
134
+ var i;
135
+ for (i = 0; i < pluginResult.message.length; i++) {
136
+ var mediaFile = new MediaFile();
137
+ mediaFile.name = pluginResult.message[i].name;
138
+ mediaFile.fullPath = pluginResult.message[i].fullPath;
139
+ mediaFile.type = pluginResult.message[i].type;
140
+ mediaFile.lastModifiedDate = pluginResult.message[i].lastModifiedDate;
141
+ mediaFile.size = pluginResult.message[i].size;
142
+ mediaFiles.push(mediaFile);
143
+ }
144
+ successCallback(mediaFiles);
145
+ };
146
+ Cordova.exec(win, errorCallback, "Capture", type, [options]);
147
+ };
148
+
149
+
150
+ /**
151
+ * Encapsulates a set of parameters that the capture device supports.
152
+ */
153
+ var ConfigurationData = function(){
154
+ // The ASCII-encoded string in lower case representing the media type.
155
+ this.type = null;
156
+ // The height attribute represents height of the image or video in pixels.
157
+ // In the case of a sound clip this attribute has value 0.
158
+ this.height = 0;
159
+ // The width attribute represents width of the image or video in pixels.
160
+ // In the case of a sound clip this attribute has value 0
161
+ this.width = 0;
162
+ };
163
+
164
+ /**
165
+ * Encapsulates all image capture operation configuration options.
166
+ */
167
+ var CaptureImageOptions = function(){
168
+ // Upper limit of images user can take. Value must be equal or greater than 1.
169
+ this.limit = 1;
170
+ // The selected image mode. Must match with one of the elements in supportedImageModes array.
171
+ this.mode = null;
172
+ };
173
+
174
+ /**
175
+ * Encapsulates all video capture operation configuration options.
176
+ */
177
+ var CaptureVideoOptions = function(){
178
+ // Upper limit of videos user can record. Value must be equal or greater than 1.
179
+ this.limit = 1;
180
+ // Maximum duration of a single video clip in seconds.
181
+ this.duration = 0;
182
+ // The selected video mode. Must match with one of the elements in supportedVideoModes array.
183
+ this.mode = null;
184
+ };
185
+
186
+ /**
187
+ * Encapsulates all audio capture operation configuration options.
188
+ */
189
+ var CaptureAudioOptions = function(){
190
+ // Upper limit of sound clips user can record. Value must be equal or greater than 1.
191
+ this.limit = 1;
192
+ // Maximum duration of a single sound clip in seconds.
193
+ this.duration = 0;
194
+ // The selected audio mode. Must match with one of the elements in supportedAudioModes array.
195
+ this.mode = null;
196
+ };
197
+
198
+ Cordova.addConstructor(function(){
199
+ if (typeof navigator.device.capture === "undefined") {
200
+ navigator.device.capture = window.device.capture = new Capture();
201
+ }
202
+ });
203
+ }
@@ -0,0 +1,168 @@
1
+ /*
2
+ * Licensed to the Apache Software Foundation (ASF) under one
3
+ * or more contributor license agreements. See the NOTICE file
4
+ * distributed with this work for additional information
5
+ * regarding copyright ownership. The ASF licenses this file
6
+ * to you under the Apache License, Version 2.0 (the
7
+ * "License"); you may not use this file except in compliance
8
+ * with the License. You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing,
13
+ * software distributed under the License is distributed on an
14
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15
+ * KIND, either express or implied. See the License for the
16
+ * specific language governing permissions and limitations
17
+ * under the License.
18
+ */
19
+
20
+ if (!Cordova.hasResource("compass")) {
21
+ Cordova.addResource("compass");
22
+
23
+ var CompassError = function(){
24
+ this.code = null;
25
+ };
26
+
27
+ // Capture error codes
28
+ CompassError.COMPASS_INTERNAL_ERR = 0;
29
+ CompassError.COMPASS_NOT_SUPPORTED = 20;
30
+
31
+ var CompassHeading = function() {
32
+ this.magneticHeading = null;
33
+ this.trueHeading = null;
34
+ this.headingAccuracy = null;
35
+ this.timestamp = null;
36
+ };
37
+
38
+ /**
39
+ * This class provides access to device Compass data.
40
+ * @constructor
41
+ */
42
+ var Compass = function() {
43
+ /**
44
+ * The last known Compass position.
45
+ */
46
+ this.lastHeading = null;
47
+
48
+ /**
49
+ * List of compass watch timers
50
+ */
51
+ this.timers = {};
52
+ };
53
+
54
+ Compass.ERROR_MSG = ["Not running", "Starting", "", "Failed to start"];
55
+
56
+ /**
57
+ * Asynchronously aquires the current heading.
58
+ *
59
+ * @param {Function} successCallback The function to call when the heading data is available
60
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
61
+ * @param {PositionOptions} options The options for getting the heading data such as timeout. (OPTIONAL)
62
+ */
63
+ Compass.prototype.getCurrentHeading = function(successCallback, errorCallback, options) {
64
+
65
+ // successCallback required
66
+ if (typeof successCallback !== "function") {
67
+ console.log("Compass Error: successCallback is not a function");
68
+ return;
69
+ }
70
+
71
+ // errorCallback optional
72
+ if (errorCallback && (typeof errorCallback !== "function")) {
73
+ console.log("Compass Error: errorCallback is not a function");
74
+ return;
75
+ }
76
+
77
+ var win = function(result) {
78
+ if (result.timestamp) {
79
+ var timestamp = new Date(result.timestamp);
80
+ result.timestamp = timestamp;
81
+ }
82
+ successCallback(result);
83
+ };
84
+
85
+ // Get heading
86
+ Cordova.exec(win, errorCallback, "Compass", "getHeading", []);
87
+ };
88
+
89
+ /**
90
+ * Asynchronously aquires the heading repeatedly at a given interval.
91
+ *
92
+ * @param {Function} successCallback The function to call each time the heading data is available
93
+ * @param {Function} errorCallback The function to call when there is an error getting the heading data. (OPTIONAL)
94
+ * @param {HeadingOptions} options The options for getting the heading data such as timeout and the frequency of the watch. (OPTIONAL)
95
+ * @return String The watch id that must be passed to #clearWatch to stop watching.
96
+ */
97
+ Compass.prototype.watchHeading= function(successCallback, errorCallback, options) {
98
+
99
+ // Default interval (100 msec)
100
+ var frequency = (options !== undefined) ? options.frequency : 100;
101
+
102
+ // successCallback required
103
+ if (typeof successCallback !== "function") {
104
+ console.log("Compass Error: successCallback is not a function");
105
+ return;
106
+ }
107
+
108
+ // errorCallback optional
109
+ if (errorCallback && (typeof errorCallback !== "function")) {
110
+ console.log("Compass Error: errorCallback is not a function");
111
+ return;
112
+ }
113
+
114
+ // Make sure compass timeout > frequency + 10 sec
115
+ Cordova.exec(
116
+ function(timeout) {
117
+ if (timeout < (frequency + 10000)) {
118
+ Cordova.exec(null, null, "Compass", "setTimeout", [frequency + 10000]);
119
+ }
120
+ },
121
+ function(e) { }, "Compass", "getTimeout", []);
122
+
123
+ // Start watch timer to get headings
124
+ var id = Cordova.createUUID();
125
+ navigator.compass.timers[id] = setInterval(
126
+ function() {
127
+ var win = function(result) {
128
+ if (result.timestamp) {
129
+ var timestamp = new Date(result.timestamp);
130
+ result.timestamp = timestamp;
131
+ }
132
+ successCallback(result);
133
+ };
134
+ Cordova.exec(win, errorCallback, "Compass", "getHeading", []);
135
+ }, (frequency ? frequency : 1));
136
+
137
+ return id;
138
+ };
139
+
140
+
141
+ /**
142
+ * Clears the specified heading watch.
143
+ *
144
+ * @param {String} id The ID of the watch returned from #watchHeading.
145
+ */
146
+ Compass.prototype.clearWatch = function(id) {
147
+
148
+ // Stop javascript timer & remove from timer list
149
+ if (id && navigator.compass.timers[id]) {
150
+ clearInterval(navigator.compass.timers[id]);
151
+ delete navigator.compass.timers[id];
152
+ }
153
+ };
154
+
155
+ Compass.prototype._castDate = function(pluginResult) {
156
+ if (pluginResult.message.timestamp) {
157
+ var timestamp = new Date(pluginResult.message.timestamp);
158
+ pluginResult.message.timestamp = timestamp;
159
+ }
160
+ return pluginResult;
161
+ };
162
+
163
+ Cordova.addConstructor(function() {
164
+ if (typeof navigator.compass === "undefined") {
165
+ navigator.compass = new Compass();
166
+ }
167
+ });
168
+ }