rhodes 3.2.3 → 3.3.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (368) hide show
  1. data/CHANGELOG +10 -0
  2. data/Rakefile +153 -46
  3. data/doc/build.txt +261 -102
  4. data/doc/configuration.txt +5 -2
  5. data/doc/device-caps.txt +134 -23
  6. data/doc/extensions.txt +922 -69
  7. data/doc/generator.txt +96 -39
  8. data/doc/install.txt +35 -19
  9. data/doc/jqt-jqm-transition.txt +17 -1
  10. data/doc/rhom.txt +23 -2
  11. data/doc/rhostudio-eclipse.txt +49 -0
  12. data/doc/rhostudio-test-plan.txt +440 -0
  13. data/doc/simulator.txt +1 -1
  14. data/doc/synchronization.txt +40 -1
  15. data/lib/build/jake.rb +108 -7
  16. data/lib/extensions/barcode/ext/barcode/platform/android/Rakefile +0 -35
  17. data/lib/extensions/barcode/ext/barcode/platform/iphone/Barcode.xcodeproj/project.pbxproj +8 -2
  18. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeCallbackHelper.mm +195 -195
  19. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewController.m +6 -0
  20. data/lib/extensions/barcode/ext/barcode/platform/iphone/Rakefile +5 -0
  21. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode_wrap.c +64 -20
  22. data/lib/extensions/debugger/CHANGELOG +3 -0
  23. data/lib/extensions/debugger/debugger.rb +26 -21
  24. data/lib/extensions/digest-md5/ext/Rakefile +5 -5
  25. data/lib/extensions/digest-md5/ext/build +10 -1
  26. data/lib/extensions/digest-md5/ext/defs.h +19 -0
  27. data/lib/extensions/digest-md5/ext/digest-md5.vcproj +317 -9
  28. data/lib/extensions/digest-md5/ext/iphone/Dmd5.xcodeproj/project.pbxproj +290 -0
  29. data/lib/extensions/digest-md5/ext/iphone/Dmd5_Prefix.pch +7 -0
  30. data/lib/extensions/digest-md5/ext/iphone/Rakefile +79 -0
  31. data/lib/extensions/digest-sha1/ext/Rakefile +5 -5
  32. data/lib/extensions/digest-sha1/ext/build +10 -1
  33. data/lib/extensions/digest-sha1/ext/defs.h +19 -0
  34. data/lib/extensions/digest-sha1/ext/digest-sha1.vcproj +317 -9
  35. data/lib/extensions/digest-sha1/ext/iphone/Dsha1.xcodeproj/project.pbxproj +278 -0
  36. data/lib/extensions/digest-sha1/ext/iphone/Dsha1_Prefix.pch +7 -0
  37. data/lib/extensions/digest-sha1/ext/iphone/Rakefile +79 -0
  38. data/lib/extensions/digest/ext/Rakefile +5 -5
  39. data/lib/extensions/digest/ext/build +10 -1
  40. data/lib/extensions/digest/ext/digest.vcproj +317 -9
  41. data/lib/extensions/digest/ext/iphone/Digest.xcodeproj/project.pbxproj +270 -0
  42. data/lib/extensions/digest/ext/iphone/Digest_Prefix.pch +7 -0
  43. data/lib/extensions/digest/ext/iphone/Rakefile +79 -0
  44. data/lib/extensions/esri/ext/esri/platform/iphone/ESRI.xcodeproj/project.pbxproj +10 -2
  45. data/lib/extensions/esri/ext/esri/platform/iphone/Rakefile +6 -0
  46. data/lib/extensions/fcntl/ext/Rakefile +5 -5
  47. data/lib/extensions/fcntl/ext/build +9 -1
  48. data/lib/extensions/fcntl/ext/iphone/Fcntl.xcodeproj/project.pbxproj +262 -0
  49. data/lib/extensions/fcntl/ext/iphone/Fcntl_Prefix.pch +7 -0
  50. data/lib/extensions/fcntl/ext/iphone/Rakefile +79 -0
  51. data/lib/extensions/net-http/net/http.rb +9 -7
  52. data/lib/extensions/nfc/ext/nfc/shared/ruby/nfc_wrap.c +64 -20
  53. data/lib/extensions/rhoxml/rexml/document.rb +3 -2
  54. data/lib/extensions/rhoxml/rexml/instruction.rb +70 -0
  55. data/lib/framework/builtinME.rb +9 -0
  56. data/lib/framework/date/format.rb +1 -1
  57. data/lib/framework/dateME.rb +19 -2
  58. data/lib/framework/rho/rho.rb +15 -4
  59. data/lib/framework/rho/rhoapplication.rb +1 -0
  60. data/lib/framework/rho/rhocontact.rb +10 -27
  61. data/lib/framework/rho/rhoevent_c.rb +8 -2
  62. data/lib/framework/rho/rhosupport.rb +25 -0
  63. data/lib/framework/rhodes.rb +1 -1
  64. data/lib/framework/rhoframework.rb +15 -0
  65. data/lib/framework/rholang/localization_simplified.rb +8 -10
  66. data/lib/framework/rhom/rhom_object_factory.rb +8 -2
  67. data/lib/framework/version.rb +1 -1
  68. data/lib/rhodes.rb +1 -1
  69. data/platform/android/Rhodes/jni/Application.mk +2 -1
  70. data/platform/android/Rhodes/jni/include/rhodes.h +9 -0
  71. data/platform/android/Rhodes/jni/src/callbacks.cpp +31 -1
  72. data/platform/android/Rhodes/jni/src/event.cpp +75 -31
  73. data/platform/android/Rhodes/jni/src/nativeview.cpp +1 -1
  74. data/platform/android/Rhodes/jni/src/phonebook.cpp +73 -9
  75. data/platform/android/Rhodes/jni/src/rhodes.cpp +21 -0
  76. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +16 -24
  77. data/platform/android/Rhodes/jni/src/signature.cpp +27 -1
  78. data/platform/android/Rhodes/{default.properties → project.properties} +2 -2
  79. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +14 -12
  80. data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java +14 -12
  81. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +38 -115
  82. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +69 -52
  83. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +9 -0
  84. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraNewService.java +21 -1
  85. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraOldService.java +1 -1
  86. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSemiService.java +1 -1
  87. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraService.java +1 -1
  88. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +38 -6
  89. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +212 -1
  90. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +82 -125
  91. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +1 -1
  92. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java +2 -1
  93. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +39 -19
  94. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SplashScreen.java +106 -136
  95. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +26 -25
  96. data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java +1 -1
  97. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java +40 -0
  98. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java +47 -0
  99. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality02.java +33 -0
  100. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality03.java +33 -0
  101. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality04.java +34 -0
  102. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality05.java +75 -0
  103. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality06.java +34 -0
  104. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality07.java +34 -0
  105. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java +44 -0
  106. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality09.java +34 -0
  107. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality10.java +34 -0
  108. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java +73 -0
  109. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Contact.java +57 -6
  110. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessor.java +2 -2
  111. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorNew.java +322 -76
  112. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/ContactAccessorOld.java +11 -6
  113. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java +5 -5
  114. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientOld.java +2 -1
  115. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +125 -0
  116. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsOld.java +2 -3
  117. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/WebView.java +16 -0
  118. data/platform/android/build/RhodesSRC_build.files +14 -0
  119. data/platform/android/build/android.rake +149 -147
  120. data/platform/android/build/android_tools.rb +58 -0
  121. data/platform/android/build/librhocommon_build.files +1 -0
  122. data/platform/android/build/libruby_build.files +3 -0
  123. data/platform/bb/RubyVM/src/com/rho/RhoConf.java +11 -1
  124. data/platform/bb/RubyVM/src/com/rho/db/DBAdapter.java +11 -5
  125. data/platform/bb/RubyVM/src/com/rho/db/DBAttrManager.java +3 -2
  126. data/platform/bb/RubyVM/src/com/rho/file/RhoFile.java +2 -0
  127. data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +20 -8
  128. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +9 -6
  129. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +45 -18
  130. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +1 -2
  131. data/platform/bb/build/bb.rake +84 -70
  132. data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +106 -14
  133. data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +1 -1
  134. data/platform/bb/rhodes/src/com/rho/BrowserAdapter5.java +108 -16
  135. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +10 -5
  136. data/platform/bb/rhodes/src/rhomobile/camera/CameraScreen.java +21 -4
  137. data/platform/bb/rhodes/src/rhomobile/mapview/Annotation.java +17 -0
  138. data/platform/bb/rhodes/src/rhomobile/mapview/MapView.java +8 -5
  139. data/platform/bb/rhodes/src/rhomobile/mapview/MapViewScreen.java +3 -1
  140. data/platform/iphone/Classes/AppManager/AppManager.m +15 -3
  141. data/platform/iphone/Classes/Event/Event.m +45 -2
  142. data/platform/iphone/Classes/MapView/MapViewController.m +8 -4
  143. data/platform/iphone/Classes/Phonebook/phonebook.m +30 -7
  144. data/platform/iphone/Classes/Rhodes.h +11 -1
  145. data/platform/iphone/Classes/Rhodes.m +141 -9
  146. data/platform/iphone/Classes/Signature/SignatureDelegate.m +27 -1
  147. data/platform/iphone/Classes/SimpleMainView.h +1 -0
  148. data/platform/iphone/Classes/SimpleMainView.m +4 -0
  149. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +31 -1
  150. data/platform/iphone/curl/curl.xcodeproj/project.pbxproj +10 -0
  151. data/platform/iphone/rbuild/iphone.rake +33 -6
  152. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +10 -2
  153. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +22 -2
  154. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +14 -0
  155. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +10 -0
  156. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  157. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  158. data/platform/osx/build/osx.rake +58 -7
  159. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +427 -69
  160. data/platform/shared/RhoConnectClient/RhoConnectClient.h +21 -2
  161. data/platform/shared/common/Android.mk +2 -1
  162. data/platform/shared/common/AutoPointer.h +23 -0
  163. data/platform/shared/common/BundleManager.cpp +333 -0
  164. data/platform/shared/common/RhoFile.cpp +206 -23
  165. data/platform/shared/common/RhoFile.h +14 -4
  166. data/platform/shared/common/RhoFilePath.h +18 -0
  167. data/platform/shared/common/RhoStd.h +11 -1
  168. data/platform/shared/common/RhoThread.h +4 -1
  169. data/platform/shared/common/RhodesApp.cpp +31 -8
  170. data/platform/shared/common/RhodesApp.h +14 -0
  171. data/platform/shared/common/RhodesAppBase.cpp +6 -6
  172. data/platform/shared/common/RhodesAppBase.h +1 -1
  173. data/platform/shared/common/emml.h +34 -0
  174. data/platform/shared/common/iphone/RhoFileImpl.m +30 -2
  175. data/platform/shared/common/map/BaseMapEngine.cpp +3 -3
  176. data/platform/shared/common/map/GeocodingMapEngine.cpp +205 -14
  177. data/platform/shared/common/map/GeocodingMapEngine.h +25 -2
  178. data/platform/shared/common/map/MapEngine.cpp +24 -2
  179. data/platform/shared/common/map/MapEngine.h +23 -12
  180. data/platform/shared/common/phonebook/PhonebookParams.cpp +99 -0
  181. data/platform/shared/common/phonebook/PhonebookParams.h +52 -0
  182. data/platform/shared/common/rhoparams.cpp +14 -0
  183. data/platform/shared/common/rhoparams.h +1 -0
  184. data/platform/shared/db/DBAdapter.cpp +43 -24
  185. data/platform/shared/db/DBAdapter.h +6 -1
  186. data/platform/shared/db/DBAttrManager.cpp +50 -1
  187. data/platform/shared/logging/RhoLog.h +3 -0
  188. data/platform/shared/logging/RhoLogSink.cpp +5 -1
  189. data/platform/shared/net/CURLNetRequest.cpp +2 -0
  190. data/platform/shared/qt/rhodes/QtMainWindow.cpp +14 -1
  191. data/platform/shared/qt/rhodes/impl/PhonebookImpl.cpp +2 -2
  192. data/platform/shared/qt/rhodes/impl/RhoFileImpl.cpp +1 -1
  193. data/platform/shared/qt/rhodes/impl/SignatureImpl.cpp +14 -2
  194. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +16 -2
  195. data/platform/shared/qt/rhodes/main.cpp +28 -0
  196. data/platform/shared/qt/rhodes/rhodes.pro +3 -0
  197. data/platform/shared/qt/rholib/rholib.pro +2 -1
  198. data/platform/shared/qt/rubylib/rubylib.pro +2 -1
  199. data/platform/shared/ruby/Android.mk +3 -0
  200. data/platform/shared/ruby/class.c +7 -0
  201. data/platform/shared/ruby/compile.c +18 -10
  202. data/platform/shared/ruby/encdb.h +18 -8
  203. data/platform/shared/ruby/eval.c +108 -2
  204. data/platform/shared/ruby/ext/alert/alert_wrap.c +64 -20
  205. data/platform/shared/ruby/ext/asynchttp/asynchttp_wrap.c +64 -20
  206. data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +67 -23
  207. data/platform/shared/ruby/ext/calendar/calendar_wrap.c +64 -20
  208. data/platform/shared/ruby/ext/calendar/event_wrap.c +64 -20
  209. data/platform/shared/ruby/ext/camera/camera_wrap.c +64 -20
  210. data/platform/shared/ruby/ext/datetimepicker/datetimepicker_wrap.c +64 -20
  211. data/platform/shared/ruby/ext/geolocation/geolocation.i +16 -0
  212. data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +127 -26
  213. data/platform/shared/ruby/ext/mapview/mapview_wrap.c +64 -20
  214. data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +65 -21
  215. data/platform/shared/ruby/ext/nativeviewmanager/nativeviewmanager_wrap.c +64 -20
  216. data/platform/shared/ruby/ext/navbar/navbar_wrap.c +64 -20
  217. data/platform/shared/ruby/ext/phonebook/phonebook.i +7 -7
  218. data/platform/shared/ruby/ext/phonebook/phonebook_wrap.c +95 -120
  219. data/platform/shared/ruby/ext/rho/rhoruby.c +4 -4
  220. data/platform/shared/ruby/ext/rho/rhoruby.h +2 -0
  221. data/platform/shared/ruby/ext/rho/rhosupport.c +39 -6
  222. data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +65 -21
  223. data/platform/shared/ruby/ext/ringtones/ringtones_wrap.c +64 -20
  224. data/platform/shared/ruby/ext/signature/signature.i +37 -5
  225. data/platform/shared/ruby/ext/signature/signature_wrap.c +274 -45
  226. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +65 -21
  227. data/platform/shared/ruby/ext/system/system.i +14 -2
  228. data/platform/shared/ruby/ext/system/system_wrap.c +146 -25
  229. data/platform/shared/ruby/ext/webview/webview_wrap.c +65 -21
  230. data/platform/shared/ruby/include/ruby/ruby.h +15 -4
  231. data/platform/shared/ruby/inits.c +1 -0
  232. data/platform/shared/ruby/io.c +13 -3
  233. data/platform/shared/ruby/win32/win32.c +3 -3
  234. data/platform/shared/ruby/wince/io_wce.c +2 -2
  235. data/platform/shared/rubyext/System.cpp +9 -5
  236. data/platform/shared/sync/ClientRegister.cpp +18 -8
  237. data/platform/shared/sync/SyncEngine.cpp +25 -11
  238. data/platform/shared/sync/SyncEngine.h +2 -0
  239. data/platform/shared/sync/SyncSource.cpp +40 -15
  240. data/platform/shared/sync/SyncSource.h +3 -2
  241. data/platform/shared/sync/SyncThread.cpp +9 -4
  242. data/platform/shared/sync/SyncThread.h +3 -1
  243. data/platform/symbian/build/symbian.rake +14 -9
  244. data/platform/symbian/rhodes/rhodes.pro +11 -8
  245. data/platform/symbian/rhodes/src/phonebook/ruby_phonebook.cpp +2 -2
  246. data/platform/symbian/rubylib/rubylib.pro +3 -0
  247. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  248. data/platform/wm/RhoLib/RhoLib.vcproj +315 -2
  249. data/platform/wm/build/build_inf.js +235 -187
  250. data/platform/wm/build/wm.rake +388 -233
  251. data/platform/wm/rhodes.sln +56 -0
  252. data/platform/wm/rhodes/MainWindow.cpp +139 -77
  253. data/platform/wm/rhodes/MainWindow.h +27 -22
  254. data/platform/wm/rhodes/MapView/{Graphics.cpp → Bitmap.cpp} +15 -253
  255. data/platform/wm/rhodes/MapView/Bitmap.h +86 -0
  256. data/platform/wm/rhodes/MapView/MapViewManager.cpp +7 -2
  257. data/platform/wm/rhodes/MapView/MapViewManager.h +1 -1
  258. data/platform/wm/rhodes/MapView/Win32Graphics.cpp +263 -0
  259. data/platform/wm/rhodes/MapView/Win32Graphics.h +133 -0
  260. data/platform/wm/rhodes/MapView/WmGraphics.cpp +291 -0
  261. data/platform/wm/rhodes/MapView/{Graphics.h → WmGraphics.h} +14 -56
  262. data/platform/wm/rhodes/Rhodes.cpp +128 -32
  263. data/platform/wm/rhodes/Rhodes.rc +6 -2
  264. data/platform/wm/rhodes/camera/Camera.cpp +1 -0
  265. data/platform/wm/rhodes/phonebook/phonebook.cpp +2 -2
  266. data/platform/wm/rhodes/phonebook/phonebook.h +2 -2
  267. data/platform/wm/rhodes/resource.h +3 -2
  268. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -0
  269. data/platform/wm/rhodes/rho/rubyext/NativeToolbar.cpp +4 -0
  270. data/platform/wm/rhodes/rho/rubyext/RhoSignature.cpp +675 -0
  271. data/platform/wm/rhodes/rho/rubyext/RhoSignature.h +123 -0
  272. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +12 -2
  273. data/platform/wm/rhodes/rhodes.vcproj +2732 -1113
  274. data/platform/wm/rhodes/simulator/MainWindowQt.h +1 -1
  275. data/platform/wm/rhodes/stdafx.h +1 -0
  276. data/platform/wm/rhoelements.sln +118 -62
  277. data/platform/wm/rubylib/rubylib.vcproj +345 -16
  278. data/platform/wm/sqlite3/sqlite3.vcproj +305 -0
  279. data/platform/wm/syncengine/syncengine.vcproj +309 -0
  280. data/platform/wm/tools/detool/LogServer.cpp +19 -2
  281. data/platform/wm/tools/detool/detool.cpp +131 -6
  282. data/platform/wm/tools/detool/detool.vcproj +3 -1
  283. data/platform/wm/tools/detool/stdafx.h +1 -0
  284. data/platform/wp7/IronRuby/Languages/Ruby/Libraries/Builtins/RangeOps.cs +589 -0
  285. data/platform/wp7/IronRuby/Languages/Ruby/Ruby/Builtins/RubyEncoding.cs +678 -0
  286. data/platform/wp7/IronRuby/Languages/Ruby/Ruby/Runtime/RubyExceptionData.cs +271 -0
  287. data/platform/wp7/IronRuby/Languages/Ruby/Ruby/Runtime/RubyUtils.cs +31 -1
  288. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.Libraries.dll +0 -0
  289. data/platform/wp7/IronRuby/bin/Silverlight3Release/IronRuby.dll +0 -0
  290. data/platform/wp7/RhoRubyLib/common/RhoStd.cs +6 -0
  291. data/platform/wp7/RhoRubyLib/common/RhodesApp.cs +16 -2
  292. data/platform/wp7/RhoRubyLib/net/NetRequest.cs +2 -0
  293. data/platform/wp7/RhoRubyLib/rubyext/RhoSyncEngine.cs +1 -2
  294. data/platform/wp7/RhoRubyLib/sync/SyncEngine.cs +13 -10
  295. data/platform/wp7/RhoRubyLib/sync/SyncSource.cs +30 -8
  296. data/platform/wp7/build/wp.rake +5 -0
  297. data/rakefile.rb +153 -46
  298. data/res/build-tools/detool.exe +0 -0
  299. data/res/build-tools/swig_patch/Lib/ruby/rubyerrors.swg +155 -0
  300. data/res/build-tools/swig_patch/Lib/ruby/rubyhead.swg +158 -0
  301. data/res/build-tools/swig_patch/Lib/ruby/rubyiterators.swg +932 -0
  302. data/res/build-tools/swig_patch/Lib/ruby/rubyrun.swg +448 -0
  303. data/res/build-tools/swig_patch/Lib/ruby/rubystdfunctors.swg +162 -0
  304. data/res/build-tools/swig_patch/Lib/ruby/rubytracking.swg +159 -0
  305. data/res/build-tools/swig_patch/Lib/ruby/std_basic_string.i +97 -0
  306. data/res/build-tools/swig_patch/Lib/ruby/std_map.i +418 -0
  307. data/res/build-tools/swig_patch/Lib/ruby/std_multimap.i +227 -0
  308. data/res/build-tools/swig_patch/Lib/swiginit.swg +269 -0
  309. data/res/build-tools/swig_patch/README +7 -0
  310. data/res/generators/templates/application/app/Settings/controller.rb +42 -1
  311. data/res/generators/templates/application/app/Settings/wait.erb +1 -1
  312. data/res/generators/templates/application/app/application.rb +1 -1
  313. data/res/generators/templates/application/app/layout.erb +8 -8
  314. data/res/generators/templates/application/build.yml +0 -1
  315. data/res/generators/templates/application/public/css/android.css +6 -0
  316. data/res/generators/templates/application/public/css/blackberry.css +6 -0
  317. data/res/generators/templates/application/public/css/iphone.css +6 -0
  318. data/res/generators/templates/application/public/css/jqmobile-patch.css +14 -0
  319. data/res/generators/templates/application/public/jqmobile/images/ajax-loader.png +0 -0
  320. data/res/generators/templates/application/public/jqmobile/images/icons-18-black.png +0 -0
  321. data/res/generators/templates/application/public/jqmobile/images/icons-18-white.png +0 -0
  322. data/res/generators/templates/application/public/jqmobile/images/icons-36-black.png +0 -0
  323. data/res/generators/templates/application/public/jqmobile/images/icons-36-white.png +0 -0
  324. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0rc1.css → jquery.mobile-1.0.css} +452 -354
  325. data/res/generators/templates/application/public/jqmobile/{jquery.mobile-1.0rc1.js → jquery.mobile-1.0.js} +629 -442
  326. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0.min.css +2 -0
  327. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0.min.js +172 -0
  328. data/res/generators/templates/application/public/jqmobile/jquery.mobile.structure-1.0.css +714 -0
  329. data/res/generators/templates/application/public/jqmobile/jquery.mobile.structure-1.0.min.css +2 -0
  330. data/res/generators/templates/application/public/js/jqmobile-patch.js +136 -7
  331. data/res/generators/templates/extension/app/MontanaTest/controller.rb +20 -20
  332. data/res/generators/templates/extension/app/MontanaTest/index.erb +17 -17
  333. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Montana.xcodeproj/project.pbxproj +8 -2
  334. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/iphone/Rakefile +5 -0
  335. data/res/generators/templates/extension/extensions/montana/ext/montana/shared/ruby/montana_wrap.c +64 -20
  336. data/rhomobile-debug.gemspec +1 -1
  337. data/spec/framework_spec/app/layout.erb +1 -1
  338. data/spec/framework_spec/app/spec/core/rational/Rational_spec.rb +1 -1
  339. data/spec/framework_spec/app/spec/library/stringio/shared/each_char.rb +6 -2
  340. data/spec/framework_spec/app/spec/shared/rational/{Rational.rb → rational_main.rb} +0 -0
  341. data/spec/framework_spec/build.yml +0 -3
  342. data/spec/perfomance_spec/app/Benchmark/controller.rb +1 -1
  343. data/spec/perfomance_spec/app/layout.erb +1 -1
  344. data/spec/phone_spec/app/BlobTest_s/blob_test_s.rb +13 -0
  345. data/spec/phone_spec/app/BlobTest_s/test.png +0 -0
  346. data/spec/phone_spec/app/BlobTest_s/test2.png +0 -0
  347. data/spec/phone_spec/app/spec/blobsync_spec.rb +27 -15
  348. data/spec/phone_spec/app/spec/date_spec.rb +27 -1
  349. data/spec/phone_spec/app/spec/rho_spec.rb +6 -0
  350. data/spec/phone_spec/app/spec/rhom_object_spec.rb +64 -26
  351. data/spec/phone_spec/app/spec/syncengine_spec.rb +28 -7
  352. data/spec/phone_spec/app/spec/uri_spec.rb +4 -4
  353. data/spec/phone_spec/app/spec_runner.rb +4 -2
  354. data/spec/phone_spec/build.yml +7 -9
  355. data/spec/phone_spec/rhoconfig.txt +1 -0
  356. data/version +1 -1
  357. metadata +75 -22
  358. data/Manifest.txt +0 -7853
  359. data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.cpp +0 -384
  360. data/platform/wm/rhodes/rhoelements/RhoWKBrowserEngine.h +0 -41
  361. data/platform/wm/rhodes/signature/Signature.cpp +0 -396
  362. data/platform/wm/rhodes/signature/Signature.h +0 -84
  363. data/platform/wm/rubylib/rubylib.vcproj.VLAD.Vladimir.user +0 -429
  364. data/platform/wm/sqlite3/sqlite3.vcproj.VLAD.Vladimir.user +0 -429
  365. data/platform/wm/syncengine/syncengine.vcproj.VLAD.Vladimir.user +0 -429
  366. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0rc1.min.css +0 -12
  367. data/res/generators/templates/application/public/jqmobile/jquery.mobile-1.0rc1.min.js +0 -170
  368. data/rhomobile-debug-1.0.5.gem +0 -0
