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
@@ -33,6 +33,64 @@
33
33
 
34
34
  module AndroidTools
35
35
 
36
+ def fill_api_levels(sdkpath)
37
+ $api_levels = Hash.new
38
+ $market_versions = Hash.new
39
+ max_apilevel = 0
40
+ max_platform = nil
41
+
42
+ Dir.glob(File.join(sdkpath, "platforms", "*")).each do |platform|
43
+ props = File.join(platform, "source.properties")
44
+ unless File.file? props
45
+ puts "+++ WARNING! No source.properties found in #{platform}"
46
+ next
47
+ end
48
+
49
+ apilevel = 0
50
+ marketversion = nil
51
+ File.open(props, "r") do |f|
52
+ while line = f.gets
53
+ apilevel = $1.to_i if line =~ /^\s*AndroidVersion\.ApiLevel\s*=\s*([0-9]+)\s*$/
54
+ marketversion = $1 if line =~ /^\s*Platform\.Version\s*=\s*([^\s]*)\s*$/
55
+ end
56
+ end
57
+
58
+ puts "+++ API LEVEL of #{platform}: #{apilevel}" if USE_TRACES
59
+
60
+ if apilevel != 0
61
+ $api_levels[marketversion] = apilevel
62
+ $market_versions[apilevel] = marketversion
63
+ if apilevel > max_apilevel
64
+ max_apilevel = apilevel
65
+ max_platform = File.basename platform
66
+ end
67
+ end
68
+ end
69
+
70
+ max_platform
71
+ end
72
+ module_function :fill_api_levels
73
+
74
+ def get_installed_market_versions
75
+ $api_levels.keys
76
+ end
77
+ module_function :get_installed_market_versions
78
+
79
+ def get_installed_api_levels
80
+ $market_versions.keys
81
+ end
82
+ module_function :get_installed_api_levels
83
+
84
+ def get_market_version(apilevel)
85
+ $market_versions[apilevel]
86
+ end
87
+ module_function :get_market_version
88
+
89
+ def get_api_level(marketversion)
90
+ $api_levels[marketversion]
91
+ end
92
+ module_function :get_api_level
93
+
36
94
  def get_app_log (appname, device, silent = false)
37
95
  pkgname = "com.#{$vendor}." + appname.downcase.gsub(/[^A-Za-z_0-9]/, '')
38
96
  path = File.join('/data/data', pkgname, 'rhodata', 'RhoLog.txt')
@@ -17,6 +17,7 @@ platform/shared/common/SplashScreen.cpp
17
17
  platform/shared/common/ThreadQueue.cpp
18
18
  platform/shared/common/Tokenizer.cpp
19
19
  platform/shared/common/RhoTime.cpp
20
+ platform/shared/common/BundleManager.cpp
20
21
  platform/shared/net/AsyncHttp.cpp
21
22
  platform/shared/net/CURLNetRequest.cpp
22
23
  platform/shared/net/HttpServer.cpp
@@ -15,6 +15,9 @@ platform/shared/ruby/enc/ascii.c
15
15
  platform/shared/ruby/enc/unicode.c
16
16
  platform/shared/ruby/enc/us_ascii.c
17
17
  platform/shared/ruby/enc/utf_8.c
18
+ platform/shared/ruby/enc/encdb.c
19
+ platform/shared/ruby/enc/iso_8859_1.c
20
+ platform/shared/ruby/enc/iso_8859_9.c
18
21
  platform/shared/ruby/enum.c
19
22
  platform/shared/ruby/enumerator.c
20
23
  platform/shared/ruby/error.c
