rhodes 2.2.6 → 2.3.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (486) hide show
  1. data/CHANGELOG +20 -0
  2. data/README.md +46 -0
  3. data/Rakefile +85 -80
  4. data/bin/rhodes +2 -2
  5. data/bin/rhogen +1 -1
  6. data/doc/application.txt +277 -0
  7. data/doc/bb-css.txt +209 -0
  8. data/doc/build.txt +785 -0
  9. data/doc/configuration.txt +236 -0
  10. data/doc/connect-to-web-services.txt +282 -0
  11. data/doc/contributing.txt +64 -0
  12. data/doc/css-framework.txt +144 -0
  13. data/doc/device-caps.txt +1152 -0
  14. data/doc/extensions.txt +528 -0
  15. data/doc/files.txt +4 -0
  16. data/doc/generator.txt +141 -0
  17. data/doc/install.txt +35 -0
  18. data/doc/introduction.txt +88 -0
  19. data/doc/rhom.txt +826 -0
  20. data/doc/standard-css.txt +392 -0
  21. data/doc/synchronization.txt +542 -0
  22. data/doc/test-log-debug.txt +148 -0
  23. data/doc/tutorial.txt +136 -0
  24. data/doc/ui.txt +766 -0
  25. data/installer/EnvVarUpdate.nsh +328 -0
  26. data/installer/README.html +81 -0
  27. data/installer/RHOSYNC-LICENSE.txt +675 -0
  28. data/installer/icon.ico +0 -0
  29. data/installer/instant-rhodes.nsi +427 -0
  30. data/lib/build/jake.rb +15 -1
  31. data/lib/extensions/barcode/ext/barcode/platform/android/jni/src/imageprovider.cpp +1 -1
  32. data/lib/extensions/barcode/ext/barcode/platform/bb/Barcode6.files +45 -0
  33. data/lib/extensions/barcode/ext/barcode/platform/bb/Rakefile +6 -0
  34. data/lib/extensions/barcode/ext/barcode/platform/bb/barcode6.jdp +92 -0
  35. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +7 -4
  36. data/lib/extensions/barcode/ext/barcode/platform/iphone/Rakefile +2 -1
  37. data/lib/extensions/barcode/ext/barcode/platform/wm/src/wm_imageprovider.cpp +1 -1
  38. data/lib/extensions/digest-sha1/ext/build.bat +1 -0
  39. data/lib/extensions/digest-sha1/ext/digest-sha1.vcproj +335 -0
  40. data/lib/extensions/esri/ext/build +17 -0
  41. data/lib/extensions/esri/ext/build.bat +29 -0
  42. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/ESRIViewFactory.h +7 -0
  43. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/ESRIViewFactory.mm +58 -0
  44. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/ESRIViewFactoryRegister.mm +22 -0
  45. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/ESRIViewManager.h +21 -0
  46. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/ESRIViewManager.mm +32 -0
  47. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/InitESRI.c +5 -0
  48. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/MapViewControllerESRI.h +143 -0
  49. data/lib/extensions/esri/ext/esri/platform/iphone/Classes/MapViewControllerESRI.m +919 -0
  50. data/lib/extensions/esri/ext/esri/platform/iphone/ESRI.xcodeproj/project.pbxproj +320 -0
  51. data/lib/extensions/esri/ext/esri/platform/iphone/ESRI_Prefix.pch +7 -0
  52. data/lib/extensions/esri/ext/esri/platform/iphone/Rakefile +76 -0
  53. data/lib/extensions/esri/ext.yml +3 -0
  54. data/lib/extensions/net-http/monitor.rb +265 -0
  55. data/lib/extensions/net-http/net/ftp.rb +981 -0
  56. data/lib/extensions/net-http/thread.rb +367 -0
  57. data/lib/extensions/rhocgi/cgi.rb +16 -0
  58. data/lib/extensions/rhospec/rhospec.rb +118 -0
  59. data/lib/framework/base64.rb +91 -0
  60. data/lib/framework/builtinME.rb +13 -10
  61. data/lib/framework/ostruct.rb +145 -0
  62. data/lib/framework/res/back_btn.wm.png +0 -0
  63. data/lib/framework/res/blue_pushpin.wm.png +0 -0
  64. data/lib/framework/res/blue_pushpin_small.wm.png +0 -0
  65. data/lib/framework/res/callout.wm.png +0 -0
  66. data/lib/framework/res/callout_link.wm.png +0 -0
  67. data/lib/framework/res/forward_btn.wm.png +0 -0
  68. data/lib/framework/res/home_btn.wm.png +0 -0
  69. data/lib/framework/res/options_btn.wm.png +0 -0
  70. data/lib/framework/res/refresh_btn.wm.png +0 -0
  71. data/lib/framework/rho/render.rb +5 -2
  72. data/lib/framework/rho/rho.rb +320 -50
  73. data/lib/framework/rho/rhoapplication.rb +48 -10
  74. data/lib/framework/rho/rhonativeviewmanager.rb +73 -0
  75. data/lib/framework/rho/rhosupport.rb +15 -1
  76. data/lib/framework/rho/rhotabbar.rb +29 -0
  77. data/lib/framework/rho/rhotoolbar.rb +17 -0
  78. data/lib/framework/rho/rhoutils.rb +22 -6
  79. data/lib/framework/rhodes.rb +1 -1
  80. data/lib/framework/rholang/rhomsg_de.rb +4 -3
  81. data/lib/framework/rholang/rhomsg_en.rb +1 -0
  82. data/lib/framework/rholang/rhomsg_es.rb +1 -0
  83. data/lib/framework/rholang/rhomsg_it.rb +1 -0
  84. data/lib/framework/rhom/rhom.rb +31 -10
  85. data/lib/framework/rhom/rhom_db_adapter.rb +33 -23
  86. data/lib/framework/rhom/rhom_object_factory.rb +465 -249
  87. data/lib/framework/rhom/rhom_source.rb +22 -7
  88. data/lib/framework/version.rb +1 -1
  89. data/lib/rhodes.rb +1 -1
  90. data/platform/android/Rhodes/AndroidManifest.xml +83 -20
  91. data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +5 -0
  92. data/platform/android/Rhodes/jni/include/rhodes/RhoClassFactory.h +2 -0
  93. data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +9 -5
  94. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesAppOptions.h +53 -0
  95. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +46 -56
  96. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_SplashScreen.h +10 -0
  97. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_mapview_MapView.h +93 -0
  98. data/platform/android/Rhodes/jni/include/rhodes/rhocryptimpl.h +38 -0
  99. data/platform/android/Rhodes/jni/include/rhodes.h +64 -8
  100. data/platform/android/Rhodes/jni/src/RhoClassFactory.cpp +6 -0
  101. data/platform/android/Rhodes/jni/src/alert.cpp +5 -11
  102. data/platform/android/Rhodes/jni/src/bluetooth.cpp +66 -29
  103. data/platform/android/Rhodes/jni/src/callbacks.cpp +24 -21
  104. data/platform/android/Rhodes/jni/src/camera.cpp +2 -6
  105. data/platform/android/Rhodes/jni/src/datetimepicker.cpp +13 -11
  106. data/platform/android/Rhodes/jni/src/event.cpp +9 -15
  107. data/platform/android/Rhodes/jni/src/fileapi.cpp +13 -27
  108. data/platform/android/Rhodes/jni/src/logconf.cpp +3 -3
  109. data/platform/android/Rhodes/jni/src/mapview.cpp +696 -16
  110. data/platform/android/Rhodes/jni/src/menu.cpp +3 -3
  111. data/platform/android/Rhodes/jni/src/nativebar.cpp +55 -4
  112. data/platform/android/Rhodes/jni/src/nativeview.cpp +33 -0
  113. data/platform/android/Rhodes/jni/src/phonebook.cpp +6 -11
  114. data/platform/android/Rhodes/jni/src/rhoconf.cpp +4 -4
  115. data/platform/android/Rhodes/jni/src/rhocryptimpl.cpp +87 -0
  116. data/platform/android/Rhodes/jni/src/rhodes.cpp +55 -34
  117. data/platform/android/Rhodes/jni/src/ringtones.cpp +2 -3
  118. data/platform/android/Rhodes/jni/src/signature.cpp +3 -5
  119. data/platform/android/Rhodes/jni/src/splashscreen.cpp +7 -0
  120. data/platform/android/Rhodes/jni/src/sslimpl.cpp +17 -20
  121. data/platform/android/Rhodes/jni/src/webview.cpp +13 -12
  122. data/platform/android/Rhodes/res/drawable/callout.png +0 -0
  123. data/platform/android/Rhodes/res/drawable/callout_link.png +0 -0
  124. data/platform/android/Rhodes/res/drawable/signature_cancel.png +0 -0
  125. data/platform/android/Rhodes/res/drawable/signature_clear.png +0 -0
  126. data/platform/android/Rhodes/res/drawable/signature_ok.png +0 -0
  127. data/platform/android/Rhodes/res/layout/datetime.xml +4 -0
  128. data/platform/android/Rhodes/res/layout/signature.xml +24 -17
  129. data/platform/android/Rhodes/res/layout/status_bar_ongoing_event_progress_bar.xml +102 -0
  130. data/platform/android/Rhodes/res/values/strings.xml +1 -1
  131. data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +6 -0
  132. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Base64.java +575 -0
  133. data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +83 -0
  134. data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java +21 -3
  135. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +23 -15
  136. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +2 -2
  137. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoCryptImpl.java +151 -0
  138. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoMenu.java +2 -2
  139. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +372 -0
  140. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesAppOptions.java +11 -0
  141. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +58 -0
  142. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +705 -523
  143. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RingtoneManager.java +1 -1
  144. data/platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java +167 -85
  145. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Utils.java +36 -1
  146. data/platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java +4 -2
  147. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java +33 -20
  148. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +2 -6
  149. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +2 -24
  150. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +106 -36
  151. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +15 -58
  152. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +0 -7
  153. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +6 -4
  154. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/FileList.java +4 -3
  155. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +91 -27
  156. data/platform/android/Rhodes/src/com/rhomobile/rhodes/datetime/DateTimePicker.java +6 -3
  157. data/platform/android/Rhodes/src/com/rhomobile/rhodes/datetime/DateTimePickerScreen.java +275 -42
  158. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +1 -1
  159. data/platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java +1 -3
  160. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +1 -1
  161. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java +1 -0
  162. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +120 -43
  163. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +518 -28
  164. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/AnnotationsOverlay.java +2 -2
  165. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/GoogleMapView.java +434 -0
  166. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapTouch.java +20 -0
  167. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +296 -336
  168. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MultiTouchHandler.java +111 -0
  169. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/OneTouchHandler.java +77 -0
  170. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/TouchHandler.java +10 -0
  171. data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java +0 -1
  172. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java +5 -1
  173. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java +1 -1
  174. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java +1 -1
  175. data/platform/android/Rhodes/src/com/rhomobile/rhodes/signature/ImageCapture.java +6 -11
  176. data/platform/android/Rhodes/src/com/rhomobile/rhodes/signature/Signature.java +6 -4
  177. data/platform/android/Rhodes/src/com/rhomobile/rhodes/signature/SignatureView.java +0 -7
  178. data/platform/android/Rhodes/src/com/rhomobile/rhodes/ui/LogViewDialog.java +9 -4
  179. data/platform/android/Rhodes/src/com/rhomobile/rhodes/util/PerformOnUiThread.java +8 -8
  180. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientNew.java +5 -1
  181. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientOld.java +11 -7
  182. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsNew.java +3 -5
  183. data/platform/android/build/RhodesSRC_build.files +32 -23
  184. data/platform/android/build/android.rake +28 -11
  185. data/platform/android/build/androidcommon.rb +2 -0
  186. data/platform/android/build/librhocommon_build.files +9 -5
  187. data/platform/android/build/librhodes_build.files +1 -0
  188. data/platform/android/build/libruby_build.files +1 -0
  189. data/platform/bb/Hsqldb/Hsqldb.jdp +0 -2
  190. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +10 -2
  191. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBStorage.java +37 -5
  192. data/platform/bb/Hsqldb/src/org/hsqldb/Column.java +5 -5
  193. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +1 -1
  194. data/platform/bb/Hsqldb/src/org/hsqldb/Function.java +73 -78
  195. data/platform/bb/Hsqldb/src/org/hsqldb/Library.java +288 -8
  196. data/platform/bb/RubyVM/RubyVM.jdp +3 -0
  197. data/platform/bb/RubyVM/src/com/rho/FilePath.java +13 -1
  198. data/platform/bb/RubyVM/src/com/rho/IRhoRubyHelper.java +2 -2
  199. data/platform/bb/RubyVM/src/com/rho/RhoAppAdapter.java +12 -0
  200. data/platform/bb/RubyVM/src/com/rho/RhoClassFactory.java +18 -1
  201. data/platform/bb/RubyVM/src/com/rho/RhoConf.java +128 -108
  202. data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +9 -10
  203. data/platform/bb/RubyVM/src/com/rho/RhoLogger.java +16 -1
  204. data/platform/bb/RubyVM/src/com/rho/RhoProfiler.java +1 -1
  205. data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +20 -0
  206. data/platform/bb/RubyVM/src/com/rho/RhodesApp.java +5 -2
  207. data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +65 -46
  208. data/platform/bb/RubyVM/src/com/rho/db/DBAdapter.java +192 -50
  209. data/platform/bb/RubyVM/src/com/rho/db/DBAttrManager.java +8 -114
  210. data/platform/bb/RubyVM/src/com/rho/db/DBException.java +1 -1
  211. data/platform/bb/RubyVM/src/com/rho/db/IDBCallback.java +1 -1
  212. data/platform/bb/RubyVM/src/com/rho/db/IDBResult.java +5 -3
  213. data/platform/bb/RubyVM/src/com/rho/db/IDBStorage.java +5 -1
  214. data/platform/bb/RubyVM/src/com/rho/file/FileAccessBB.java +109 -0
  215. data/platform/bb/RubyVM/src/com/rho/file/RhoFile.java +85 -0
  216. data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +12 -4
  217. data/platform/bb/RubyVM/src/com/rho/net/NetResponse.java +5 -0
  218. data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +37 -23
  219. data/platform/bb/RubyVM/src/com/rho/net/URI.java +84 -0
  220. data/platform/bb/RubyVM/src/com/rho/sync/ClientRegister.java +1 -1
  221. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +119 -61
  222. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +61 -24
  223. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +108 -54
  224. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +121 -163
  225. data/platform/bb/RubyVM/src/com/xruby/GeneratedMethods/RubyString_Methods.java +23 -0
  226. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyMutex.java +1 -1
  227. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyRange.java +3 -1
  228. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyRegexp.java +3 -1
  229. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyString.java +208 -25
  230. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyTime.java +3 -1
  231. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +5 -1
  232. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyAPI.java +12 -5
  233. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyID.java +1 -0
  234. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyKernelModule.java +16 -0
  235. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyKernelModule_Methods.java +5 -0
  236. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyValue.java +1 -1
  237. data/platform/bb/RubyVM/src/com/xruby/runtime/stdlib/RubyStringIO.java +4 -1
  238. data/platform/bb/{Hsqldb → RubyVM}/src/j2me/math/Number.java +33 -0
  239. data/platform/bb/build/RubyVM_build.files +3 -0
  240. data/platform/bb/build/bb.rake +140 -62
  241. data/platform/bb/build/hsqldb_build.files +0 -2
  242. data/platform/bb/build/rhodes_build.files +5 -0
  243. data/platform/bb/rhodes/platform/4.7/com/rho/RhoMainScreen.java +43 -7
  244. data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +23 -2
  245. data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +5 -0
  246. data/platform/bb/rhodes/platform/5.0/com/rho/db/SqliteCopyResult.java +143 -0
  247. data/platform/bb/rhodes/platform/5.0/com/rho/db/SqliteResult.java +269 -0
  248. data/platform/bb/rhodes/platform/5.0/com/rho/db/SqliteStorage.java +446 -0
  249. data/platform/bb/rhodes/platform/common/com/rho/BrowserAdapter5.java +3 -0
  250. data/platform/bb/rhodes/platform/common/com/rho/RhoMainScreen.java +12 -2
  251. data/platform/bb/rhodes/platform/common/com/rho/db/SqliteCopyResult.java +2 -0
  252. data/platform/bb/rhodes/platform/common/com/rho/db/SqliteResult.java +2 -0
  253. data/platform/bb/rhodes/platform/common/com/rho/db/SqliteStorage.java +2 -0
  254. data/platform/bb/rhodes/resources/mappin.png +0 -0
  255. data/platform/bb/rhodes/rhodes.jdp +3 -0
  256. data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +21 -18
  257. data/platform/bb/rhodes/src/com/rho/BrowserAdapter5.java +150 -0
  258. data/platform/bb/rhodes/src/com/rho/IBrowserAdapter.java +1 -0
  259. data/platform/bb/rhodes/src/com/rho/RhoMainScreen.java +63 -4
  260. data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +6 -5
  261. data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +242 -2
  262. data/platform/bb/rhodes/src/com/rho/db/SqliteCopyResult.java +143 -0
  263. data/platform/bb/rhodes/src/com/rho/db/SqliteResult.java +269 -0
  264. data/platform/bb/rhodes/src/com/rho/db/SqliteStorage.java +446 -0
  265. data/platform/bb/rhodes/src/com/rho/file/Jsr75File.java +1 -1
  266. data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +71 -14
  267. data/platform/bb/rhodes/src/com/rho/net/bb/BBHttpConnection.java +4 -2
  268. data/platform/bb/rhodes/src/com/rho/rubyext/Alert.java +28 -12
  269. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +100 -4
  270. data/platform/bb/rhodes/src/com/rho/rubyext/WebView.java +3 -2
  271. data/platform/bb/rhodes/src/com/rho/rubyext/XMLParser.java +1 -1
  272. data/platform/bb/rhodes/src/rhomobile/NativeBar.java +32 -0
  273. data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +9 -2
  274. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +174 -41
  275. data/platform/bb/rhodes/src/rhomobile/datetime/DateTimePicker.java +52 -3
  276. data/platform/bb/rhodes/src/rhomobile/datetime/DateTimeScreen.java +33 -1
  277. data/platform/bb/rhodes/src/rhomobile/mapview/Annotation.java +2 -14
  278. data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapField.java +686 -0
  279. data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapProvider.java +14 -0
  280. data/platform/bb/rhodes/src/rhomobile/mapview/GeoCoding.java +13 -0
  281. data/platform/bb/rhodes/src/rhomobile/mapview/GoogleGeoCoding.java +174 -0
  282. data/platform/bb/rhodes/src/rhomobile/mapview/GoogleMapField.java +104 -330
  283. data/platform/bb/rhodes/src/rhomobile/mapview/MapTools.java +79 -0
  284. data/platform/bb/rhodes/src/rhomobile/mapview/MapView.java +35 -12
  285. data/platform/bb/rhodes/src/rhomobile/mapview/MapViewParent.java +2 -1
  286. data/platform/bb/rhodes/src/rhomobile/mapview/MapViewScreen.java +336 -44
  287. data/platform/bb/rhodes/src/rhomobile/mapview/RhoMapField.java +3 -6
  288. data/platform/iphone/Classes/AppManager/AppManager.m +19 -4
  289. data/platform/iphone/Classes/DateTime.h +4 -0
  290. data/platform/iphone/Classes/DateTime.m +1 -1
  291. data/platform/iphone/Classes/DateTimePicker.m +8 -1
  292. data/platform/iphone/Classes/DateTimePickerDelegate.m +7 -1
  293. data/platform/iphone/Classes/Event/Event.m +2 -2
  294. data/platform/iphone/Classes/MapView/MapViewController.h +4 -1
  295. data/platform/iphone/Classes/MapView/MapViewController.m +6 -46
  296. data/platform/iphone/Classes/MapView/MapViewManager.h +26 -0
  297. data/platform/iphone/Classes/MapView/MapViewManager.m +172 -0
  298. data/platform/iphone/Classes/NativeBar.h +34 -0
  299. data/platform/iphone/Classes/NativeBar.m +131 -26
  300. data/platform/iphone/Classes/NativeView/NVDelegate.h +26 -0
  301. data/platform/iphone/Classes/NativeView/NVDelegate.m +40 -0
  302. data/platform/iphone/Classes/NativeView/NVViewController.h +24 -0
  303. data/platform/iphone/Classes/NativeView/NVViewController.m +90 -0
  304. data/platform/iphone/Classes/NativeView/RhoNativeViewManager.mm +449 -0
  305. data/platform/iphone/Classes/{RhoNativeViewManagerOC.h → NativeView/RhoNativeViewManagerOC.h} +15 -0
  306. data/platform/iphone/Classes/RhoAlert.m +3 -3
  307. data/platform/iphone/Classes/RhoMainView.h +3 -0
  308. data/platform/iphone/Classes/Rhodes.h +6 -2
  309. data/platform/iphone/Classes/Rhodes.m +47 -79
  310. data/platform/iphone/Classes/Signature/SignatureViewController.m +1 -0
  311. data/platform/iphone/Classes/SimpleMainView.h +18 -1
  312. data/platform/iphone/Classes/SimpleMainView.m +180 -35
  313. data/platform/iphone/Classes/SplitView/LeftViewController.h +1 -1
  314. data/platform/iphone/Classes/SplitView/LeftViewController.m +13 -7
  315. data/platform/iphone/Classes/SplitView/RightViewController.h +1 -1
  316. data/platform/iphone/Classes/SplitView/RightViewController.m +26 -11
  317. data/platform/iphone/Classes/SplitView/SplittedMainView.h +1 -6
  318. data/platform/iphone/Classes/SplitView/SplittedMainView.m +14 -52
  319. data/platform/iphone/Classes/TabbedMainView.h +25 -3
  320. data/platform/iphone/Classes/TabbedMainView.m +340 -14
  321. data/platform/iphone/ESRI/BluePushpin.png +0 -0
  322. data/platform/iphone/ESRI/BluePushpin@2x.png +0 -0
  323. data/platform/iphone/ESRI/esri.png +0 -0
  324. data/platform/iphone/ESRI/esri@2x.png +0 -0
  325. data/platform/iphone/Info.plist +1 -1
  326. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +26 -3
  327. data/platform/iphone/rbuild/iphone.rake +100 -4
  328. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +12 -0
  329. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +116 -12
  330. data/platform/shared/SyncClient/SyncClient.cpp +29 -3
  331. data/platform/shared/SyncClient/SyncClient.h +2 -1
  332. data/platform/shared/common/IRhoClassFactory.h +3 -0
  333. data/platform/shared/common/IRhoCrypt.h +16 -0
  334. data/platform/shared/common/IRhoThreadImpl.h +1 -0
  335. data/platform/shared/common/RhoAppAdapter.h +2 -0
  336. data/platform/shared/common/RhoConf.cpp +97 -46
  337. data/platform/shared/common/RhoConf.h +14 -13
  338. data/platform/shared/common/RhoFile.cpp +10 -0
  339. data/platform/shared/common/RhoFile.h +1 -0
  340. data/platform/shared/common/RhoMath.cpp +43 -0
  341. data/platform/shared/common/RhoMath.h +27 -0
  342. data/platform/shared/common/RhoNativeViewManager.h +27 -1
  343. data/platform/shared/common/RhoPort.h +11 -0
  344. data/platform/shared/common/RhoStd.h +5 -0
  345. data/platform/shared/common/RhoThread.cpp +1 -1
  346. data/platform/shared/common/RhoThread.h +1 -1
  347. data/platform/shared/common/RhodesApp.cpp +381 -139
  348. data/platform/shared/common/RhodesApp.h +24 -10
  349. data/platform/shared/common/RhodesAppBase.cpp +72 -1
  350. data/platform/shared/common/RhodesAppBase.h +5 -1
  351. data/platform/shared/common/SplashScreen.h +4 -4
  352. data/platform/shared/common/ThreadQueue.cpp +44 -17
  353. data/platform/shared/common/ThreadQueue.h +4 -0
  354. data/platform/shared/common/app_build_configs.c +0 -1
  355. data/platform/shared/common/iphone/RhoClassfactory.h +6 -0
  356. data/platform/shared/common/iphone/RhoCryptImpl.h +47 -0
  357. data/platform/shared/common/iphone/RhoCryptImpl.mm +286 -0
  358. data/platform/shared/common/map/ESRIMapEngine.cpp +921 -0
  359. data/platform/shared/common/map/ESRIMapEngine.h +255 -0
  360. data/platform/shared/common/map/GoogleMapEngine.cpp +160 -0
  361. data/platform/shared/common/map/GoogleMapEngine.h +52 -0
  362. data/platform/shared/common/map/MapEngine.cpp +304 -0
  363. data/platform/shared/common/map/MapEngine.h +214 -0
  364. data/platform/shared/db/DBAdapter.cpp +147 -18
  365. data/platform/shared/db/DBAdapter.h +38 -12
  366. data/platform/shared/db/DBAttrManager.cpp +4 -3
  367. data/platform/shared/db/DBAttrManager.h +7 -7
  368. data/platform/shared/db/res/db/syncdb.triggers +0 -5
  369. data/platform/shared/db/res/db/syncdb_java.triggers +21 -0
  370. data/platform/shared/json/JSONIterator.cpp +11 -1
  371. data/platform/shared/json/JSONIterator.h +1 -0
  372. data/platform/shared/logging/RhoLogConf.cpp +29 -12
  373. data/platform/shared/net/CURLNetRequest.cpp +80 -25
  374. data/platform/shared/net/CURLNetRequest.h +6 -2
  375. data/platform/shared/net/HttpServer.cpp +12 -6
  376. data/platform/shared/net/HttpServer.h +2 -1
  377. data/platform/shared/net/INetRequest.h +1 -0
  378. data/platform/shared/ruby/ext/alert/alert.i +5 -0
  379. data/platform/shared/ruby/ext/alert/alert_wrap.c +439 -108
  380. data/platform/shared/ruby/ext/datetimepicker/datetimepicker.i +42 -0
  381. data/platform/shared/ruby/ext/datetimepicker/datetimepicker_wrap.c +521 -120
  382. data/platform/shared/ruby/ext/nativebar/nativebar.i +16 -0
  383. data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +623 -128
  384. data/platform/shared/ruby/ext/nativeviewmanager/nativeviewmanager.i +18 -0
  385. data/platform/shared/ruby/ext/nativeviewmanager/nativeviewmanager_wrap.c +2321 -0
  386. data/platform/shared/ruby/ext/rho/extensions.c +0 -1
  387. data/platform/shared/ruby/ext/rho/rhoruby.c +53 -0
  388. data/platform/shared/ruby/ext/rho/rhoruby.h +6 -0
  389. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +6 -3
  390. data/platform/shared/ruby/ext/syncengine/syncengine.i +9 -1
  391. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +61 -0
  392. data/platform/shared/ruby/ext/system/system.i +4 -0
  393. data/platform/shared/ruby/ext/system/system_wrap.c +33 -5
  394. data/platform/shared/rubyext/RhoAppAdapter.cpp +11 -1
  395. data/platform/shared/rubyext/System.cpp +9 -0
  396. data/platform/shared/rubyext/WebView.h +1 -0
  397. data/platform/shared/sqlite/crypto.c +907 -0
  398. data/platform/shared/sqlite/sqlite3.c +6 -0
  399. data/platform/shared/sync/SyncEngine.cpp +49 -19
  400. data/platform/shared/sync/SyncEngine.h +0 -1
  401. data/platform/shared/sync/SyncNotify.cpp +14 -5
  402. data/platform/shared/sync/SyncNotify.h +2 -2
  403. data/platform/shared/sync/SyncSource.cpp +79 -33
  404. data/platform/shared/sync/SyncSource.h +1 -0
  405. data/platform/shared/sync/SyncThread.cpp +26 -11
  406. data/platform/shared/xruby/src/com/xruby/compiler/codedom/StringExpression.java +4 -2
  407. data/platform/wm/RhoLib/RhoLib.vcproj +108 -72
  408. data/platform/wm/build/wm.rake +6 -0
  409. data/platform/wm/rhodes/Alert.cpp +4 -3
  410. data/platform/wm/rhodes/Alert.h +1 -1
  411. data/platform/wm/rhodes/DateTimePicker.cpp +30 -3
  412. data/platform/wm/rhodes/DateTimePicker.h +9 -1
  413. data/platform/wm/rhodes/MainWindow.cpp +121 -61
  414. data/platform/wm/rhodes/MainWindow.h +29 -4
  415. data/platform/wm/rhodes/MapView/Graphics.cpp +547 -0
  416. data/platform/wm/rhodes/MapView/Graphics.h +136 -0
  417. data/platform/wm/rhodes/MapView/MapViewManager.cpp +391 -0
  418. data/platform/wm/rhodes/MapView/MapViewManager.h +158 -0
  419. data/platform/wm/rhodes/RhoCryptImpl.cpp +248 -0
  420. data/platform/wm/rhodes/RhoCryptImpl.h +51 -0
  421. data/platform/wm/rhodes/RhoNativeViewManager.cpp +208 -0
  422. data/platform/wm/rhodes/Rhodes.cpp +94 -102
  423. data/platform/wm/rhodes/Rhodes.rc +27 -0
  424. data/platform/wm/rhodes/SyncStatusDlg.cpp +1 -0
  425. data/platform/wm/rhodes/SyncStatusDlg.h +2 -1
  426. data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +7 -4
  427. data/platform/wm/rhodes/camera/Camera.cpp +36 -15
  428. data/platform/wm/rhodes/camera/Camera.h +0 -4
  429. data/platform/wm/rhodes/resource.h +10 -2
  430. data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +7 -0
  431. data/platform/wm/rhodes/rho/common/RhoClassFactory.h +1 -0
  432. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +10 -2
  433. data/platform/wm/rhodes/rho/net/NetRequestImpl.h +10 -0
  434. data/platform/wm/rhodes/rho/rubyext/NativeToolbar.cpp +513 -0
  435. data/platform/wm/rhodes/rho/rubyext/NativeToolbar.h +74 -0
  436. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +22 -10
  437. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +5 -0
  438. data/platform/wm/rhodes/rhodes.vcproj +38 -2
  439. data/platform/wm/rhodes/stdafx.h +2 -1
  440. data/platform/wm/rubylib/rubylib.vcproj +12 -0
  441. data/rakefile.rb +85 -80
  442. data/res/build-tools/iphonesim/Source/iPhoneSimulator.m +14 -3
  443. data/res/build-tools/iphonesim/build/Release/iphonesim +0 -0
  444. data/res/build-tools/iphonesim/iphonesim.xcodeproj/project.pbxproj +2 -0
  445. data/res/build-tools/xruby-0.3.3.jar +0 -0
  446. data/res/generators/templates/application/app/application.rb +2 -2
  447. data/res/generators/templates/application/app/helpers/application_helper.rb +1 -1
  448. data/res/generators/templates/application/public/css/android.css +1 -0
  449. data/res/generators/templates/application/public/jqtouch/jquery.1.3.2.min.js +1 -1
  450. data/res/generators/templates/application/rhoconfig.txt +66 -14
  451. data/rhodes.gemspec +3 -3
  452. data/spec/framework_spec/app/spec/core/file/expand_path_spec.rb +7 -3
  453. data/spec/framework_spec/build.yml +1 -1
  454. data/spec/phone_spec/Rakefile +1 -0
  455. data/spec/phone_spec/app/Account/account.rb +2 -0
  456. data/spec/phone_spec/app/Account_s/account_s.rb +7 -0
  457. data/spec/phone_spec/app/spec/{fixtures → array/fixtures}/classes.rb +0 -0
  458. data/spec/phone_spec/app/spec/{array_pack_spec.rb → array/pack_spec.rb} +2 -1
  459. data/spec/phone_spec/app/spec/bulksync_spec.rb +1 -0
  460. data/spec/phone_spec/app/spec/contacts_spec.rb +2 -0
  461. data/spec/phone_spec/app/spec/rho_spec.rb +34 -233
  462. data/spec/phone_spec/app/spec/rhom_object_spec.rb +396 -87
  463. data/spec/phone_spec/app/spec/string/element_set_spec.rb +251 -0
  464. data/spec/phone_spec/app/spec/string/end_with_spec.rb +49 -0
  465. data/spec/phone_spec/app/spec/string/fixtures/classes.rb +27 -0
  466. data/spec/phone_spec/app/spec/{lstrip_spec.rb → string/lstrip_spec.rb} +0 -0
  467. data/spec/phone_spec/app/spec/string/replace_spec.rb +52 -0
  468. data/spec/phone_spec/app/spec/{rstrip_spec.rb → string/rstrip_spec.rb} +0 -0
  469. data/spec/phone_spec/app/spec/string/slice_spec.rb +473 -0
  470. data/spec/phone_spec/app/spec/string/split_spec.rb +302 -0
  471. data/spec/phone_spec/app/spec/string/start_with_spec.rb +48 -0
  472. data/spec/phone_spec/app/spec/{strip_spec.rb → string/strip_spec.rb} +0 -0
  473. data/spec/phone_spec/app/spec/syncengine_spec.rb +30 -1
  474. data/spec/phone_spec/app/spec_runner.rb +15 -7
  475. data/spec/phone_spec/build.yml +2 -2
  476. metadata +154 -25
  477. data/README.textile +0 -45
  478. data/platform/android/Rhodes/AndroidManifest.full.xml +0 -62
  479. data/platform/android/Rhodes/gen/com/rhomobile/rhodes/Manifest.java +0 -14
  480. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoActivity.java +0 -20
  481. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +0 -193
  482. data/platform/bb/Hsqldb/src/com/rho/file/FileAccessBB.java +0 -25
  483. data/platform/bb/RubyVM/src/com/rho/AppBuildConfig.java +0 -22
  484. data/platform/bb/RubyVM/src/com/rho/Capabilities.java +0 -6
  485. data/platform/bb/RubyVM/src/com/rho/Extensions.java +0 -11
  486. data/platform/iphone/Classes/RhoNativeViewManager.mm +0 -226