@@ -1,6 +1,6 @@
1
1
  module RhodesFramework
2
2
  unless defined? RhodesFramework::VERSION
3
- VERSION = '3.2.1'
3
+ VERSION = '3.3.0'
4
4
  end
5
5
  unless defined? RhodesFramework::DBVERSION
6
6
  DBVERSION = '2.2.2'
data/lib/rhodes.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Rhodes
2
2
  unless defined? Rhodes::VERSION
3
- VERSION = '3.2.1'
3
+ VERSION = '3.3.0'
4
4
  end
5
5
  unless defined? Rhodes::DBVERSION
6
6
  DBVERSION = '2.2.0'
@@ -1,3 +1,4 @@
1
1
  APP_STL := stlport_static
2
- APP_CFLAGS += --sysroot $(NDK_ROOT)/platforms/android-9/arch-arm -DOS_ANDROID
2
+ APP_CFLAGS += --sysroot $(NDK_ROOT)/platforms/android-14/arch-arm -DOS_ANDROID
3
+ #APP_CFLAGS += --sysroot $(NDK_ROOT)/platforms/android-9/arch-arm -DOS_ANDROID
3
4
  #APP_CFLAGS += --sysroot /home/lexis/android/android-ndk-r6/platforms/android-9/arch-arm -DOS_ANDROID