@@ -69,6 +69,16 @@ public class RhoConf {
69
69
  m_mapChangedValues.put(szName, getString(szName) );
70
70
 
71
71
  String strData = saveChangesToString();
72
+
73
+ RhoFile.deleteFile(getConfFilePath()+CONF_CHANGES);
74
+
75
+ try{
76
+ RhoFile.writeStringToFile(getConfFilePath()+CONF_CHANGES, strData);
77
+ }catch(Exception exc)
78
+ {
79
+ LOG.ERROR("saveToFile failed.", exc);
80
+ }
81
+ /*
72
82
  SimpleFile oFile = null;
73
83
 
74
84
  try{
@@ -81,7 +91,7 @@ public class RhoConf {
81
91
  }catch(Exception exc){
82
92
  if ( oFile != null )
83
93
  try{ oFile.close(); }catch(IOException exc2){}
84
- }
94
+ }*/
85
95
 
86
96
  }
87
97
 
@@ -640,7 +640,7 @@ public class DBAdapter extends RubyBasic
640
640
 
641
641
  //getAttrMgr().load(this);
642
642
 
643
- m_dbStorage.setDbCallback(new DBCallback(this));
643
+ //m_dbStorage.setDbCallback(new DBCallback(this));
644
644
 
645
645
  //m_dbAdapters.addElement(this);
646
646
 
@@ -793,7 +793,7 @@ public class DBAdapter extends RubyBasic
793
793
 
794
794
  //getAttrMgr().load(this);
795
795
 
796
- m_dbStorage.setDbCallback(new DBCallback(this));
796
+ //m_dbStorage.setDbCallback(new DBCallback(this));
797
797
 
798
798
  }catch(Exception e)
799
799
  {
@@ -1016,7 +1016,7 @@ public class DBAdapter extends RubyBasic
1016
1016
 
1017
1017
  //getAttrMgr().load(this);
1018
1018
 
1019
- m_dbStorage.setDbCallback(new DBCallback(this));
1019
+ //m_dbStorage.setDbCallback(new DBCallback(this));
1020
1020
 
1021
1021
  }catch(Exception e)
1022
1022
  {
@@ -1144,8 +1144,6 @@ public class DBAdapter extends RubyBasic
1144
1144
  {
1145
1145
  DBAdapter db = (DBAdapter)enumDBs.nextElement();
1146
1146
  db.getAttrMgr().loadBlobAttrs(db);
1147
- if ( !db.getAttrMgr().hasBlobAttrs() )
1148
- db.m_dbStorage.setDbCallback(null);
1149
1147
  }
1150
1148
  }
1151
1149
 
@@ -1339,6 +1337,14 @@ public class DBAdapter extends RubyBasic
1339
1337
 
1340
1338
  }
1341
1339
 
1340
+ public void setDBCallback(boolean bSet)
1341
+ {
1342
+ if ( bSet )
1343
+ m_dbStorage.setDbCallback(new DBCallback(this));
1344
+ else
1345
+ m_dbStorage.setDbCallback(null);
1346
+ }
1347
+
1342
1348
  public static class DBCallback implements IDBCallback
1343
1349
  {
1344
1350
  private DBAdapter m_db;
@@ -78,7 +78,8 @@ public class DBAttrManager {
78
78
  public void loadBlobAttrs(DBAdapter db)throws DBException
79
79
  {
80
80
  loadAttrs(db, m_mapBlobAttrs, "blob_attribs", m_mapSrcNames);
81
- //TODO: update/delete trigger for schema sources
81
+
82
+ db.setDBCallback(db.getAttrMgr().hasBlobAttrs());
82
83
  }
83
84
 
84
85
  static void loadAttrs(DBAdapter db, Hashtable/*Ptr< int, Hashtable<String,int>* >&*/ mapAttrs, String strDBAttr, Hashtable mapSrcNames)throws DBException
@@ -115,7 +116,7 @@ public class DBAttrManager {
115
116
 
116
117
  mapAttrs.put( nSrcID, mapAttr );
117
118
  if ( mapSrcNames != null )
118
- mapSrcNames.put(res.getStringByIdx(2).toUpperCase(), nSrcID);
119
+ mapSrcNames.put(res.getStringByIdx(2), nSrcID);
119
120
  }
120
121
  }
121
122
  }
@@ -108,6 +108,7 @@ public class RhoFile
108
108
  public static boolean isFileExist(String szFilePath)