@@ -2,9 +2,19 @@ package com.rho;
2
2
 
3
3
  import net.rim.device.api.ui.container.MainScreen;
4
4
 
5
- public abstract class RhoMainScreen extends MainScreen {
5
+ public abstract class RhoMainScreen extends MainScreen
6
+ {
7
+ public RhoMainScreen()
8
+ {
9
+ super();
10
+ }
11
+
12
+ public RhoMainScreen(long style)
13
+ {
14
+ super(style);
15
+ }
6
16
 
7
- protected abstract boolean onTouchUnclick();
17
+ protected boolean onTouchUnclick(){ return false; }
8
18
 
9
19
  public boolean isTouchScreen()
10
20
  {
@@ -0,0 +1,2 @@
1
+ package com.rho.db;
2
+
@@ -0,0 +1,2 @@
1
+ package com.rho.db;
2
+
@@ -0,0 +1,2 @@
1
+ package com.rho.db;
2
+
@@ -25,6 +25,9 @@ RubyVM
25
25
  ExcludeFromBuildAll=0
26
26
  [Files
27
27
  resources\icon.png
28
+ src\com\rho\db\SqliteStorage.java
29
+ src\com\rho\db\SqliteResult.java
30
+ src\com\rho\db\SqliteCopyResult.java
28
31
  src\com\rho\BBVersionSpecific.java
29
32
  src\com\rho\BrowserAdapter.java
30
33
  src\com\rho\BrowserAdapter5.java
@@ -7,15 +7,7 @@ import com.rho.net.URI;
7
7
  import rhomobile.*;
8
8
  import rhomobile.RhodesApplication.PrimaryResourceFetchThread;
9
9
 
10
- import net.rim.device.api.browser.field.BrowserContent;
11
- import net.rim.device.api.browser.field.Event;
12
- import net.rim.device.api.browser.field.RedirectEvent;
13
- import net.rim.device.api.browser.field.RenderingApplication;
14
- import net.rim.device.api.browser.field.RenderingException;
15
- import net.rim.device.api.browser.field.RenderingOptions;
16
- import net.rim.device.api.browser.field.RenderingSession;
17
- import net.rim.device.api.browser.field.RequestedResource;
18
- import net.rim.device.api.browser.field.UrlRequestedEvent;
10
+ import net.rim.device.api.browser.field.*;
19
11
  import net.rim.device.api.io.http.HttpHeaders;
20
12
  import net.rim.device.api.system.Application;
21
13
  import net.rim.device.api.system.Display;
@@ -157,8 +149,12 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
157
149
  break;
158
150
 
159
151
  case Event.EVENT_SET_HEADER :
160
- case Event.EVENT_SET_HTTP_COOKIE : {
161
- /*String cookie = ((SetHttpCookieEvent)event).getCookie();
152
+ case Event.EVENT_SET_HTTP_COOKIE :
153
+ {
154
+ String cookie = ((SetHttpCookieEvent)event).getCookie();
155
+ String strUrl = ((SetHttpCookieEvent)event).getURL();
156
+ m_app.setCookie(strUrl, cookie);
157
+ /*
162
158
  String response = processAjaxCall(cookie);
163
159
  if (response != null)
164
160
  synchronized (pendingResponses) {
@@ -183,7 +179,8 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
183
179
  BrowserContent browserContent = null;
184
180
 
185
181
  try {
186
- browserContent = _renderingSession.getBrowserContent(connection, this, (Event)e);
182
+ if ( connection.getResponseCode() != HttpConnection.HTTP_NOT_MODIFIED )
183
+ browserContent = _renderingSession.getBrowserContent(connection, this, (Event)e);
187
184
 
188
185
  if (browserContent != null) {
189
186
  browserContent.finishLoading();
@@ -217,8 +214,8 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
217
214
  }
218
215
 
219
216
  }
220
- } catch (RenderingException re) {
221
- LOG.ERROR("RenderingException", re);
217
+ } catch (Exception re) {
218
+ LOG.ERROR("processConnection failed.", re);
222
219
  } finally {
223
220
  SecondaryResourceFetchThread.doneAddingImages();
224
221
  }
@@ -232,8 +229,9 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
232
229
  return Display.getWidth();
233
230
  }
234
231
 
235
- public String getHTTPCookie(String url) {
236
- return null;
232
+ public String getHTTPCookie(String url)
233
+ {
234
+ return m_app.getCookie(url);
237
235
  }
238
236
 
239
237
  public int getHistoryPosition(BrowserContent browserContent) {
@@ -264,8 +262,8 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
264
262
  }else
265
263
  {
266
264
  HttpConnection connection = Utilities.makeConnection(url, resource.getRequestHeaders(), null, null);
267
- if (bLocalHost)
268
- m_connResource = connection;
265
+ //if (bLocalHost)
266
+ // m_connResource = connection;
269
267
  return connection;
270
268
  }
271
269
  }else
@@ -329,6 +327,11 @@ public class BrowserAdapter implements RenderingApplication, IBrowserAdapter
329
327
 
330
328
  public void executeJavascript(String strJavascript)
331
329
  {
330
+ // m_app.navigateUrlWithEvent("javascript:" + URI.urlEncode(strJavascript), new ExecutingScriptEvent(null, ExecutingScriptEvent.TYPE_JAVASCRIPT) );
331
+ }
332
+
333
+ public void setCookie(String url, String cookie)
334
+ {
332
335
 
333
336
  }
334
337
  }
@@ -1,28 +1,178 @@
1
1
  package com.rho;
2
2
 
3
+ import net.rim.device.api.browser.field.RenderingOptions;
4
+ import net.rim.device.api.browser.field2.*;
5
+ import net.rim.device.api.system.Application;
6
+
3
7
  import javax.microedition.io.HttpConnection;
8
+ import javax.microedition.io.InputConnection;
9
+
10
+ import com.rho.RhoLogger;
11
+ import com.rho.RhodesApp;
12
+ import com.rho.net.URI;
13
+
14
+ import rhomobile.Utilities;
15
+ import rhomobile.RhodesApplication.PrimaryResourceFetchThread;
4
16
  import rhomobile.RhodesApplication;
5
17
 
18
+ //http://rim.lithium.com/t5/Java-Development/Browser-events-on-JDK-5-field2-package/m-p/430991
19
+ //http://208.74.204.192/t5/Web-Development/Embedded-Browser-Ajax-support/m-p/410260;jsessionid=CDE85D9F4D88217EA118DE3F5DF9FEFD
20
+ //http://supportforums.blackberry.com/t5/Web-Development/JavaScript-not-working-on-Black-Berry-Simulator-8330/m-p/412687#M3397
21
+
6
22
  public class BrowserAdapter5 implements IBrowserAdapter
7
23
  {
24
+ private static final RhoLogger LOG = RhoLogger.RHO_STRIP_LOG ? new RhoEmptyLogger() :
25
+ new RhoLogger("BrowserAdapter");
26
+ private RhoMainScreen m_oMainScreen;
27
+ private BrowserField m_oBrowserField;
28
+ private BrowserFieldConfig m_oConfig;
29
+
30
+ private RhodesApplication m_app;
31
+
32
+ private class RhoProtocolController extends ProtocolController
33
+ {
34
+ public RhoProtocolController(BrowserField browserField) {
35
+ super(browserField);
36
+ }
37
+
38
+ public void handleNavigationRequest(BrowserFieldRequest request)
39
+ throws Exception
40
+ {
41
+ String url = request.getURL();
42
+
43
+ if ( request.getPostData() == null ||
44
+ request.getPostData().length == 0 )
45
+ {
46
+ //String referrer = request.getHeaders().getPropertyValue("referer");
47
+ m_app.addToHistory(url, null );
48
+ }
49
+
50
+ PrimaryResourceFetchThread thread = new PrimaryResourceFetchThread(
51
+ url, request.getHeaders(),request.getPostData(),url);
52
+ thread.start();
53
+ }
54
+
55
+ public InputConnection handleResourceRequest(BrowserFieldRequest request)
56
+ throws Exception
57
+ {
58
+ String url = request.getURL();
59
+ if ( RhodesApp.getInstance().isRhodesAppUrl(url) || URI.isLocalData(url))
60
+ {
61
+ HttpConnection connection = Utilities.makeConnection(url, request.getHeaders(), null, null);
62
+
63
+ return connection;
64
+ }else
65
+ return super.handleResourceRequest(request);
66
+ }
67
+
68
+ public void setNavigationRequestHandler(String protocol,
69
+ BrowserFieldNavigationRequestHandler handler) {
70
+ super.setNavigationRequestHandler(protocol, handler);
71
+ }
72
+
73
+ public void setResourceRequestHandler(String protocol,
74
+ BrowserFieldResourceRequestHandler handler) {
75
+ super.setResourceRequestHandler(protocol, handler);
76
+ }
77
+
78
+ };
79
+ private RhoProtocolController m_oController;
80
+
8
81
  public BrowserAdapter5(RhoMainScreen oMainScreen, RhodesApplication app)
9
82
  {
83
+ m_oMainScreen = oMainScreen;
84
+ m_app = app;
85
+
86
+ m_oConfig = new BrowserFieldConfig();
87
+ // m_oConfig.setProperty( BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_POINTER );
88
+ m_oConfig.setProperty( BrowserFieldConfig.JAVASCRIPT_ENABLED, Boolean.TRUE );
89
+ // m_oConfig.setProperty( BrowserFieldConfig.NAVIGATION_MODE, BrowserFieldConfig.NAVIGATION_MODE_CARET );
90
+ m_oConfig.setProperty( BrowserFieldConfig.ENABLE_COOKIES, Boolean.TRUE );
91
+
92
+ m_oConfig.setProperty(BrowserFieldConfig.ALLOW_CS_XHR, Boolean.TRUE);
10
93
  }
11
94
 
12
95
  public void setFullBrowser()
13
96
  {
14
97
  }
15
98
 
99
+ private void createBrowserField()
100
+ {
101
+ LOG.INFO("Use BrowserField5");
102
+ m_oBrowserField = new BrowserField(m_oConfig);
103
+ m_oBrowserField.getRenderingOptions().setProperty(RenderingOptions.CORE_OPTIONS_GUID, RenderingOptions.ALLOW_POPUPS, true);
104
+ m_oController = new RhoProtocolController(m_oBrowserField);
105
+ m_oConfig.setProperty(BrowserFieldConfig.CONTROLLER, m_oController);
106
+
107
+ BrowserFieldListener _listener = new BrowserFieldListener()
108
+ {
109
+ public void documentLoaded(BrowserField browserField,
110
+ org.w3c.dom.Document document) throws Exception
111
+ {
112
+ synchronized (Application.getEventLock())
113
+ {
114
+ m_oMainScreen.deleteAll();
115
+ m_oMainScreen.add(m_oBrowserField);
116
+ }
117
+ }
118
+ /*
119
+ public void downloadProgress(BrowserField browserField,
120
+ net.rim.device.api.browser.field.ContentReadEvent event)throws Exception
121
+ {
122
+ //Add your code here.
123
+ }*/
124
+ };
125
+ m_oBrowserField.addListener( _listener );
126
+ }
127
+
16
128
  public void processConnection(HttpConnection connection, Object e)
17
129
  {
130
+ try
131
+ {
132
+ if ( connection.getResponseCode() == HttpConnection.HTTP_NOT_MODIFIED )
133
+ return;
134
+ }catch( java.io.IOException exc)
135
+ {
136
+ LOG.ERROR("processConnection - getResponseCode failed.", exc);
137
+ }
138
+
139
+ synchronized (Application.getEventLock())
140
+ {
141
+ createBrowserField();
142
+ m_oBrowserField.displayContent(connection, (e != null ? (String)e : "") );
143
+ }
18
144
  }
19
145
 
20
146
  public void executeJavascript(String strJavascript)
21
147
  {
148
+ //synchronized (Application.getEventLock())
149
+ {
150
+ BrowserField field = (BrowserField)m_oMainScreen.getField(0);
151
+ field.executeScript("javascript:" + strJavascript);
152
+ }
153
+ }
154
+
155
+ public void setCookie(String url, String cookie)
156
+ {
157
+ //synchronized (Application.getEventLock())
158
+ {
159
+ BrowserFieldCookieManager man = (BrowserFieldCookieManager)m_oConfig.getProperty(BrowserFieldConfig.COOKIE_MANAGER);
160
+ if ( man != null )
161
+ man.setCookie(url, cookie);
162
+ }
22
163
  }
23
164
 
165
+ //http://supportforums.blackberry.com/t5/Java-Development/Tab-Navigation/td-p/381156
24
166
  public boolean navigationMovement(int dx, int dy, int status, int time)
25
167
  {
168
+ //TODO: try to change navigation
169
+ /*
170
+ Field focField = m_oBrowserField.getLeafFieldWithFocus();
171
+ Manager focManager = focField != null ? focField.getManager() : null;
172
+ boolean bHorizontal = false;
173
+ if ( focManager != null && focManager instanceof HorizontalFieldManager)
174
+ bHorizontal = true;
175
+ */
26
176
  return false;
27
177
  }
28
178
  }
@@ -7,4 +7,5 @@ public interface IBrowserAdapter {
7
7
  public boolean navigationMovement(int dx, int dy, int status, int time);
8
8
  public void executeJavascript(String strJavascript);
9
9
  public void setFullBrowser();
10
+ public void setCookie(String url, String cookie);
10
11
  }
@@ -1,13 +1,72 @@
1
1
  package com.rho;
2
2
 
3
+ import rhomobile.RhodesApplication;
4
+ import net.rim.device.api.system.Display;
5
+ import net.rim.device.api.ui.TouchEvent;
3
6
  import net.rim.device.api.ui.container.MainScreen;
4
7
 
5
- public abstract class RhoMainScreen extends MainScreen {
8
+ public abstract class RhoMainScreen extends MainScreen
9
+ {
10
+ public RhoMainScreen()
11
+ {
12
+ super();
13
+ }
14
+
15
+ public RhoMainScreen(long style)
16
+ {
17
+ super(style);
18
+ }
19
+
20
+ protected boolean onTouchUnclick(int x, int y){ return false; }
21
+ protected boolean onTouchClick(int x, int y){ return false; }
22
+ protected boolean onTouchDown(int x, int y){ return false; }
23
+ protected boolean onTouchUp(int x, int y){ return false; }
24
+ protected boolean onTouchMove(int x, int y){ return false; }
6
25
 
7
- protected abstract void onTouchUnclick();
26
+ protected boolean touchEvent(TouchEvent message) {
27
+ if ( RhodesApplication.getInstance().isInputDisabled() )
28
+ return true;
29
+
30
+ int nEvent = message.getEvent();
31
+ switch( nEvent )
32
+ {
33
+ case TouchEvent.CLICK:
34
+ if ( onTouchClick(message.getX(1), message.getY(1)) )
35
+ return true;
36
+ break;
37
+ case TouchEvent.UNCLICK:
38
+ if ( onTouchUnclick(message.getX(1), message.getY(1)) )
39
+ return true;
40
+ break;
41
+
42
+ case TouchEvent.DOWN:
43
+ if ( onTouchDown(message.getX(1), message.getY(1)) )
44
+ return true;
45
+ break;
46
+ case TouchEvent.UP:
47
+ if ( onTouchUp(message.getX(1), message.getY(1)) )
48
+ return true;
49
+ break;
50
+ case TouchEvent.MOVE:
51
+ if ( onTouchMove(message.getX(1), message.getY(1)) )
52
+ return true;
53
+ break;
54
+ }
55
+
56
+ return super.touchEvent(message);
57
+ }
8
58
 
9
59
  public boolean isTouchScreen()
10
60
  {
11
- return false;
12
- }
61
+ //DeviceInfo.getDevicename()
62
+ return net.rim.device.api.ui.Touchscreen.isSupported();
63
+ }
64
+
65
+ protected void onChangeOrientation(int x, int y, int nOrientation){}
66
+ protected void sublayout(int arg0, int arg1)
67
+ {
68
+ onChangeOrientation(arg0, arg1, Display.getOrientation()== Display.ORIENTATION_LANDSCAPE ? 1 : 2);
69
+ super.sublayout(arg0, arg1);
70
+ }
71
+
13
72
  };
@@ -22,7 +22,7 @@ import rhomobile.datetime.DateTimePicker;
22
22
  import rhomobile.mapview.MapView;
23
23
  import com.rho.rubyext.GeoLocation;
24
24
 
25
- import com.rho.db.HsqlDBStorage;
25
+ //import com.rho.db.HsqlDBStorage;
26
26
  import com.rho.db.IDBStorage;
27
27
  import com.rho.file.*;
28
28
  import com.rho.net.SSLSocket;
@@ -206,10 +206,6 @@ public class RhoRubyHelper implements IRhoRubyHelper {
206
206
  return strRes;
207
207
  }
208
208
 
209
- public IDBStorage createDBStorage() {
210
- return new HsqlDBStorage();
211
- }
212
-
213
209
  public IFileAccess createFileAccess() {
214
210
  return new FileAccessBB();
215
211
  }
@@ -235,4 +231,9 @@ public class RhoRubyHelper implements IRhoRubyHelper {
235
231
  {
236
232
  GeoLocation.wakeUp();
237
233
  }
234
+
235
+ public void unzip_file(String strPath)throws Exception
236
+ {
237
+ com.rho.rubyext.System.unzip_file(strPath);
238
+ }
238
239
  }
@@ -1,14 +1,254 @@
1
1
  package com.rho;
2
2
 
3
- import net.rim.device.api.ui.UiApplication;
3
+ import java.io.InputStream;
4
+
5
+ import javax.microedition.io.StreamConnection;
6
+
7
+ import com.rho.RhoClassFactory;
8
+ import com.rho.RhoEmptyLogger;
9
+ import com.rho.RhoLogger;
10
+ import com.rho.RhoThread;
11
+ import com.rho.RhodesApp;
12
+ import com.rho.ThreadQueue;
13
+ import com.rho.ThreadQueue.IQueueCommand;
14
+ import com.rho.net.URI;
4
15
 
5
- public class RhodesApplicationPlatform extends UiApplication
16
+ import net.rim.blackberry.api.push.*;
17
+ import net.rim.device.api.io.http.PushInputStream;
18
+ import net.rim.device.api.system.ApplicationDescriptor;
19
+ import net.rim.device.api.ui.UiApplication;
20
+ import net.rim.device.api.util.DataBuffer;
21
+ /**
22
+ *
23
+ */
24
+ public class RhodesApplicationPlatform extends UiApplication implements PushApplication
6
25
  {
26
+ private static final RhoLogger LOG = RhoLogger.RHO_STRIP_LOG ? new RhoEmptyLogger() :
27
+ new RhoLogger("RhodesPUSH");
28
+
29
+ private static final int CHUNK_SIZE = 256;
30
+ PushMessageThread m_PushMessageThread;
31
+
32
+ private static class PushStatusCommand implements IQueueCommand
33
+ {
34
+ String m_strStatus;
35
+
36
+ public PushStatusCommand(String strStatus)
37
+ {
38
+ m_strStatus = strStatus;
39
+ }
40
+ public boolean equals(IQueueCommand cmd){return false;}
41
+
42
+ public void execute()
43
+ {
44
+ try
45
+ {
46
+ RhodesApp.getInstance().callPushCallback(m_strStatus);
47
+ }catch(Exception exc)
48
+ {
49
+ LOG.ERROR("callPushCallback failed.", exc);
50
+ }
51
+ }
52
+ }
53
+
54
+ private static class PushMessageCommand implements IQueueCommand
55
+ {
56
+ PushInputStream m_inputStream;
57
+ StreamConnection m_conn;
58
+
59
+ public PushMessageCommand(PushInputStream inputStream, StreamConnection conn)
60
+ {
61
+ m_inputStream = inputStream;
62
+ m_conn = conn;
63
+ }
64
+ public boolean equals(IQueueCommand cmd){return false;}
65
+
66
+ public void execute()
67
+ {
68
+ InputStream input = null;
69
+
70
+ try
71
+ {
72
+ input = m_conn.openInputStream();
73
+ DataBuffer db = new DataBuffer();
74
+ byte[] data = new byte[CHUNK_SIZE];
75
+ int chunk = 0;
76
+
77
+ while ( -1 != (chunk = input.read(data)) )
78
+ {
79
+ db.write(data, 0, chunk);
80
+ }
81
+
82
+ data = db.getArray();
83
+
84
+ try
85
+ {
86
+ rhomobile.PushListeningThread.processPushMessage(data, db.getLength());
87
+ }catch(Exception exc)
88
+ {
89
+ LOG.ERROR("processPushMessage failed.Data: " + new String(data), exc);
90
+ }catch(Throwable th)
91
+ {
92
+ LOG.ERROR("processPushMessage crashed.Data: " + new String(data), th);
93
+ }
94
+ }catch(Exception exc)
95
+ {
96
+ LOG.ERROR("Read PUSH message failed.", exc);
97
+ }catch(Throwable th)
98
+ {
99
+ LOG.ERROR("Read PUSH message crashed.", th);
100
+ }finally
101
+ {
102
+ try
103
+ {
104
+ m_inputStream.accept();
105
+
106
+ if ( input != null)
107
+ input.close();
108
+
109
+ m_inputStream.close();
110
+ m_conn.close();
111
+ }catch(Exception exc)
112
+ {
113
+
114
+ }
115
+ }
116
+ }
117
+
118
+ }
119
+
120
+ private static class PushMessageThread extends ThreadQueue
121
+ {
122
+ public PushMessageThread()
123
+ {
124
+ super(new RhoClassFactory());
125
+
126
+ ThreadQueue.setLogCategory(LOG.getLogCategory());
127
+
128
+ setPollInterval(QUEUE_POLL_INTERVAL_INFINITE);
129
+
130
+ start(epLow);
131
+ }
132
+
133
+ public void processCommand(IQueueCommand pCmd)
134
+ {
135
+ ((PushMessageCommand)pCmd).execute();
136
+ }
137
+ }
138
+
139
+ public void onMessage(PushInputStream inputStream, StreamConnection conn)
140
+ {
141
+ LOG.INFO("onMessage");
142
+ m_PushMessageThread.addQueueCommand( new PushMessageCommand(inputStream, conn) );
143
+ }
144
+
145
+ public void onStatusChange(PushApplicationStatus status)
146
+ {
147
+ String strError = status.getError();
148
+
149
+ String strStatus = "", strRegReason = "";
150
+
151
+ switch( status.getStatus() )
152
+ {
153
+ case PushApplicationStatus.STATUS_ACTIVE:
154
+ strStatus = "Active";
155
+ break;
156
+ case PushApplicationStatus.STATUS_FAILED:
157
+ strStatus = "Failed";
158
+ break;
159
+ case PushApplicationStatus.STATUS_NOT_REGISTERED:
160
+ strStatus = "Not Registered";
161
+ break;
162
+ case PushApplicationStatus.STATUS_PENDING:
163
+ strStatus = "Pending";
164
+ break;
165
+ }
166
+
167
+ switch( status.getReason() ) {
168
+ case PushApplicationStatus.REASON_SIM_CHANGE:
169
+ strRegReason = "Status change was initiated by SIM card change";
170
+ break;
171
+ case PushApplicationStatus.REASON_API_CALL:
172
+ strRegReason = "Status change was initiated by API call";
173
+ break;
174
+ case PushApplicationStatus.REASON_REJECTED_BY_SERVER:
175
+ strRegReason = "Registration was rejected by server ";
176
+ break;
177
+ case PushApplicationStatus.REASON_NETWORK_ERROR:
178
+ strRegReason = "Communication failed due to network error ";
179
+ break;
180
+ case PushApplicationStatus.REASON_INVALID_PARAMETERS:
181
+ strRegReason = "Invalid parameters were provided that caused registration failure ";
182
+ break;
183
+ }
184
+
185
+ String strMsg = "status="+URI.urlEncode(strStatus)+"&reason="+URI.urlEncode(strRegReason);
186
+
187
+ if ( strError != null && strError.length() > 0 )
188
+ strMsg += "&error="+URI.urlEncode(strError);
189
+
190
+ LOG.INFO("onStatusChange : " + strMsg);
191
+
192
+ if ( m_PushMessageThread != null )
193
+ m_PushMessageThread.addQueueCommand( new PushStatusCommand(strMsg) );
194
+ }
195
+
7
196
  public void onPlatformActivate()
8
197
  {
198
+ if ( com.rho.Capabilities.ENABLE_PUSH )
199
+ {
200
+ if ( !rhomobile.PushListeningThread.isPushServiceEnabled() )
201
+ return;
202
+
203
+ getUiApplication().invokeLater( new Runnable()
204
+ {
205
+ public void run()
206
+ {
207
+ try
208
+ {
209
+ m_PushMessageThread = new PushMessageThread();
210
+ String strAppName = RhoConf.getInstance().getString("push_service_appname");
211
+ String strUrl = RhoConf.getInstance().getString("push_service_url");
212
+ if ( strAppName != null && strAppName.length() > 0 && strUrl != null && strUrl.length() > 0 )
213
+ {
214
+ int nPort = RhoConf.getInstance().getInt("push_service_port");
215
+ byte btServiceType = RhoConf.getInstance().getString("push_service_type").equalsIgnoreCase("BPAS") ?
216
+ PushApplicationDescriptor.SERVER_TYPE_BPAS : PushApplicationDescriptor.SERVER_TYPE_NONE;
217
+
218
+ PushApplicationDescriptor pad = new PushApplicationDescriptor(
219
+ strAppName, nPort, strUrl, btServiceType,
220
+ ApplicationDescriptor.currentApplicationDescriptor());
221
+
222
+ PushApplicationStatus status = PushApplicationRegistry.getStatus(pad);
223
+
224
+ LOG.INFO("registerPushService status : " + status.toString());
225
+
226
+ if (status.getStatus() != PushApplicationStatus.STATUS_ACTIVE && status.getStatus() != PushApplicationStatus.STATUS_PENDING)
227
+ {
228
+
229
+ LOG.INFO("registerPushService registering push");
230
+
231
+ PushApplicationRegistry.registerApplication(pad);
232
+ }
233
+ }
234
+ }catch(Exception exc)
235
+ {
236
+ LOG.ERROR("registerPushService failed.", exc);
237
+ }catch(Throwable t)
238
+ {
239
+ LOG.ERROR("registerPushService crashed.", t);
240
+ }
241
+ }
242
+ });
243
+ }
9
244
  }
10
245
 
11
246
  public void onPlatformClose()
12
247
  {
248
+ if ( m_PushMessageThread != null )
249
+ m_PushMessageThread.stop(3);
250
+
251
+ m_PushMessageThread = null;
13
252
  }
253
+
14
254
  }