@@ -94,6 +94,7 @@ typedef jholder<jstring> jhstring;
94
94
 
95
95
  namespace rho {
96
96
  template <typename K, typename V> class Hashtable;
97
+ template <typename T> class Vector;
97
98
  }
98
99
  typedef std::auto_ptr<rho::Hashtable<std::string, std::string> > hashtableholder;
99
100
 
@@ -183,6 +184,14 @@ struct rho_cast_helper<std::auto_ptr<rho::Hashtable<std::string,std::string> >,
183
184
  value_type operator()(JNIEnv *env, jobjectArray jKeys, jobjectArray jVals);
184
185
  };
185
186
 
187
+ template <>
188
+ struct rho_cast_helper<std::auto_ptr<rho::Vector<std::string> >, jobjectArray>
189
+ {
190
+ typedef rho::Vector<std::string> element_type;
191
+ typedef std::auto_ptr<element_type> value_type;
192
+ value_type operator()(JNIEnv *env, jobjectArray jArr);
193
+ };
194
+
186
195
  } // namespace details
187
196
 
188
197
  template <typename T, typename U>
@@ -58,7 +58,7 @@ RHO_GLOBAL VALUE rho_sys_has_network()
58
58
  return rho_ruby_create_boolean(env->CallStaticBooleanMethod(cls, mid));
