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
@@ -62,7 +62,11 @@ public class ContactAccessorOld implements ContactAccessor {
62
62
  public ContactAccessorOld() {
63
63
  cr = RhodesService.getInstance().getContentResolver();
64
64
  }
65
-
65
+
66
+ private static String getConditionString(Map<String,Object> conditionsMap) {
67
+ return null;
68
+ }
69
+
66
70
  private void fillPhones(String id, Contact contact) {
67
71
  Cursor cursor = cr.query(Contacts.Phones.CONTENT_URI,
68
72
  new String[] {Phones.NUMBER, Phones.TYPE},
@@ -94,7 +98,7 @@ public class ContactAccessorOld implements ContactAccessor {
94
98
  }
95
99
 
96
100
  @Override
97
- public int getCount(int offset, int max_results) {
101
+ public int getCount(int offset, int max_results, Map<String, Object> conditions) {
98
102
  StringBuilder sortMode = new StringBuilder();
99
103
  if (max_results > 0 || offset > 0) {
100
104
  sortMode.append(People._ID).append(" ASC");
@@ -114,7 +118,7 @@ public class ContactAccessorOld implements ContactAccessor {
114
118
  }
115
119
 
116
120
  @Override
117
- public Map<String, Contact> getContacts(int offset, int max_results, List<String> select) throws Exception {
121
+ public Map<String, Contact> getContacts(int offset, int max_results, List<String> select, Map<String, Object> conditions) throws Exception {
118
122
  Map<String, Contact> contacts = new HashMap<String, Contact>();
119
123
 
120
124
  Cursor cursor = cr.query(People.CONTENT_URI, null, null, null, null);
@@ -136,10 +140,11 @@ public class ContactAccessorOld implements ContactAccessor {
136
140
 
137
141
  //contact.setField(PB_COMPANY_NAME, cursor.getString(cursor.getColumnIndex(People.COMPANY)));
138
142
 
139
- contact.setField(Phonebook.PB_FIRST_NAME, "");
140
- contact.setField(Phonebook.PB_LAST_NAME, "");
143
+ //contact.setField(Phonebook.PB_FIRST_NAME, "");
144
+ //contact.setField(Phonebook.PB_LAST_NAME, "");
141
145
  String name = cursor.getString(cursor.getColumnIndex(People.NAME));
142
146
  if (name != null) {
147
+ contact.setField(Phonebook.PB_DISPLAY_NAME, name);
143
148
  String[] names = name.split(" ");
144
149
 
145
150
  if (names.length == 1) {
@@ -220,7 +225,7 @@ public class ContactAccessorOld implements ContactAccessor {
220
225
 
221
226
  @Override
222
227
  public Contact getContact(String id) throws Exception {
223
- Map<String, Contact> allContacts = getContacts(0, -1, null);
228
+ Map<String, Contact> allContacts = getContacts(0, -1, null, null);
224
229
  /*TODO: implement old API getContact by id. */
225
230
  return allContacts.get(id);
226
231
  }
@@ -96,11 +96,11 @@ public class Phonebook {
96
96
  }
97
97
  }
98
98
 
99
- public int queryContactCount(int offset, int limit) {
99
+ public int queryContactCount(int offset, int limit, Map<String,Object> conditions) {
100
100
  int res = 0;
101
101
  if (checkState()) {
102
102
  try {
103
- res = accessor.getCount(offset, limit);
103
+ res = accessor.getCount(offset, limit, conditions);
104
104
  } catch (Exception e) {
105
105
  Logger.E(TAG, e);
106
106
  }
@@ -119,15 +119,15 @@ public class Phonebook {
119
119
  PB_BUSINESS_NUMBER,
120
120
  PB_EMAIL_ADDRESS,
121
121
  PB_COMPANY_NAME };
122
- queryContacts(0, -1, Arrays.asList(allColumns));
122
+ queryContacts(0, -1, Arrays.asList(allColumns), null);
123
123
  }
124
124
 
125
- public void queryContacts(int offset, int max_results, List<String> select) {
125
+ public void queryContacts(int offset, int max_results, List<String> select, Map<String,Object> conditions) {
126
126
  if (!checkState())
127
127
  return;
128
128
  try {
129
129
  Logger.I(TAG, "queryContacts()");
130
- contactList = accessor.getContacts(offset, max_results, select);
130
+ contactList = accessor.getContacts(offset, max_results, select, conditions);
131
131
  }
132
132
  catch (Exception e) {
133
133
  Logger.E(TAG, e);
@@ -28,6 +28,7 @@ package com.rhomobile.rhodes.webview;
28
28
 
29
29
  import com.rhomobile.rhodes.RhodesActivity;
30
30
 
31
+ import android.app.Activity;
31
32
  import android.view.Window;
32
33
  import android.webkit.JsResult;
33
34
  import android.webkit.WebChromeClient;
@@ -35,7 +36,7 @@ import android.webkit.WebView;
35
36
 
36
37
  public class ChromeClientOld extends WebChromeClient {
37
38
 
38
- private RhodesActivity mRhodesActivity;
39
+ private Activity mRhodesActivity;
39
40
 
40
41
  public ChromeClientOld(RhodesActivity rhodesActivity) {
41
42
  mRhodesActivity = rhodesActivity;
@@ -0,0 +1,125 @@
1
+ package com.rhomobile.rhodes.webview;
2
+
3
+ import java.lang.reflect.Constructor;
4
+
5
+ import com.rhomobile.rhodes.RhodesActivity;
6
+
7
+ import android.app.Activity;
8
+ import android.content.Context;
9
+ import android.os.Build;
10
+ import android.view.View;
11
+ import android.webkit.WebChromeClient;
12
+ import android.webkit.WebViewClient;
13
+
14
+ public class GoogleWebView implements WebView {
15
+
16
+ private static WebChromeClient mChromeClient;
17
+ private static WebViewClient mWebViewClient;
18
+ private static RhoWebSettings mWebSettings;
19
+ private static Boolean mInitialized = false;
20
+
21
+ private android.webkit.WebView mWebView;
22
+
23
+ public GoogleWebView(Activity activity) {
24
+ synchronized(mInitialized) {
25
+ if (!mInitialized) {
26
+ initWebStuff(activity);
27
+ }
28
+ }
29
+ mWebView = new android.webkit.WebView(activity);
30
+ mWebSettings.setWebSettings(mWebView);
31
+ mWebView.setWebChromeClient(mChromeClient);
32
+ mWebView.setWebViewClient(mWebViewClient);
33
+ mWebView.clearCache(true);
34
+ }
35
+
36
+ private static void initWebStuff(Activity activity) {
37
+ String ccName;
38
+ String wsName;
39
+ int sdkVersion = Integer.parseInt(Build.VERSION.SDK);
40
+ if (sdkVersion < Build.VERSION_CODES.ECLAIR_MR1) {
41
+ ccName = "ChromeClientOld";
42
+ wsName = "RhoWebSettingsOld";
43
+ }
44
+ else {
45
+ ccName = "ChromeClientNew";
46
+ wsName = "RhoWebSettingsNew";
47
+ }
48
+
49
+ try {
50
+ String pkgname = ChromeClientOld.class.getPackage().getName();
51
+ String fullName = pkgname + "." + ccName;
52
+ Class<? extends WebChromeClient> ccClass =
53
+ Class.forName(fullName).asSubclass(WebChromeClient.class);
54
+
55
+ Constructor<? extends WebChromeClient> ctor = ccClass.getConstructor(RhodesActivity.class);
56
+ mChromeClient = ctor.newInstance(activity);
57
+
58
+ pkgname = RhoWebSettings.class.getPackage().getName();
59
+ fullName = pkgname + "." + wsName;
60
+ Class<? extends RhoWebSettings> wsClass =
61
+ Class.forName(fullName).asSubclass(RhoWebSettings.class);
62
+ mWebSettings = wsClass.newInstance();
63
+
64
+ mWebViewClient = new RhoWebViewClient();
65
+
66
+ mInitialized = true;
67
+ }
68
+ catch (Exception e) {
69
+ throw new IllegalStateException(e);
70
+ }
71
+ }
72
+
73
+ @Override
74
+ public View getView() {
75
+ return mWebView;
76
+ }
77
+
78
+ @Override
79
+ public boolean canGoBack() {
80
+ return mWebView.canGoBack();
81
+ }
82
+
83
+ @Override
84
+ public void goBack() {
85
+ mWebView.goBack();
86
+ }
87
+
88
+ @Override
89
+ public void goForward() {
90
+ mWebView.goForward();
91
+ }
92
+
93
+ @Override
94
+ public void reload() {
95
+ mWebView.reload();
96
+ }
97
+
98
+ @Override
99
+ public void clear() {
100
+ mWebView.clearView();
101
+ mWebView.clearCache(true);
102
+ mWebView.invalidate();
103
+ mWebView.loadData("", "", "");
104
+ }
105
+
106
+ @Override
107
+ public String getUrl() {
108
+ return mWebView.getUrl();
109
+ }
110
+
111
+ @Override
112
+ public void loadUrl(String url) {
113
+ mWebView.loadUrl(url);
114
+ }
115
+
116
+ @Override
117
+ public void loadData(String data, String mime, String encoding) {
118
+ mWebView.loadData(data, mime, encoding);
119
+ }
120
+
121
+ @Override
122
+ public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) {
123
+ mWebView.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl);
124
+ }
125
+ }
@@ -37,11 +37,10 @@ public class RhoWebSettingsOld implements RhoWebSettings {
37
37
  webSettings.setSaveFormData(false);
38
38
  webSettings.setJavaScriptEnabled(true);
39
39
  webSettings.setJavaScriptCanOpenWindowsAutomatically(false);
40
- webSettings.setSupportZoom(false);
41
- //webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
40
+ webSettings.setSupportZoom(true);
41
+ webSettings.setBuiltInZoomControls(true);
42
42
  webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
43
43
  webSettings.setSupportMultipleWindows(false);
44
- // webSettings.setLoadsImagesAutomatically(true);
45
44
 
46
45
  w.setVerticalScrollBarEnabled(true);
47
46
  w.setHorizontalScrollBarEnabled(true);
@@ -0,0 +1,16 @@
1
+ package com.rhomobile.rhodes.webview;
2
+
3
+ import android.view.View;
4
+
5
+ public interface WebView {
6
+ View getView();
7
+ boolean canGoBack();
8
+ void goBack();
9
+ void goForward();
10
+ void reload();
11
+ void clear();
12
+ String getUrl();
13
+ void loadUrl(String url);
14
+ void loadData(String data, String mime, String encoding);
15
+ void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl);
16
+ }
@@ -95,3 +95,17 @@ platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettings.java
95
95
  platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsNew.java
96
96
  platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsOld.java
97
97
  platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebViewClient.java
98
+ platform/android/Rhodes/src/com/rhomobile/rhodes/webview/WebView.java
99
+ platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java
100
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java
101
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java
102
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality02.java
103
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality03.java
104
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality04.java
105
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality05.java
106
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality06.java
107
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality07.java
108
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java
109
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality09.java
110
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality10.java
111
+ platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java
@@ -80,7 +80,8 @@ ANDROID_PERMISSIONS = {
80
80
  'bluetooth' => ['BLUETOOTH_ADMIN', 'BLUETOOTH'],
81
81
  'calendar' => ['READ_CALENDAR', 'WRITE_CALENDAR'],
82
82
  'sdcard' => 'WRITE_EXTERNAL_STORAGE',
83
- 'push' => proc do |manifest| add_push(manifest) end
83
+ 'push' => proc do |manifest| add_push(manifest) end,
84
+ 'webkit_browser' => nil
84
85
  }
85
86
 
86
87
  ANDROID_CAPS_ALWAYS_ENABLED = ['network_state']
@@ -345,6 +346,43 @@ namespace "config" do
345
346
 
346
347
  Rake::Task["config:common"].invoke
347
348
 
349
+ $java = $config["env"]["paths"]["java"]
350
+
351
+ $androidsdkpath = $config["env"]["paths"]["android"]
352
+ unless File.exists? $androidsdkpath
353
+ puts "Missing or invalid 'android' section in rhobuild.yml: '#{$androidsdkpath}'"
354
+ exit 1
355
+ end
356
+
357
+ $androidndkpath = $config["env"]["paths"]["android-ndk"]
358
+ unless File.exists? $androidndkpath
359
+ puts "Missing or invalid 'android-ndk' section in rhobuild.yml: '#{$androidndkpath}'"
360
+ exit 1
361
+ end
362
+
363
+ errfmt = "WARNING!!! Path to Android %s contain spaces! It will not work because of the Google toolchain restrictions. Move it to another location and reconfigure rhodes."
364
+ if $androidndkpath =~ /\s/
365
+ puts(errfmt % "NDK")
366
+ exit 1
367
+ end
368
+
369
+ $min_sdk_level = $app_config["android"]["minSDK"] unless $app_config["android"].nil?
370
+ $min_sdk_level = $config["android"]["minSDK"] if $min_sdk_level.nil? and not $config["android"].nil?
371
+ $min_sdk_level = $min_sdk_level.to_i unless $min_sdk_level.nil?
372
+ $min_sdk_level = ANDROID_SDK_LEVEL if $min_sdk_level.nil?
373
+
374
+ $max_sdk_level = $app_config["android"]["maxSDK"] unless $app_config["android"].nil?
375
+
376
+ $androidplatform = AndroidTools.fill_api_levels $androidsdkpath
377
+ if $androidplatform == nil
378
+ puts "No Android platform found at SDK path: '#{$androidsdkpath}'"
379
+ exit 1
380
+ end
381
+
382
+ android_api_levels = AndroidTools.get_installed_api_levels
383
+ android_api_levels.sort!
384
+ $found_api_level = android_api_levels.last
385
+
348
386
  $ext_android_rhodes_activity_listener = []
349
387
  $ext_android_manifest_changes= []
350
388
  $ext_android_resources_addons = []
@@ -369,20 +407,13 @@ namespace "config" do
369
407
 
370
408
  puts "Use Google addon API: #{$use_google_addon_api}" if USE_TRACES
371
409
 
372
- $emuversion = $app_config["android"]["version"] unless $app_config["android"].nil?
373
- $emuversion = $config["android"]["version"] if $emuversion.nil? and !$config["android"].nil?
374
-
375
410
  $uri_scheme = $app_config["android"]["URIScheme"] unless $app_config["android"].nil?
376
411
  $uri_scheme = "http" if $uri_scheme.nil?
377
412
 
378
413
  $uri_host = $app_config["android"]["URIHost"] unless $app_config["android"].nil?
379
414
 
380
- $min_sdk_level = $app_config["android"]["minSDK"] unless $app_config["android"].nil?
381
- $min_sdk_level = $config["android"]["minSDK"] if $min_sdk_level.nil? and not $config["android"].nil?
382
- $min_sdk_level = $min_sdk_level.to_i unless $min_sdk_level.nil?
383
- $min_sdk_level = ANDROID_SDK_LEVEL if $min_sdk_level.nil?
384
-
385
- $max_sdk_level = $app_config["android"]["maxSDK"] unless $app_config["android"].nil?
415
+ $emuversion = $app_config["android"]["version"] unless $app_config["android"].nil?
416
+ $emuversion = $config["android"]["version"] if $emuversion.nil? and !$config["android"].nil?
386
417
 
387
418
  # Here is switch between release/debug configuration used for
388
419
  # building native libraries
@@ -392,29 +423,6 @@ namespace "config" do
392
423
  $build_release = !$app_config["debug"].to_i
393
424
  end
394
425
 
395
- $androidsdkpath = $config["env"]["paths"]["android"]
396
- unless File.exists? $androidsdkpath
397
- puts "Missing or invalid 'android' section in rhobuild.yml: '#{$androidsdkpath}'"
398
- exit 1
399
- end
400
-
401
- $androidndkpath = $config["env"]["paths"]["android-ndk"]
402
- unless File.exists? $androidndkpath
403
- puts "Missing or invalid 'android-ndk' section in rhobuild.yml: '#{$androidndkpath}'"
404
- exit 1
405
- end
406
-
407
- errfmt = "WARNING!!! Path to Android %s contain spaces! It will not work because of the Google toolchain restrictions. Move it to another location and reconfigure rhodes."
408
- #if $androidsdkpath =~ /\s/
409
- # puts(errfmt % "SDK")
410
- # exit 1
411
- #end
412
- if $androidndkpath =~ /\s/
413
- puts(errfmt % "NDK")
414
- exit 1
415
- end
416
-
417
- $java = $config["env"]["paths"]["java"]
418
426
  $androidpath = Jake.get_absolute $config["build"]["androidpath"]
419
427
  $bindir = File.join($app_path, "bin")
420
428
  $rhobindir = File.join($androidpath, "bin")
@@ -478,40 +486,20 @@ namespace "config" do
478
486
  end
479
487
 
480
488
  puts "+++ Looking for platform..." if USE_TRACES
481
- napilevel = $min_sdk_level
489
+ # napilevel = $min_sdk_level
482
490
 
483
- android_api_levels = Array.new
484
-
485
- Dir.glob(File.join($androidsdkpath, "platforms", "*")).each do |platform|
486
- props = File.join(platform, "source.properties")
487
- unless File.file? props
488
- puts "+++ WARNING! No source.properties found in #{platform}"
489
- next
490
- end
491
-
492
- apilevel = -1
493
- marketversion = nil
494
- File.open(props, "r") do |f|
495
- while line = f.gets
496
- apilevel = $1.to_i if line =~ /^\s*AndroidVersion\.ApiLevel\s*=\s*([0-9]+)\s*$/
497
- marketversion = $1 if line =~ /^\s*Platform\.Version\s*=\s*([^\s]*)\s*$/
491
+ $emuversion = AndroidTools.get_market_version($min_sdk_level) if $emuversion.nil?
492
+ if $emuversion.nil?
493
+ android_api_levels.each do |v|
494
+ puts "Check api level for emulator '#{v}'"
495
+ if v >= $min_sdk_level
496
+ $emuversion = AndroidTools.get_market_version(v)
497
+ puts "emulator version will used: '#{$emuversion}'"
498
+ break
498
499
  end
499
500
  end
500
-
501
- puts "+++ API LEVEL of #{platform}: #{apilevel}" if USE_TRACES
502
- android_api_levels.push apilevel
503
-
504
- if apilevel >= napilevel
505
- napilevel = apilevel
506
- $androidplatform = File.basename(platform)
507
- $found_api_level = apilevel
508
- end
509
501
  end
510
-
511
- android_api_levels.sort!
512
-
513
- $emuversion = get_market_version($min_sdk_level) if $emuversion.nil?
514
- requested_api_level = get_api_level($emuversion)
502
+ requested_api_level = AndroidTools.get_api_level($emuversion)
515
503
 
516
504
  if USE_TRACES
517
505
  puts "Found API levels:"
@@ -592,12 +580,6 @@ namespace "config" do
592
580
  $storealias = $config["android"]["production"]["alias"] if $storealias.nil? and !$config["android"].nil? and !$config["android"]["production"].nil?
593
581
  $storealias = "rhomobile.keystore" if $storealias.nil?
594
582
 
595
- # $app_config["capabilities"] = [] if $app_config["capabilities"].nil?
596
- # $app_config["capabilities"] = [] unless $app_config["capabilities"].is_a? Array
597
- # if $app_config["android"] and $app_config["android"]["capabilities"]
598
- # $app_config["capabilities"] += $app_config["android"]["capabilities"]
599
- # $app_config["android"]["capabilities"] = nil
600
- # end
601
583
  $app_config["capabilities"] += ANDROID_CAPS_ALWAYS_ENABLED
602
584
  $app_config["capabilities"].map! { |cap| cap.is_a?(String) ? cap : nil }.delete_if { |cap| cap.nil? }
603
585
  $use_google_addon_api = true unless $app_config["capabilities"].index("push").nil?
@@ -676,6 +658,11 @@ namespace "config" do
676
658
  end
677
659
  end
678
660
 
661
+ if $min_sdk_level > $found_api_level
662
+ puts "Latest installed Android platform '#{$androidplatform}' does not meet minSdk '#{$min_sdk_level}' requirement"
663
+ exit 1
664
+ end
665
+
679
666
  $emuversion = $emuversion.to_s
680
667
  $avdname = "rhoAndroid" + $emuversion.gsub(/[^0-9]/, "")
681
668
  $avdname += "ext" if $use_google_addon_api
@@ -708,13 +695,6 @@ namespace "config" do
708
695
 
709
696
  $extensionsdir = $bindir + "/libs/" + $confdir + "/" + $ndkabi + "/" + $ndkgccver + "/extensions"
710
697
 
711
- #$app_config["extensions"] = [] if $app_config["extensions"].nil?
712
- #$app_config["extensions"] = [] unless $app_config["extensions"].is_a? Array
713
- #if $app_config["android"] and $app_config["android"]["extensions"]
714
- # $app_config["extensions"] += $app_config["android"]["extensions"]
715
- # $app_config["android"]["extensions"] = nil
716
- #end
717
-
718
698
  $push_sender = nil
719
699
  $push_sender = $config["android"]["push"]["sender"] if !$config["android"].nil? and !$config["android"]["push"].nil?
720
700
  $push_sender = $app_config["android"]["push"]["sender"] if !$app_config["android"].nil? and !$app_config["android"]["push"].nil?
@@ -723,9 +703,7 @@ namespace "config" do
723
703
  $push_notifications = nil
724
704
  $push_notifications = $app_config["android"]["push"]["notifications"] if !$app_config["android"].nil? and !$app_config["android"]["push"].nil?
725
705
  $push_notifications = "none" if $push_notifications.nil?
726
- $push_notifications = $push_notifications
727
-
728
-
706
+ $push_notifications = $push_notifications
729
707
 
730
708
  mkdir_p $bindir if not File.exists? $bindir
731
709
  mkdir_p $rhobindir if not File.exists? $rhobindir
@@ -774,25 +752,7 @@ namespace "build" do
774
752
 
775
753
  File.open(File.join(assets, "name"), "w") { |f| f.write($appname) }
776
754
 
777
- psize = assets.size + 1
778
-
779
- File.open(File.join(assets, 'rho.dat'), 'w') do |dat|
780
- Dir.glob(File.join(assets, '**/*')).sort.each do |f|
781
- relpath = f[psize..-1]
782
-
783
- if File.directory?(f)
784
- type = 'dir'
785
- elsif File.file?(f)
786
- type = 'file'
787
- else
788
- next
789
- end
790
- size = File.stat(f).size
791
- tm = File.stat(f).mtime.to_i
792
-
793
- dat.puts "#{relpath}\t#{type}\t#{size.to_s}\t#{tm.to_s}"
794
- end
795
- end
755
+ Jake.build_file_map(assets, "rho.dat")
796
756
  end
797
757
 
798
758
  task :extensions => :genconfig do
@@ -814,59 +774,69 @@ namespace "build" do
814
774
  mkdir_p $extensionsdir unless File.directory? $extensionsdir
815
775
 
816
776
  $app_config["extensions"].each do |ext|
777
+ puts "#{ext} is processing..."
817
778
  $app_config["extpaths"].each do |p|
818
779
  extpath = File.join(p, ext, 'ext')
819
780
 
820
- extyml = File.join(p, ext,"ext.yml")
821
- if File.file? extyml
822
- extconf = Jake.config(File.open(extyml))
781
+ puts "Checking extpath: #{extpath}"
823
782
 
824
- android_listener = extconf["android_rhodes_activity_listener"]
825
- $ext_android_rhodes_activity_listener << android_listener unless android_listener.nil?
783
+ if File.exists? extpath and File.directory? extpath
784
+ puts "#{extpath} is building..."
785
+ extyml = File.join(p, ext,"ext.yml")
786
+ if File.file? extyml
787
+ puts "#{extyml} is processing..."
788
+ extconf = Jake.config(File.open(extyml))
826
789
 
827
- android_manifest_changes = extconf["android_manifest_changes"]
828
- if android_manifest_changes != nil
829
- android_manifest_changes = File.join(p, ext, android_manifest_changes)
830
- $ext_android_manifest_changes << android_manifest_changes
831
- end
790
+ android_listener = extconf["android_rhodes_activity_listener"]
791
+ $ext_android_rhodes_activity_listener << android_listener unless android_listener.nil?
832
792
 
833
- android_resources_addons = extconf["android_resources_addons"]
834
- if android_resources_addons != nil
835
- android_resources_addons = File.join(p, ext, android_resources_addons)
836
- $ext_android_resources_addons << android_resources_addons
837
- end
793
+ android_manifest_changes = extconf["android_manifest_changes"]
794
+ if android_manifest_changes != nil
795
+ android_manifest_changes = File.join(p, ext, android_manifest_changes)
796
+ $ext_android_manifest_changes << android_manifest_changes
797
+ end
838
798
 
839
- android_additional_sources_list = extconf["android_additional_sources_list"]
840
- if android_additional_sources_list != nil
841
- android_additional_sources_list = File.join(p, ext, android_additional_sources_list)
799
+ android_resources_addons = extconf["android_resources_addons"]
800
+ if android_resources_addons != nil
801
+ android_resources_addons = File.join(p, ext, android_resources_addons)
802
+ $ext_android_resources_addons << android_resources_addons
803
+ end
842
804
 
843
- File.open(android_additional_sources_list, "r") do |f|
844
- while line = f.gets
845
- $ext_android_additional_sources_list << File.join(p, ext, line)
846
- end
847
- end
805
+ android_additional_sources_list = extconf["android_additional_sources_list"]
806
+ if android_additional_sources_list != nil
807
+ android_additional_sources_list = File.join(p, ext, android_additional_sources_list)
848
808
 
809
+ File.open(android_additional_sources_list, "r") do |f|
810
+ while line = f.gets
811
+ $ext_android_additional_sources_list << File.join(p, ext, line)
812
+ end
813
+ end
814
+ end
815
+ puts "#{extyml} is processed"
849
816
  end
850
- end
851
817
 
852
- if RUBY_PLATFORM =~ /(win|w)32$/
853
- next unless File.exists? File.join(extpath, 'build.bat')
854
- else
855
- next unless File.executable? File.join(extpath, 'build')
856
- end
818
+ if RUBY_PLATFORM =~ /(win|w)32$/
819
+ next unless File.exists? File.join(extpath, 'build.bat')
820
+ else
821
+ next unless File.executable? File.join(extpath, 'build')
822
+ end
857
823
 
858
- ENV['TEMP_FILES_DIR'] = File.join(ENV["TARGET_TEMP_DIR"], ext)
824
+ ENV['TEMP_FILES_DIR'] = File.join(ENV["TARGET_TEMP_DIR"], ext)
859
825
 
860
- if RUBY_PLATFORM =~ /(win|w)32$/
861
- puts Jake.run('build.bat', [], extpath)
862
- else
863
- puts Jake.run('./build', [], extpath)
864
- end
865
- exit 1 unless $?.success?
866
- end
867
- end
826
+ if RUBY_PLATFORM =~ /(win|w)32$/
827
+ Jake.run('build.bat', [], extpath)
828
+ else
829
+ Jake.run('./build', [], extpath)
830
+ end
831
+ exit 1 unless $?.success?
868
832
 
869
- end
833
+ puts "#{extpath} is built"
834
+ # to prevent to build 2 extensions with same name
835
+ break
836
+ end # exists?
837
+ end # $app_config["extpaths"].each
838
+ end # $app_config["extensions"].each
839
+ end #task :extensions
870
840
 
871
841
  task :libsqlite => "config:android" do
872
842
  srcdir = File.join($shareddir, "sqlite")
@@ -1079,6 +1049,8 @@ namespace "build" do
1079
1049
  regenerate = true if caps_already_enabled[k].nil? or caps_enabled[k] != caps_already_enabled[k]
1080
1050
  end
1081
1051
 
1052
+ puts caps_enabled.inspect
1053
+
1082
1054
  if regenerate
1083
1055
  puts "Need to regenerate genconfig.h"
1084
1056
  $stdout.flush
@@ -1128,7 +1100,9 @@ namespace "build" do
1128
1100
  f.puts "package #{JAVA_PACKAGE_NAME};"
1129
1101
  f.puts "public class Capabilities {"
1130
1102
  ANDROID_PERMISSIONS.keys.sort.each do |k|
1131
- f.puts " public static boolean #{k.upcase}_ENABLED = true;"
1103
+ val = 'false'
1104
+ val = 'true' if caps_enabled[k]
1105
+ f.puts " public static final boolean #{k.upcase}_ENABLED = #{val};"
1132
1106
  end
1133
1107
  f.puts "}"
1134
1108
  end
@@ -1752,30 +1726,30 @@ namespace "run" do
1752
1726
  end
1753
1727
 
1754
1728
  puts "start read log"
1755
-
1729
+
1730
+ io = File.new(log_name, 'r:UTF-8')
1756
1731
  end_spec = false
1757
1732
  while !end_spec do
1758
- io = File.new(log_name, "r")
1759
1733
 
1760
1734
  io.each do |line|
1761
1735
  #puts line
1762
1736
 
1763
- end_spec = !Jake.process_spec_output(line)
1737
+ end_spec = !Jake.process_spec_output(line) if line.valid_encoding?
1764
1738
  break if end_spec
1765
1739
  end
1766
- io.close
1767
1740
 
1768
1741
  break unless AndroidTools.application_running($device_flag, $app_package_name)
1769
1742
  sleep(5) unless end_spec
1770
1743
  end
1744
+ io.close
1771
1745
 
1772
1746
  Jake.process_spec_results(start)
1773
1747
 
1774
1748
  # stop app
1775
- do_uninstall($device_flag)
1776
1749
  if $device_flag == '-e'
1777
1750
  AndroidTools.kill_adb_and_emulator
1778
1751
  else
1752
+ do_uninstall($device_flag)
1779
1753
  AndroidTools.kill_adb
1780
1754
  end
1781
1755
 
@@ -1790,13 +1764,19 @@ namespace "run" do
1790
1764
  task :device do
1791
1765
  $device_flag = "-d"
1792
1766
  Jake.run_spec_app('android','phone_spec')
1793
- exit $failed.to_i unless $dont_exit_on_failure
1767
+ unless $dont_exit_on_failure
1768
+ exit 1 if $total.to_i==0
1769
+ exit $failed.to_i
1770
+ end
1794
1771
  end
1795
1772
 
1796
1773
  task :emulator do
1797
1774
  $device_flag = "-e"
1798
1775
  Jake.run_spec_app('android','phone_spec')
1799
- exit $failed.to_i unless $dont_exit_on_failure
1776
+ unless $dont_exit_on_failure
1777
+ exit 1 if $total.to_i==0
1778
+ exit $failed.to_i
1779
+ end
1800
1780
  end
1801
1781
  end
1802
1782
 
@@ -1804,13 +1784,19 @@ namespace "run" do
1804
1784
  task :device do
1805
1785
  $device_flag = "-d"
1806
1786
  Jake.run_spec_app('android','framework_spec')
1807
- exit $failed.to_i unless $dont_exit_on_failure
1787
+ unless $dont_exit_on_failure
1788
+ exit 1 if $total.to_i==0
1789
+ exit $failed.to_i
1790
+ end
1808
1791
  end
1809
1792
 
1810
1793
  task :emulator do
1811
1794
  $device_flag = "-e"
1812
1795
  Jake.run_spec_app('android','framework_spec')
1813
- exit $failed.to_i unless $dont_exit_on_failure
1796
+ unless $dont_exit_on_failure
1797
+ exit 1 if $total.to_i==0
1798
+ exit $failed.to_i
1799
+ end
1814
1800
  end
1815
1801
  end
1816
1802
 
@@ -1831,6 +1817,7 @@ namespace "run" do
1831
1817
  puts "Agg Total: #{$total}"
1832
1818
  puts "Agg Passed: #{$passed}"
1833
1819
  puts "Agg Failed: #{$failed}"
1820
+ exit 1 if $total.to_i==0
1834
1821
  exit $failed.to_i
1835
1822
  end
1836
1823
 
@@ -1850,6 +1837,17 @@ namespace "run" do
1850
1837
  Rake::Task["run:rhosimulator"].invoke
1851
1838
  end
1852
1839
 
1840
+ task :rhosimulator_debug => ["config:set_android_platform","config:common"] do
1841
+
1842
+ $emuversion = $app_config["android"]["version"] unless $app_config["android"].nil?
1843
+ $emuversion = $config["android"]["version"] if $emuversion.nil? and !$config["android"].nil?
1844
+
1845
+ $rhosim_config = "platform='android'\r\n"
1846
+ $rhosim_config += "os_version='#{$emuversion}'\r\n" if $emuversion
1847
+
1848
+ Rake::Task["run:rhosimulator_debug"].invoke
1849
+ end
1850
+
1853
1851
  task :get_info => "config:android" do
1854
1852
  $androidtargets.each do |level|
1855
1853
  puts "#{get_market_version(level[0])}"
@@ -1926,6 +1924,10 @@ namespace "run" do
1926
1924
  cmd << " -no-window" if options[:hidden]
1927
1925
  cmd << " -avd #{$avdname}"
1928
1926
  Thread.new { system(cmd) }
1927
+
1928
+ puts "Waiting for emulator..."
1929
+ puts Jake.run($adb, ['wait-for-device'] )
1930
+
1929
1931
  puts "Waiting up to 180 seconds for emulator..."
1930
1932
  startedWaiting = Time.now
1931
1933
  adbRestarts = 1