109
109
  {
110
110
  IRAFile oFile = null;
111
+ //LOG.INFO("isFileExist:" + szFilePath);
111
112
 
112
113
  try
113
114
  {
@@ -116,6 +117,7 @@ public class RhoFile
116
117
  return oFile.exists();
117
118
  }catch(Exception exc)
118
119
  {
120
+ LOG.ERROR("isFileExist failed:" + szFilePath, exc);
119
121
  return false;
120
122
  }finally
121
123
  {
@@ -44,6 +44,7 @@ public class RhoConnection implements IHttpConnection {
44
44
  protected Properties resHeaders = new Properties();
45
45
  /** Request state **/
46
46
  protected boolean requestProcessed = false;
47
+ protected boolean m_isDispatchCall = false;
47
48
  /** Input/Output streams **/
48
49
  private /*ByteArray*/InputStream responseData = null;
49
50
  private ByteArrayOutputStream postData = new ByteArrayOutputStream();
@@ -109,6 +110,8 @@ public class RhoConnection implements IHttpConnection {
109
110
  LOG.TRACE("Close browser connection.");
110
111
  }
111
112
 
113
+ public boolean isDispatchCall(){ return m_isDispatchCall; }
114
+
112
115
  public Object getNativeConnection() {
113
116
  throw new RuntimeException("getNativeConnection - Not implemented");
114
117
  }
@@ -139,13 +142,13 @@ public class RhoConnection implements IHttpConnection {
139
142
  }
140
143
 
141
144
  public String getHeaderField(String name) throws IOException {
142
- //LOG.TRACE("getHeaderField: " + name);
145
+ LOG.TRACE("getHeaderField: " + name);
143
146
  processRequest();
144
147
  return resHeaders.getPropertyIgnoreCase(name);
145
148
  }
146
149
 
147
150
  public String getHeaderField(int index) throws IOException {
148
- //LOG.TRACE("getHeaderField: " + index);
151
+ LOG.TRACE("getHeaderField: " + index);
149
152
  processRequest();
150
153
  if (index >= resHeaders.size()) {
151
154
  return null;
@@ -154,7 +157,7 @@ public class RhoConnection implements IHttpConnection {
154
157
  }
155
158
 
156
159
  public long getHeaderFieldDate(String name, long def) throws IOException {
157
- //LOG.TRACE("getHeaderFieldDate: " + name);
160
+ LOG.TRACE("getHeaderFieldDate: " + name);
158
161
  processRequest();
159
162
  try {
160
163
  return DateTimeTokenizer.parse(getHeaderField(name));
@@ -169,7 +172,7 @@ public class RhoConnection implements IHttpConnection {
169
172
  }
170
173
 
171
174
  public int getHeaderFieldInt(String name, int def) throws IOException {
172
- //LOG.TRACE("getHeaderFieldInt: " + name);
175
+ LOG.TRACE("getHeaderFieldInt: " + name);
173
176
  processRequest();
174
177
  try {
175
178
  return Integer.parseInt(getHeaderField(name));
@@ -182,7 +185,7 @@ public class RhoConnection implements IHttpConnection {
182
185
  }
183
186
 
184
187
  public String getHeaderFieldKey(int index) throws IOException {
185
- //LOG.TRACE("getHeaderFieldKey: " + index);
188
+ LOG.TRACE("getHeaderFieldKey: " + index);
186
189
  processRequest();
187
190
  if (index >= resHeaders.size())
188
191
  return null;
@@ -216,7 +219,7 @@ public class RhoConnection implements IHttpConnection {
216
219
 
217
220
  public String getRef() {
218
221
  LOG.TRACE("getRef: " + uri.getFragment());
219
- return uri.getFragment();
222
+ return uri.getFragment() != null ? uri.getFragment() : "";
220
223
  }
221
224
 
222
225
  public String getRequestMethod() {
@@ -225,7 +228,7 @@ public class RhoConnection implements IHttpConnection {
225
228
  }
226
229
 
227
230
  public String getRequestProperty(String key) {
228
- //LOG.TRACE("getRequestProperty: " + key);
231
+ LOG.TRACE("getRequestProperty: " + key);
229
232
  return reqHeaders.getPropertyIgnoreCase(key);
230
233
  }
231
234
 
@@ -309,7 +312,7 @@ public class RhoConnection implements IHttpConnection {
309
312
  * the value for the request header field.
310
313
  */
311
314
  protected void setRequestField(String key, String value) {
312
- //LOG.TRACE("setRequestField: key = " + key + "; value = " + value);
315
+ LOG.TRACE("setRequestField: key = " + key + "; value = " + value);
313
316
 
314
317
  /*
315
318
  * If application setRequestProperties("Connection", "close") then we
@@ -361,19 +364,23 @@ public class RhoConnection implements IHttpConnection {
361
364
  }
362
365
 
363
366
  public DataInputStream openDataInputStream() throws IOException {
367
+ LOG.TRACE("openDataInputStream");
364
368
  return new DataInputStream(openInputStream());
365
369
  }
366
370
 
367
371
  public InputStream openInputStream() throws IOException {
372
+ LOG.TRACE("openInputStream");
368
373
  processRequest();
369
374
  return responseData;
370
375
  }
371
376
 
372
377
  public DataOutputStream openDataOutputStream() throws IOException {
378
+ LOG.TRACE("openDataOutputStream");
373
379
  return new DataOutputStream(postData);
374
380
  }
375
381
 
376
382
  public OutputStream openOutputStream() throws IOException {
383
+ LOG.TRACE("openOutputStream");
377
384
  return postData;
378
385
  }
379
386
 
@@ -414,18 +421,22 @@ public class RhoConnection implements IHttpConnection {
414
421
 
415
422
  resHeaders.addProperty("Location", strLoc );
416
423
  contentLength = 0;
424
+
425
+ responseData = new ByteArrayInputStream("".getBytes());
417
426
  }
418
427
 
419
428
  void respondOK(){
420
429
  responseCode = HTTP_OK;
421
430
  responseMsg = "Success";
422
431
  contentLength = 0;
432
+ responseData = new ByteArrayInputStream("".getBytes());
423
433
  }
424
434
 
425
435
  void respondNotModified(){
426
436
  responseCode = HTTP_NOTMODIFIED;
427
437
  responseMsg = "Success";
428
438
  contentLength = 0;
439
+ responseData = new ByteArrayInputStream("".getBytes());
429
440
  }
430
441
 
431
442
  void respondNotFound( String strError ){
@@ -815,6 +826,7 @@ public class RhoConnection implements IHttpConnection {
815
826
  if ( dispatch() )
816
827
  {
817
828
  requestProcessed = true;
829
+ m_isDispatchCall = true;
818
830
  return;
819
831
  }
820
832
  }
@@ -445,7 +445,7 @@ public class SyncEngine implements NetRequest.IRhoSession
445
445
  oSrc.getDB().executeSQL("UPDATE sources set last_updated=?,last_inserted_size=?,last_deleted_size=?, "+
446
446
  "last_sync_duration=?,last_sync_success=?, backend_refresh_time=? WHERE source_id=?",
447
447
  new Long(endTime.toULong()/1000), new Integer(oSrc.getInsertedCount()), new Integer(oSrc.getDeletedCount()),
448
- new Long((endTime.minus(startTime)).toULong()), new Integer(oSrc.getGetAtLeastOnePage()?1:0),
448
+ new Long((endTime.minus(startTime)).toULong()), new Integer(oSrc.m_nErrCode == RhoAppAdapter.ERR_NONE?1:0),
449
449
  new Integer(oSrc.getRefreshTime()), oSrc.getID() );
450
450
  }
451
451
  //
@@ -961,7 +961,7 @@ public class SyncEngine implements NetRequest.IRhoSession
961
961
  /*bError = !*/syncOneSource(i, strQueryParams);
962
962
  }
963
963
 
964
- if ( !isSchemaChanged() )
964
+ if ( !isSchemaChanged() && getState() != SyncEngine.esStop )
965
965
  getNotify().fireSyncNotification(null, true, RhoAppAdapter.ERR_NONE, RhoAppAdapter.getMessageText("sync_completed"));
966
966
  }
967
967
 
@@ -1067,9 +1067,12 @@ public class SyncEngine implements NetRequest.IRhoSession
1067
1067
 
1068
1068
  public void logout()throws Exception
1069
1069
  {
1070
- if(m_NetRequest!=null)
1071
- m_NetRequest.cancel();
1072
-
1070
+ stopSync();
1071
+ logout_int();
1072
+ }
1073
+
1074
+ public void logout_int()throws Exception
1075
+ {
1073
1076
  getUserDB().executeSQL( "UPDATE client_info SET session = NULL");
1074
1077
  m_strSession = "";
1075
1078
 
@@ -1087,7 +1090,7 @@ public class SyncEngine implements NetRequest.IRhoSession
1087
1090
 
1088
1091
  getUserDB().executeSQL("DELETE FROM client_info");
1089
1092
 
1090
- logout();
1093
+ logout_int();
1091
1094
  }
1092
1095
  }
1093
1096
 
@@ -85,13 +85,12 @@ public class SyncSource
85
85
  boolean m_bTokenFromDB;
86
86
 
87
87
  int m_nCurPageCount, m_nInserted, m_nDeleted, m_nTotalCount;
88
- boolean m_bGetAtLeastOnePage = false;
89
88
  int m_nErrCode = RhoAppAdapter.ERR_NONE;
90
89
  String m_strError = "", m_strServerError = "";
91
90
  String m_strQueryParams = "";
92
91
 
93
92
  int m_nRefreshTime = 0;
94
- int m_nProgressStep = -1;
93
+ int m_nProgressStep = 0;
95
94
  boolean m_bSchemaSource;
96
95
 
97
96
  static class CAssociation
@@ -124,7 +123,6 @@ public class SyncSource
124
123
  int getProgressStep(){ return m_nProgressStep; }
125
124
  void setProgressStep(int nProgressStep){ m_nProgressStep = nProgressStep; }
126
125
 
127
- boolean getGetAtLeastOnePage(){ return m_bGetAtLeastOnePage; }
128
126
  int getRefreshTime(){ return m_nRefreshTime; }
129
127
  Vector/*<CAssociation>*/ getAssociations(){ return m_arAssociations; }
130
128
 
@@ -150,12 +148,12 @@ public class SyncSource
150
148
  m_nID = new Integer(0);
151
149
 
152
150
  m_bTokenFromDB = true;
153
-
151
+ m_nProgressStep = 0;
152
+
154
153
  m_nCurPageCount = 0;
155
154
  m_nInserted = 0;
156
155
  m_nDeleted = 0;
157
156
  m_nTotalCount = 0;
158
- m_bGetAtLeastOnePage = false;
159
157
 
160
158
  m_nErrCode = RhoAppAdapter.ERR_NONE;
161
159
  m_bSchemaSource = db.isTableExist(m_strName);
@@ -168,12 +166,12 @@ public class SyncSource
168
166
  m_nID = new Integer(id);
169
167
  m_strName = name;
170
168
  m_strSyncType = strSyncType;
169
+ m_nProgressStep = 0;
171
170
 
172
171
  m_nCurPageCount = 0;
173
172
  m_nInserted = 0;
174
173
  m_nDeleted = 0;
175
174
  m_nTotalCount = 0;
176
- m_bGetAtLeastOnePage = false;
177
175
 
178
176
  m_nErrCode = RhoAppAdapter.ERR_NONE;
179
177
 
@@ -243,12 +241,21 @@ public class SyncSource
243
241
  //getSync().stopSync();
244
242
  throw exc;
245
243
  }finally{
246
- TimeInterval endTime = TimeInterval.getCurrentTime();
247
- getDB().executeSQL("UPDATE sources set last_updated=?,last_inserted_size=?,last_deleted_size=?, "+
248
- "last_sync_duration=?,last_sync_success=?, backend_refresh_time=? WHERE source_id=?",
249
- new Long(endTime.toULong()/1000), new Integer(getInsertedCount()), new Integer(getDeletedCount()),
250
- new Long((endTime.minus(startTime)).toULong()),
251
- new Integer(m_bGetAtLeastOnePage?1:0), new Integer(m_nRefreshTime), getID() );
244
+ TimeInterval endTime = TimeInterval.getCurrentTime();
245
+
246
+ int nSyncSucess = m_nErrCode == RhoAppAdapter.ERR_NONE ? 1 : 0;
247
+ if ( nSyncSucess > 0 )
248
+ getDB().executeSQL("UPDATE sources set last_updated=?,last_inserted_size=?,last_deleted_size=?, "+
249
+ "last_sync_duration=?,last_sync_success=?, backend_refresh_time=? WHERE source_id=?",
250
+ new Long(endTime.toULong()/1000), new Integer(getInsertedCount()), new Integer(getDeletedCount()),
251
+ new Long((endTime.minus(startTime)).toULong()),
252
+ new Integer(nSyncSucess), new Integer(m_nRefreshTime), getID() );
253
+ else
254
+ getDB().executeSQL("UPDATE sources set last_inserted_size=?,last_deleted_size=?, "+
255
+ "last_sync_duration=?,last_sync_success=?, backend_refresh_time=? WHERE source_id=?",
256
+ new Integer(getInsertedCount()), new Integer(getDeletedCount()),
257
+ new Long((endTime.minus(startTime)).toULong()),
258
+ new Integer(nSyncSucess), new Integer(m_nRefreshTime), getID() );
252
259
  }
253
260
  }
254
261
 
@@ -514,7 +521,9 @@ public class SyncSource
514
521
  oItem.m_strContentType = "application/octet-stream";
515
522
  oItem.m_strName = strAttrib + "-" + strObject;
516
523
 
517
- m_arBlobAttrs.addElement(strAttrib);
524
+ if ( m_arBlobAttrs.indexOf(strAttrib) == -1 )
525
+ m_arBlobAttrs.addElement(strAttrib);
526
+
518
527
  m_arMultipartItems.addElement(oItem);
519
528
  }
520
529
 
@@ -872,21 +881,39 @@ public class SyncSource
872
881
 
873
882
  if ( bCheckUIRequest )
874
883
  {
875
- int nSyncObjectCount = getNotify().incLastSyncObjectCount(getID());
876
- if ( getProgressStep() > 0 && (nSyncObjectCount%getProgressStep() == 0) )
877
- getNotify().fireSyncNotification(this, false, RhoAppAdapter.ERR_NONE, "");
878
-
879
884
  if ( getDB().isUIWaitDB() )
880
885
  {
881
886
  LOG.INFO("Commit transaction because of UI request.");
882
887
  getDB().endTransaction();
888
+
889
+ checkProgressStepNotify(false);
890
+
883
891
  SyncThread.getInstance().sleep(1000);
884
892
  getDB().startTransaction();
885
- }
893
+ }else
894
+ checkProgressStepNotify(true);
886
895
  }
887
896
  }
888
897
  }
889
898
 
899
+ void checkProgressStepNotify(boolean bEndTransaction)throws Exception
900
+ {
901
+ int nSyncObjectCount = getNotify().incLastSyncObjectCount(getID());
902
+ if ( getProgressStep() > 0 && (nSyncObjectCount%getProgressStep() == 0) )
903
+ {
904
+ if ( bEndTransaction )
905
+ {
906
+ LOG.INFO("Commit transaction because of Sync Progress notification.");
907
+ getDB().endTransaction();
908
+ }
909
+
910
+ getNotify().fireSyncNotification(this, false, RhoAppAdapter.ERR_NONE, "");
911
+
912
+ if ( bEndTransaction )
913
+ getDB().startTransaction();
914
+ }
915
+ }
916
+
890
917
  void processAssociations(String strOldObject, String strNewObject)throws Exception
891
918
  {
892
919
  for ( int i = 0; i < m_arAssociations.size(); i++ )