59
59
  }
60
60
 
61
- RHO_GLOBAL void delete_files_in_folder(const char *szFolderPath)
61
+ RHO_GLOBAL void rho_file_impl_delete_files_in_folder(const char *szFolderPath)
62
62
  {
63
63
  JNIEnv *env = jnienv();
64
64
  jclass cls = getJNIClass(RHODES_JAVA_CLASS_RHODES_SERVICE);
@@ -69,6 +69,36 @@ RHO_GLOBAL void delete_files_in_folder(const char *szFolderPath)
69
69
  env->CallStaticVoidMethod(cls, mid, objFolderPath.get());
70
70
  }
71
71
 
72
+ RHO_GLOBAL void rho_file_impl_delete_folder(const char* szFolderPath) {
73
+ /*
74
+ JNIEnv *env = jnienv();
75
+ jclass cls = getJNIClass(RHODES_JAVA_CLASS_RHODES_SERVICE);
76
+ if (!cls) return;
77
+ jmethodID mid = getJNIClassStaticMethod(env, cls, "deleteFolder", "(Ljava/lang/String;)V");
78
+ if (!mid) return;
79
+ jhstring objFolderPath = rho_cast<jhstring>(szFolderPath);
80
+ env->CallStaticVoidMethod(cls, mid, objFolderPath.get());
81
+ */
82
+
83
+ }
84
+
85
+ RHO_GLOBAL void rho_file_impl_copy_folders_content_to_another_folder(const char* szSrcFolderPath, const char* szDstFolderPath) {
86
+ /*
87
+ JNIEnv *env = jnienv();
88
+ jclass cls = getJNIClass(RHODES_JAVA_CLASS_RHODES_SERVICE);
89
+ if (!cls) return;
90
+ jmethodID mid = getJNIClassStaticMethod(env, cls, "copyFoldersContentToAnotherFolder", "(Ljava/lang/String;Ljava/lang/String;)V");
91
+ if (!mid) return;
92
+ jhstring objSrcFolderPath = rho_cast<jhstring>(szSrcFolderPath);
93
+ jhstring objDstFolderPath = rho_cast<jhstring>(szDstFolderPath);
94
+ env->CallStaticVoidMethod(cls, mid, objSrcFolderPath.get(), objDstFolderPath.get());
95
+ */
96
+ }
97
+
98
+ RHO_GLOBAL void rho_platform_restart_application() {
99
+
100
+ }
101
+
72
102
  RHO_GLOBAL VALUE rho_sys_makephonecall(const char* callname, int nparams, char** param_names, char** param_values)
73
103
  {
74
104
  // TODO:
@@ -50,15 +50,25 @@ Out date_cast(In value);
50
50
  template <>
51
51
  jobject date_cast<jobject, VALUE>(VALUE rDate)
52
52
  {
53
- if (NIL_P(rDate))
53
+ RHO_TRACE("dateFromRuby");
54
+
55
+ if (NIL_P(rDate)) {
56
+ RHO_TRACE("dateFromRuby - NIL object");
54
57
  return NULL;
58
+ }
55
59
 
56
- RHO_TRACE("dateFromRuby (1)");
60
+ RHO_TRACE("dateFromRuby - check for string type");
57
61
  if (TYPE(rDate) == T_STRING)
58
62
  {
59
- RHO_TRACE("dateFromRuby (1.1)");
63
+ RHO_TRACE("dateFromRuby - converting from string");
64
+
65
+ if (strlen(RSTRING_PTR(rDate)) == 0) {
66
+ RHO_TRACE("dateFromRuby - empty string");
67
+ return NULL;
68
+ }
69
+
60
70
  rDate = rb_funcall(rb_cTime, rb_intern("parse"), 1, rDate);
61
- RHO_TRACE("dateFromRuby (1.2)");
71
+ RHO_TRACE("dateFromRuby - converted to ruby date");
62
72
  }
63
73
  VALUE cDate = rb_class_of(rDate);
64
74
  if (!rb_equal(cDate, rb_cTime))
@@ -141,6 +151,8 @@ static jfieldID fidNotes;
141
151
  static jfieldID fidPrivacy;
142
152
  static jfieldID fidFrequency;
143
153
  static jfieldID fidInterval;
154
+ static jfieldID fidRecurrenceEnd;
155
+ static jfieldID fidRecurrenceTimes;
144
156
 
145
157
  static bool init_event_stuff(JNIEnv *env)
146
158
  {
@@ -170,6 +182,10 @@ static bool init_event_stuff(JNIEnv *env)
170
182
  if (!fidFrequency) return false;
171
183
  fidInterval = getJNIClassField(env, clsEvent, "interval", "I");
172
184
  if (!fidInterval) return false;
185
+ fidRecurrenceEnd = getJNIClassField(env, clsEvent, "recurrenceEnd", "Ljava/util/Date;");
186
+ if (!fidRecurrenceEnd) return false;
187
+ fidRecurrenceTimes = getJNIClassField(env, clsEvent, "recurrenceTimes", "I");
188
+ if (!fidRecurrenceTimes) return false;
173
189
 
174
190
  initialized = true;
175
191
  return true;
@@ -240,7 +256,7 @@ jobject event_cast<jobject, VALUE>(VALUE rEvent)
240
256
  env->SetObjectField(jEvent, fidNotes, rho_cast<jhstring>(RSTRING_PTR(rNotes)).get());
241
257
  }
242
258
 
243
- RHO_TRACE("eventFromRuby (10)");
259
+ RHO_TRACE("eventFromRuby privacy");
244
260
  VALUE rPrivacy = rb_hash_aref(rEvent, rb_str_new2(RUBY_EV_PRIVACY));
245
261
  if (!NIL_P(rPrivacy))
246
262
  {
@@ -248,7 +264,7 @@ jobject event_cast<jobject, VALUE>(VALUE rEvent)
248
264
  env->SetObjectField(jEvent, fidPrivacy, rho_cast<jhstring>(RSTRING_PTR(rPrivacy)).get());
249
265
  }
250
266
 
251
- RHO_TRACE("eventFromRuby (11)");
267
+ RHO_TRACE("eventFromRuby recurrence");
252
268
  VALUE rRecurrence = rb_hash_aref(rEvent, rb_str_new2(RUBY_EV_RECURRENCE));
253
269
  if (!NIL_P(rRecurrence)) {
254
270
  Check_Type(rRecurrence, T_HASH);
@@ -269,6 +285,19 @@ jobject event_cast<jobject, VALUE>(VALUE rEvent)
269
285
  rInterval = rb_funcall(rInterval, rb_intern("to_i"), 0);
270
286
  int interval = NUM2INT(rInterval);
271
287
  env->SetIntField(jEvent, fidInterval, interval);
288
+ RAWTRACE1("eventFromRuby recurrence interval: %d", interval);
289
+
290
+ VALUE rUntilDate = rb_hash_aref(rRecurrence, rb_str_new2(RUBY_EV_RECURRENCE_END));
291
+ if (!NIL_P(rUntilDate))
292
+ {
293
+ env->SetObjectField(jEvent, fidRecurrenceEnd, date_cast<jobject>(rUntilDate));
294
+ RAWTRACE("eventFromRuby recurrence until date");
295
+ }
296
+
297
+ VALUE rTimes = rb_funcall(rb_hash_aref(rRecurrence, rb_str_new2(RUBY_EV_RECURRENCE_COUNT)), rb_intern("to_i"), 0);;
298
+ int times = NUM2INT(rTimes);
299
+ env->SetIntField(jEvent, fidRecurrenceTimes, times);
300
+ RAWTRACE1("eventFromRuby recurrence count: %d", times);
272
301
  }
273
302
 
274
303
  RHO_TRACE("eventFromRuby: return");
@@ -278,48 +307,50 @@ jobject event_cast<jobject, VALUE>(VALUE rEvent)
278
307
  template <>
279
308
  VALUE event_cast<VALUE, jobject>(jobject jEvent)
280
309
  {
310
+ RHO_TRACE("eventToRuby");
311
+
281
312
  if (!jEvent)
282
313
  return Qnil;
283
314
 
284
- RHO_TRACE("eventToRuby (1)");
315
+ RHO_TRACE("eventToRuby init JNI");
285
316
  JNIEnv *env = jnienv();
286
317
  if (!init_event_stuff(env))
287
318
  {
288
- RHO_TRACE("eventToRuby (1.1)");
319
+ RHO_TRACE("eventToRuby failed to init JNI");
289
320
  return Qnil;
290
321
  }
291
322
 
292
- RHO_TRACE("eventToRuby (2)");
323
+ RHO_TRACE("eventToRuby alloc event hash");
293
324
  VALUE rEvent = rb_hash_new();
294
325
 
295
- RHO_TRACE("eventToRuby (3)");
326
+ RHO_TRACE("eventToRuby get event id");
296
327
  jstring jId = (jstring)env->GetObjectField(jEvent, fidId);
297
328
  std::string s = rho_cast<std::string>(env, jId);
298
329
  env->DeleteLocalRef(jId);
299
330
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_ID), rb_str_new2(s.c_str()));
300
331
 
301
- RHO_TRACE("eventToRuby (4)");
332
+ RHO_TRACE("eventToRuby get title");
302
333
  jstring jTitle = (jstring)env->GetObjectField(jEvent, fidTitle);
303
334
  s = rho_cast<std::string>(env, jTitle);
304
335
  env->DeleteLocalRef(jTitle);
305
336
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_TITLE), rb_str_new2(s.c_str()));
306
337
 
307
- RHO_TRACE("eventToRuby (5)");
338
+ RHO_TRACE("eventToRuby get start date");
308
339
  jobject jStartDate = env->GetObjectField(jEvent, fidStartDate);
309
340
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_START_DATE), date_cast<VALUE>(jStartDate));
310
341
  env->DeleteLocalRef(jStartDate);
311
342
 
312
- RHO_TRACE("eventToRuby (6)");
343
+ RHO_TRACE("eventToRuby get end date");
313
344
  jobject jEndDate = env->GetObjectField(jEvent, fidEndDate);
314
345
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_END_DATE), date_cast<VALUE>(jEndDate));
315
346
  env->DeleteLocalRef(jEndDate);
316
347
 
317
- RHO_TRACE("eventToRuby (7)");
348
+ RHO_TRACE("eventToRuby get last modified date");
318
349
  jobject jLastModified = env->GetObjectField(jEvent, fidLastModified);
319
350
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_LAST_MODIFIED), date_cast<VALUE>(jLastModified));
320
351
  env->DeleteLocalRef(jLastModified);
321
352
 
322
- RHO_TRACE("eventToRuby (8)");
353
+ RHO_TRACE("eventToRuby get location");
323
354
  jstring jLocation = (jstring)env->GetObjectField(jEvent, fidLocation);
324
355
  if (jLocation)
325
356
  {
@@ -328,7 +359,7 @@ VALUE event_cast<VALUE, jobject>(jobject jEvent)
328
359
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_LOCATION), rb_str_new2(s.c_str()));
329
360
  }
330
361
 
331
- RHO_TRACE("eventToRuby (9)");
362
+ RHO_TRACE("eventToRuby get notes");
332
363
  jstring jNotes = (jstring)env->GetObjectField(jEvent, fidNotes);
333
364
  if (jNotes)
334
365
  {
@@ -337,7 +368,7 @@ VALUE event_cast<VALUE, jobject>(jobject jEvent)
337
368
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_NOTES), rb_str_new2(s.c_str()));
338
369
  }
339
370
 
340
- RHO_TRACE("eventToRuby (10)");
371
+ RHO_TRACE("eventToRuby get privacy");
341
372
  jstring jPrivacy = (jstring)env->GetObjectField(jEvent, fidPrivacy);
342
373
  if (jPrivacy)
343
374
  {
@@ -346,22 +377,24 @@ VALUE event_cast<VALUE, jobject>(jobject jEvent)
346
377
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_PRIVACY), rb_str_new2(s.c_str()));
347
378
  }
348
379
 
349
- RHO_TRACE("eventToRuby (11)");
380
+ RHO_TRACE("eventToRuby frequency");
350
381
  jstring jFrequency = (jstring)env->GetObjectField(jEvent, fidFrequency);
351
- if (jFrequency)
382
+ if(jFrequency)
352
383
  {
384
+ RHO_TRACE("eventToRuby parse frequency");
385
+
353
386
  VALUE rRecurrence = rb_hash_new();
354
387
 
355
388
  jboolean isCopy;
356
389
  const char* str = env->GetStringUTFChars (jFrequency, &isCopy);
357
- if ( strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_DAILY) == 0
358
- || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_WEEKLY) == 0
359
- || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_MONTHLY) == 0
360
- || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_YEARLY) == 0)
390
+ if(strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_DAILY) == 0
391
+ || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_WEEKLY) == 0
392
+ || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_MONTHLY) == 0
393
+ || strcasecmp(str, RUBY_EV_RECURRENCE_FREQUENCY_YEARLY) == 0)
361
394
  {
362
- s = rho_cast<std::string>(env, jFrequency);
395
+ s = rho_cast<std::string>(env, jFrequency);
363
396
  } else {
364
- s = "undefined";
397
+ s = "undefined";
365
398
  // rb_raise(rb_eArgError, "Wrong recurrence frequency: %s", frequency);
366
399
  }
367
400
  if (isCopy == JNI_TRUE) {
@@ -373,6 +406,15 @@ VALUE event_cast<VALUE, jobject>(jobject jEvent)
373
406
  jint jInterval = (jint)env->GetIntField(jEvent, fidInterval);
374
407
  rb_hash_aset(rRecurrence, rb_str_new2(RUBY_EV_RECURRENCE_INTERVAL), INT2FIX((int)jInterval));
375
408
 
409
+ jhobject jhUntil = env->GetObjectField(jEvent, fidRecurrenceEnd);
410
+ if(jhUntil.get())
411
+ {
412
+ rb_hash_aset(rRecurrence, rb_str_new2(RUBY_EV_RECURRENCE_END), date_cast<VALUE>(jhUntil.get()));
413
+ }
414
+
415
+ jint jCount = env->GetIntField(jEvent, fidRecurrenceTimes);
416
+ rb_hash_aset(rRecurrence, rb_str_new2(RUBY_EV_RECURRENCE_COUNT), INT2FIX((int)jCount));
417
+
376
418
  rb_hash_aset(rEvent, rb_str_new2(RUBY_EV_RECURRENCE), rRecurrence);
377
419
  }
378
420
 
@@ -382,8 +424,10 @@ VALUE event_cast<VALUE, jobject>(jobject jEvent)
382
424
 
383
425
  RHO_GLOBAL VALUE event_fetch(VALUE rParams)
384
426
  {
427
+ RHO_TRACE("event_fetch");
428
+
385
429
  JNIEnv *env = jnienv();
386
- jclass cls = getJNIClass(RHODES_JAVA_CLASS_EVENT_STORE);
430
+ jclass& cls = getJNIClass(RHODES_JAVA_CLASS_EVENT_STORE);
387
431
  if (!cls) return Qnil;
388
432
  jmethodID mid = getJNIClassStaticMethod(env, cls, "fetch", "(Ljava/util/Date;Ljava/util/Date;Z)Ljava/lang/Object;");
389
433
  if (!mid) return Qnil;
@@ -392,17 +436,17 @@ RHO_GLOBAL VALUE event_fetch(VALUE rParams)
392
436
  VALUE end_date = rb_hash_aref(rParams, rb_str_new2(RUBY_EV_END_DATE));
393
437
  VALUE include_repeating = rb_hash_aref(rParams, rb_str_new2(RUBY_FETCH_include_repeating));
394
438
 
395
- RHO_TRACE("event_fetch (1)");
439
+ RHO_TRACE("event_fetch: start date");
396
440
  jobject jStartDate = date_cast<jobject>(start_date);
397
- RHO_TRACE("event_fetch (2)");
441
+ RHO_TRACE("event_fetch: end date");
398
442
  jobject jEndDate = date_cast<jobject>(end_date);
399
- RHO_TRACE("event_fetch (3)");
443
+ RHO_TRACE("event_fetch: EventStore.fetch()");
400
444
  jobject jRet = env->CallStaticObjectMethod(cls, mid, jStartDate, jEndDate, (jboolean)rho_ruby_get_bool(include_repeating));
401
- RHO_TRACE("event_fetch (4)");
445
+ RHO_TRACE("event_fetch: release java references");
402
446
  env->DeleteLocalRef(jStartDate);
403
447
  env->DeleteLocalRef(jEndDate);
404
448
 
405
- jclass clsString = getJNIClass(RHODES_JAVA_CLASS_STRING);
449
+ jclass& clsString = getJNIClass(RHODES_JAVA_CLASS_STRING);
406
450
  if (!clsString) return Qnil;
407
451
  if (env->IsInstanceOf(jRet, clsString))
408
452
  {
@@ -136,7 +136,7 @@ void* RhoNativeViewManager::getWebViewObject(int tab_index) {
136
136
  JNIEnv *env = jnienv();
137
137
  jclass cls = rho_find_class(env, "com/rhomobile/rhodes/nativeview/RhoNativeViewManager");
138
138
  if (!cls) return null;
139
- jmethodID mid = env->GetStaticMethodID( cls, "getWebViewObject", "(I)Landroid/webkit/WebView;");
139
+ jmethodID mid = env->GetStaticMethodID( cls, "getWebViewObject", "(I)Lcom/rhomobile/rhodes/webview/WebView;");
140
140
  if (!mid) return null;
141
141
  return env->CallStaticObjectMethod(cls, mid, tab_index);
142
142
  }
@@ -106,11 +106,41 @@ static VALUE createHashFromContact(jobject contactObj)
106
106
  return contactHash;
107
107
  }
108
108
 
109
- RHO_GLOBAL VALUE getPhonebookRecords(void* pb, int offset, int max_results, rho_param* select_param)
109
+ RHO_GLOBAL VALUE getPhonebookRecords(void* pb, rho_param* params)
110
110
  {
111
- if (logging_enable) RAWLOG_INFO2("getPhonebookRecords(%d, %d) START", offset, max_results);
111
+ RAWTRACE("getPhonebookRecords() START");
112
112
  jobject phonebookObj = (jobject)pb;
113
113
 
114
+ int offset = 0;
115
+ int max_results = -1;
116
+ rho_param* select_param = 0;
117
+ rho_param* conditions = 0;
118
+
119
+ if (params != 0 && params->type == RHO_PARAM_HASH) {
120
+ for (int i = 0, lim = params->v.hash->size; i < lim; ++i) {
121
+ std::string key = params->v.hash->name[i];
122
+ rho_param* value = params->v.hash->value[i];
123
+
124
+ if (key.compare("offset") == 0) {
125
+ RAWTRACE("'offset' parameter found");
126
+ if (value->type == RHO_PARAM_STRING) {
127
+ RAWTRACE1("'offset' parameter is string: %s", value->v.string);
128
+ sscanf(value->v.string, "%d", &offset);
129
+ }
130
+ } else if (key.compare("per_page") == 0) {
131
+ RAWTRACE("'per_page' parameter found");
132
+ if (value->type == RHO_PARAM_STRING) {
133
+ RAWTRACE1("'per_page' parameter is string: %s", value->v.string);
134
+ sscanf(value->v.string, "%d", &max_results);
135
+ }
136
+ } else if (key.compare("select") == 0) {
137
+ select_param = value;
138
+ } else if (key.compare("conditions") == 0) {
139
+ conditions = value;
140
+ }
141
+ }
142
+ }
143
+
114
144
  JNIEnv *env = jnienv();
115
145
 
116
146
  jclass phonebookCls = getJNIClass(RHODES_JAVA_CLASS_PHONEBOOK);
@@ -118,7 +148,7 @@ RHO_GLOBAL VALUE getPhonebookRecords(void* pb, int offset, int max_results, rho_
118
148
  jclass contactCls = getJNIClass(RHODES_JAVA_CLASS_CONTACT);
119
149
  if (!contactCls) return Qnil;
120
150
 
121
- jmethodID queryMID = getJNIClassMethod(env, phonebookCls, "queryContacts", "(IILjava/util/List;)V");
151
+ jmethodID queryMID = getJNIClassMethod(env, phonebookCls, "queryContacts", "(IILjava/util/List;Ljava/util/Map;)V");
122
152
  if (!queryMID) return Qnil;
123
153
 
124
154
  jmethodID phonebookMoveToBeginMID = getJNIClassMethod(env, phonebookCls, "moveToBegin", "()V");
@@ -138,8 +168,14 @@ RHO_GLOBAL VALUE getPhonebookRecords(void* pb, int offset, int max_results, rho_
138
168
  RAWLOG_INFO("Converting 'select_param'.");
139
169
  selectObj = RhoValueConverter(env).createObject(select_param);
140
170
  }
141
- env->CallVoidMethod(phonebookObj, queryMID, offset, max_results, selectObj);
171
+ jobject conditionsObj = NULL;
172
+ if (conditions) {
173
+ RAWLOG_INFO("Converting 'conditions'.");
174
+ conditionsObj = RhoValueConverter(env).createObject(conditions);
175
+ }
176
+ env->CallVoidMethod(phonebookObj, queryMID, offset, max_results, selectObj, conditionsObj);
142
177
  env->DeleteLocalRef(selectObj);
178
+ env->DeleteLocalRef(conditionsObj);
143
179
  env->CallVoidMethod(phonebookObj, phonebookMoveToBeginMID);
144
180
 
145
181
  VALUE valGc = rho_ruby_disable_gc();
@@ -165,20 +201,48 @@ RHO_GLOBAL VALUE getPhonebookRecords(void* pb, int offset, int max_results, rho_
165
201
  return hash;
166
202
  }
167
203
 
168
- RHO_GLOBAL int getPhonebookRecordCount(void* pb, int offset, int max_results)
204
+ RHO_GLOBAL int getPhonebookRecordCount(void* pb, rho_param* params)
169
205
  {
170
- if (logging_enable) RAWLOG_INFO2("getPhonebookRecordCount(%d, %d) START", offset, max_results);
206
+ RAWTRACE("getPhonebookRecordCount() START");
171
207
  jobject phonebookObj = static_cast<jobject>(pb);
172
208
 
209
+ int offset = 0;
210
+ int max_results = -1;
211
+ rho_param* conditions = 0;
212
+
213
+ if (params != 0 && params->type == RHO_PARAM_HASH) {
214
+ for (int i = 0, lim = params->v.hash->size; i < lim; ++i) {
215
+ std::string key = params->v.hash->name[i];
216
+ rho_param* value = params->v.hash->value[i];
217
+
218
+ if (key.compare("offset") == 0) {
219
+ if (value->type == RHO_PARAM_STRING) {
220
+ sscanf(value->v.string, "%d", &offset);
221
+ }
222
+ } else if (key.compare("per_page") == 0) {
223
+ if (value->type == RHO_PARAM_STRING) {
224
+ sscanf(value->v.string, "%d", &max_results);
225
+ }
226
+ } else if (key.compare("conditions") == 0) {
227
+ conditions = value;
228
+ }
229
+ }
230
+ }
173
231
  JNIEnv *env = jnienv();
174
232
 
175
233
  jclass phonebookCls = getJNIClass(RHODES_JAVA_CLASS_PHONEBOOK);
176
234
  if (!phonebookCls) return 0;
177
235
 
178
- jmethodID queryMID = getJNIClassMethod(env, phonebookCls, "queryContactCount", "(II)I");
236
+ jmethodID queryMID = getJNIClassMethod(env, phonebookCls, "queryContactCount", "(IILjava/util/Map;)I");
179
237
  if (!queryMID) return 0;
180
238
 
181
- int contactCount = env->CallIntMethod(phonebookObj, queryMID, offset, max_results);
239
+ jobject conditionsObj = NULL;
240
+ if (conditions) {
241
+ RAWLOG_INFO("Converting 'conditions'.");
242
+ conditionsObj = RhoValueConverter(env).createObject(conditions);
243
+ }
244
+ int contactCount = env->CallIntMethod(phonebookObj, queryMID, offset, max_results, conditionsObj);
245
+ env->DeleteLocalRef(conditionsObj);
182
246
 
183
247
  if (logging_enable) RAWLOG_INFO("getPhonebookRecordCount() FINISH");
184
248
  return contactCount;
@@ -187,7 +251,7 @@ RHO_GLOBAL int getPhonebookRecordCount(void* pb, int offset, int max_results)
187
251
  RHO_GLOBAL VALUE getallPhonebookRecords(void* pb)
188
252
  {
189
253
  if (logging_enable) RAWLOG_INFO("getallPhonebookRecords() START");
190
- VALUE res = getPhonebookRecords(pb, 0, -1, 0);
254
+ VALUE res = getPhonebookRecords(pb, 0);
191
255
  if (logging_enable) RAWLOG_INFO("getallPhonebookRecords() FINISH");
192
256
  return res;
193
257
  }