rhodes 3.4.2 → 3.5.1.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (705) hide show
  1. data/CHANGELOG +9 -0
  2. data/Rakefile +61 -9
  3. data/doc/build.txt +147 -38
  4. data/doc/configuration.txt +49 -33
  5. data/doc/connect-to-web-services.txt +32 -32
  6. data/doc/contributing.txt +1 -1
  7. data/doc/device-caps.txt +62 -311
  8. data/doc/extensions.txt +104 -5
  9. data/doc/install.txt +17 -61
  10. data/doc/linea.txt +11 -11
  11. data/doc/nfc.txt +3 -3
  12. data/doc/release.txt +4 -4
  13. data/doc/rhom.txt +7 -7
  14. data/doc/rhostudio-test-plan.txt +12 -12
  15. data/doc/simulator.txt +32 -19
  16. data/doc/syncengine-ajax-api.txt +1 -1
  17. data/doc/synchronization.txt +8 -2
  18. data/doc/test-log-debug.txt +34 -3
  19. data/doc/ui.txt +8 -3
  20. data/installer/icon.ico +0 -0
  21. data/lib/build/jake.rb +27 -6
  22. data/lib/extensions/audiocapture/audiocapture.rb +43 -0
  23. data/lib/extensions/audiocapture/ext.yml +5 -0
  24. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/AndroidManifest.xml +10 -0
  25. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/Rakefile +77 -0
  26. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/ext_build.files +2 -0
  27. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/jni/src/audiocapture.cpp +189 -0
  28. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/src/com/audiocapture/Audiocapture.java +236 -0
  29. data/lib/extensions/audiocapture/ext/audiocapture/platform/android/src/com/audiocapture/ExtAudioRecorder.java +573 -0
  30. data/lib/extensions/audiocapture/ext/audiocapture/platform/bb/Audiocapture.files +1 -0
  31. data/lib/extensions/audiocapture/ext/audiocapture/platform/bb/Rakefile +97 -0
  32. data/lib/extensions/audiocapture/ext/audiocapture/platform/bb/audiocapture.jdp +48 -0
  33. data/lib/extensions/audiocapture/ext/audiocapture/platform/bb/src/com/audiocapture/Audiocapture.java +118 -0
  34. data/lib/extensions/audiocapture/ext/audiocapture/platform/iphone/Audiocapture.xcodeproj/project.pbxproj +314 -0
  35. data/lib/extensions/audiocapture/ext/audiocapture/platform/iphone/Audiocapture_Prefix.pch +7 -0
  36. data/lib/extensions/audiocapture/ext/audiocapture/platform/iphone/Classes/audioCapture.h +51 -0
  37. data/lib/extensions/audiocapture/ext/audiocapture/platform/iphone/Classes/audioCapture.m +418 -0
  38. data/lib/extensions/audiocapture/ext/audiocapture/platform/iphone/Rakefile +79 -0
  39. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/Audiocapture.sln +44 -0
  40. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/Audiocapture.vcproj +647 -0
  41. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/Audiocapture.vsprops +15 -0
  42. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/Rakefile +62 -0
  43. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/src/audiocapture_wm.cpp +40 -0
  44. data/lib/extensions/audiocapture/ext/audiocapture/platform/wm/src/audiocapture_wm.h +2 -0
  45. data/lib/extensions/audiocapture/ext/audiocapture/shared/ruby/audiocapture.i +29 -0
  46. data/lib/extensions/audiocapture/ext/audiocapture/shared/ruby/audiocapture_wrap.c +2310 -0
  47. data/lib/extensions/audiocapture/ext/audiocapture/shared/src/audiocapture.c +26 -0
  48. data/lib/extensions/audiocapture/ext/build +17 -0
  49. data/lib/extensions/audiocapture/ext/build.bat +36 -0
  50. data/lib/extensions/barcode/ext.yml +5 -3
  51. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/rhomobile/barcode/Barcode.java +87 -87
  52. data/lib/extensions/digest-md5/ext/build +1 -1
  53. data/lib/extensions/digest-sha1/ext/build +1 -1
  54. data/lib/extensions/digest-sha2/ext/build +1 -1
  55. data/lib/extensions/digest/ext/build +1 -1
  56. data/lib/extensions/fcntl/ext/fcntl.c +5 -5
  57. data/lib/extensions/gcm-push/ext.yml +8 -0
  58. data/lib/extensions/gcm-push/ext/android/AndroidManifest.rb +5 -0
  59. data/lib/extensions/gcm-push/ext/android/ApplicationManifestAdds.erb +8 -0
  60. data/lib/extensions/gcm-push/ext/android/Rakefile +66 -0
  61. data/lib/extensions/gcm-push/ext/android/ext_build.files +3 -0
  62. data/lib/extensions/gcm-push/ext/android/jni/src/com_rhomobile_rhodes_gcm_GCMRhoListener.h +21 -0
  63. data/lib/extensions/gcm-push/ext/android/jni/src/gcmpushclient.cpp +173 -0
  64. data/lib/extensions/gcm-push/ext/android/jni/src/gcmpushclient.h +62 -0
  65. data/lib/extensions/gcm-push/ext/android/src/com/rhomobile/rhodes/gcm/GCMBroadcastReceiver.java +40 -0
  66. data/lib/extensions/gcm-push/ext/android/src/com/rhomobile/rhodes/gcm/GCMFacade.java +55 -0
  67. data/lib/extensions/gcm-push/ext/android/src/com/rhomobile/rhodes/gcm/GCMIntentService.java +60 -0
  68. data/lib/extensions/gcm-push/ext/build +12 -0
  69. data/lib/extensions/gcm-push/ext/build.bat +8 -0
  70. data/lib/extensions/net-http/net/http.rb +153 -119
  71. data/lib/extensions/net-http/net/https.rb +4 -38
  72. data/lib/extensions/nfc/ext.yml +6 -4
  73. data/lib/extensions/nfc/ext/nfc/platform/android/jni/src/nfc.cpp +2 -2
  74. data/lib/extensions/nfc/ext/nfc/platform/android/src/com/rhomobile/nfc/NfcTechActivity.java +0 -1
  75. data/lib/extensions/openssl/openssl/ssl-internal.rb +3 -1
  76. data/lib/extensions/rawsensors/ext.yml +4 -0
  77. data/lib/extensions/rawsensors/ext/build +17 -0
  78. data/lib/extensions/rawsensors/ext/build.bat +36 -0
  79. data/lib/extensions/rawsensors/ext/rawsensors/platform/android/Rakefile +77 -0
  80. data/lib/extensions/rawsensors/ext/rawsensors/platform/android/ext_build.files +1 -0
  81. data/lib/extensions/rawsensors/ext/rawsensors/platform/android/jni/src/rawsensors.cpp +180 -0
  82. data/lib/extensions/rawsensors/ext/rawsensors/platform/android/src/com/rawsensors/Rawsensors.java +355 -0
  83. data/lib/extensions/rawsensors/ext/rawsensors/platform/bb/Rakefile +97 -0
  84. data/lib/extensions/rawsensors/ext/rawsensors/platform/bb/Rawsensors.files +1 -0
  85. data/lib/extensions/rawsensors/ext/rawsensors/platform/bb/rawsensors.jdp +48 -0
  86. data/lib/extensions/rawsensors/ext/rawsensors/platform/bb/src/com/rawsensors/Rawsensors.java +118 -0
  87. data/lib/extensions/rawsensors/ext/rawsensors/platform/iphone/Classes/RawSensors.h +66 -0
  88. data/lib/extensions/rawsensors/ext/rawsensors/platform/iphone/Classes/RawSensors.m +351 -0
  89. data/lib/extensions/rawsensors/ext/rawsensors/platform/iphone/Rakefile +79 -0
  90. data/lib/extensions/rawsensors/ext/rawsensors/platform/iphone/Rawsensors.xcodeproj/project.pbxproj +316 -0
  91. data/lib/extensions/rawsensors/ext/rawsensors/platform/iphone/Rawsensors_Prefix.pch +7 -0
  92. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/Rakefile +62 -0
  93. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/Rawsensors.sln +44 -0
  94. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/Rawsensors.vcproj +647 -0
  95. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/Rawsensors.vsprops +15 -0
  96. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/src/rawsensors_wm.cpp +40 -0
  97. data/lib/extensions/rawsensors/ext/rawsensors/platform/wm/src/rawsensors_wm.h +2 -0
  98. data/lib/extensions/rawsensors/ext/rawsensors/shared/ruby/rawsensors.i +22 -0
  99. data/lib/extensions/rawsensors/ext/rawsensors/shared/ruby/rawsensors_wrap.c +2308 -0
  100. data/lib/extensions/rawsensors/ext/rawsensors/shared/src/rawsensors.c +25 -0
  101. data/lib/extensions/rawsensors/rawsensors.rb +36 -0
  102. data/lib/framework/autocomplete/AddressBar.rb +19 -0
  103. data/lib/framework/autocomplete/Alarm.rb +23 -0
  104. data/lib/framework/autocomplete/Alert.rb +19 -0
  105. data/lib/framework/autocomplete/AppApplication.rb +17 -0
  106. data/lib/framework/autocomplete/AppSwitcher.rb +13 -0
  107. data/lib/framework/autocomplete/Application.rb +23 -0
  108. data/lib/framework/autocomplete/AudioCapture.rb +31 -0
  109. data/lib/framework/autocomplete/BackButton.rb +25 -0
  110. data/lib/framework/autocomplete/Backlight.rb +21 -0
  111. data/lib/framework/autocomplete/Barcode.rb +29 -0
  112. data/lib/framework/autocomplete/BasicSocket.rb +87 -0
  113. data/lib/framework/autocomplete/Battery.rb +33 -0
  114. data/lib/framework/autocomplete/BottomCommandArea.rb +19 -0
  115. data/lib/framework/autocomplete/BrowserHelper.rb +19 -0
  116. data/lib/framework/autocomplete/Bsearch.rb +11 -0
  117. data/lib/framework/autocomplete/Camera.rb +17 -0
  118. data/lib/framework/autocomplete/CardReader.rb +29 -0
  119. data/lib/framework/autocomplete/Comm.rb +45 -0
  120. data/lib/framework/autocomplete/Cradle.rb +15 -0
  121. data/lib/framework/autocomplete/Date.rb +50 -0
  122. data/lib/framework/autocomplete/DateTime.rb +24 -0
  123. data/lib/framework/autocomplete/DateTimePicker.rb +15 -0
  124. data/lib/framework/autocomplete/Device.rb +19 -0
  125. data/lib/framework/autocomplete/Digest.rb +28 -0
  126. data/lib/framework/autocomplete/Dir.rb +63 -0
  127. data/lib/framework/autocomplete/Eink.rb +19 -0
  128. data/lib/framework/autocomplete/EmmlProfile.rb +19 -0
  129. data/lib/framework/autocomplete/File.rb +301 -0
  130. data/lib/framework/autocomplete/FileTransfer.rb +27 -0
  131. data/lib/framework/autocomplete/ForwardButton.rb +25 -0
  132. data/lib/framework/autocomplete/GeneratorController.rb +15 -0
  133. data/lib/framework/autocomplete/GeoLocation.rb +27 -0
  134. data/lib/framework/autocomplete/Gesture.rb +71 -0
  135. data/lib/framework/autocomplete/GoButton.rb +25 -0
  136. data/lib/framework/autocomplete/HashWithIndifferentAccess.rb +51 -0
  137. data/lib/framework/autocomplete/History.rb +11 -0
  138. data/lib/framework/autocomplete/HomeButton.rb +25 -0
  139. data/lib/framework/autocomplete/Hourglass.rb +17 -0
  140. data/lib/framework/autocomplete/IPSocket.rb +65 -0
  141. data/lib/framework/autocomplete/Imager.rb +53 -0
  142. data/lib/framework/autocomplete/IoAnalog.rb +73 -0
  143. data/lib/framework/autocomplete/IoDigital.rb +93 -0
  144. data/lib/framework/autocomplete/IoSystem.rb +21 -0
  145. data/lib/framework/autocomplete/JSON.rb +142 -0
  146. data/lib/framework/autocomplete/KeyCapture.rb +25 -0
  147. data/lib/framework/autocomplete/KeyState.rb +23 -0
  148. data/lib/framework/autocomplete/Keylight.rb +17 -0
  149. data/lib/framework/autocomplete/Lightsensor.rb +19 -0
  150. data/lib/framework/autocomplete/LocalizationSimplified.rb +33 -0
  151. data/lib/framework/autocomplete/MapView.rb +23 -0
  152. data/lib/framework/autocomplete/MediaPlayer.rb +19 -0
  153. data/lib/framework/autocomplete/Memory.rb +17 -0
  154. data/lib/framework/autocomplete/MinimizeButton.rb +25 -0
  155. data/lib/framework/autocomplete/NativeBar.rb +31 -0
  156. data/lib/framework/autocomplete/NavBar.rb +15 -0
  157. data/lib/framework/autocomplete/Network.rb +31 -0
  158. data/lib/framework/autocomplete/Notification.rb +35 -0
  159. data/lib/framework/autocomplete/OpenSSL.rb +440 -0
  160. data/lib/framework/autocomplete/Phonebook.rb +39 -0
  161. data/lib/framework/autocomplete/PowerOn.rb +13 -0
  162. data/lib/framework/autocomplete/Push.rb +27 -0
  163. data/lib/framework/autocomplete/QuitButton.rb +25 -0
  164. data/lib/framework/autocomplete/RHO_APPS_DIR.rb +8 -0
  165. data/lib/framework/autocomplete/RHO_ERB_EXT.rb +8 -0
  166. data/lib/framework/autocomplete/RHO_FRAMEWORK.rb +0 -0
  167. data/lib/framework/autocomplete/RHO_RB_EXT.rb +8 -0
  168. data/lib/framework/autocomplete/RawSensors.rb +53 -0
  169. data/lib/framework/autocomplete/Reboot.rb +13 -0
  170. data/lib/framework/autocomplete/Registry.rb +25 -0
  171. data/lib/framework/autocomplete/ReloadButton.rb +25 -0
  172. data/lib/framework/autocomplete/Rfid.rb +173 -0
  173. data/lib/framework/autocomplete/Rho.rb +496 -0
  174. data/lib/framework/autocomplete/RhoBluetooth.rb +41 -0
  175. data/lib/framework/autocomplete/RhoConf.rb +23 -0
  176. data/lib/framework/autocomplete/RhoElementsExt.rb +11 -0
  177. data/lib/framework/autocomplete/RhoLog.rb +13 -0
  178. data/lib/framework/autocomplete/RhoProfiler.rb +21 -0
  179. data/lib/framework/autocomplete/RhoStdout.rb +19 -0
  180. data/lib/framework/autocomplete/Rhodes.rb +13 -0
  181. data/lib/framework/autocomplete/RhodesNativeViewManager.rb +15 -0
  182. data/lib/framework/autocomplete/Rhom.rb +198 -0
  183. data/lib/framework/autocomplete/Rsm.rb +135 -0
  184. data/lib/framework/autocomplete/SQLite3.rb +36 -0
  185. data/lib/framework/autocomplete/SWIG.rb +24 -0
  186. data/lib/framework/autocomplete/ScanError.rb +9 -0
  187. data/lib/framework/autocomplete/Scanner.rb +379 -0
  188. data/lib/framework/autocomplete/ScreenOrientation.rb +23 -0
  189. data/lib/framework/autocomplete/SignatureCapture.rb +47 -0
  190. data/lib/framework/autocomplete/SignatureTool.rb +11 -0
  191. data/lib/framework/autocomplete/Sip.rb +19 -0
  192. data/lib/framework/autocomplete/SipButton.rb +25 -0
  193. data/lib/framework/autocomplete/Sntp.rb +13 -0
  194. data/lib/framework/autocomplete/Socket.rb +356 -0
  195. data/lib/framework/autocomplete/SocketError.rb +9 -0
  196. data/lib/framework/autocomplete/StopButton.rb +25 -0
  197. data/lib/framework/autocomplete/StringIO.rb +139 -0
  198. data/lib/framework/autocomplete/StringScanner.rb +102 -0
  199. data/lib/framework/autocomplete/Stylus.rb +15 -0
  200. data/lib/framework/autocomplete/SyncEngine.rb +77 -0
  201. data/lib/framework/autocomplete/System.rb +79 -0
  202. data/lib/framework/autocomplete/SystemTime.rb +17 -0
  203. data/lib/framework/autocomplete/TCPServer.rb +65 -0
  204. data/lib/framework/autocomplete/TCPSocket.rb +59 -0
  205. data/lib/framework/autocomplete/Telemetry.rb +23 -0
  206. data/lib/framework/autocomplete/Thread.rb +85 -0
  207. data/lib/framework/autocomplete/Time.rb +167 -0
  208. data/lib/framework/autocomplete/Timer.rb +19 -0
  209. data/lib/framework/autocomplete/TopCommandArea.rb +19 -0
  210. data/lib/framework/autocomplete/UDPSocket.rb +65 -0
  211. data/lib/framework/autocomplete/VideoCapture.rb +29 -0
  212. data/lib/framework/autocomplete/Volume.rb +13 -0
  213. data/lib/framework/autocomplete/Wake.rb +15 -0
  214. data/lib/framework/autocomplete/WebView.rb +31 -0
  215. data/lib/framework/autocomplete/Wlan.rb +87 -0
  216. data/lib/framework/autocomplete/Zoom.rb +15 -0
  217. data/lib/framework/autocomplete/ZoomInPageButton.rb +25 -0
  218. data/lib/framework/autocomplete/ZoomOutPageButton.rb +25 -0
  219. data/lib/framework/autocomplete/ZoomTextButton.rb +25 -0
  220. data/lib/framework/rho/render.rb +15 -4
  221. data/lib/framework/rho/rho.rb +17 -8
  222. data/lib/framework/rho/rhoapplication.rb +25 -3
  223. data/lib/framework/rho/rhocontact.rb +13 -0
  224. data/lib/framework/rho/rhoevent.rb +15 -0
  225. data/lib/framework/rho/rhonativeviewmanager.rb +3 -3
  226. data/lib/framework/rhodes.rb +1 -1
  227. data/lib/framework/rhom/rhom.rb +5 -0
  228. data/lib/framework/rhomotoapi.rb +2 -1
  229. data/lib/framework/version.rb +1 -1
  230. data/lib/rhodes.rb +1 -1
  231. data/platform/android/Rhodes/AndroidManifest.xml +4 -3
  232. data/platform/android/Rhodes/AndroidManifest.xml.erb +7 -7
  233. data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +22 -0
  234. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +1 -9
  235. data/platform/android/Rhodes/jni/src/callbacks.cpp +2 -0
  236. data/platform/android/Rhodes/jni/src/camera.cpp +5 -0
  237. data/platform/android/Rhodes/jni/src/event.cpp +10 -0
  238. data/platform/android/Rhodes/jni/src/geolocation.cpp +10 -0
  239. data/platform/android/Rhodes/jni/src/logger.cpp +3 -1
  240. data/platform/android/Rhodes/jni/src/phonebook.cpp +11 -0
  241. data/platform/android/Rhodes/jni/src/rhodes.cpp +1 -1
  242. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +41 -25
  243. data/platform/android/Rhodes/jni/src/signature.cpp +7 -6
  244. data/platform/android/Rhodes/jni/src/webview.cpp +29 -0
  245. data/platform/android/Rhodes/project.properties +1 -1
  246. data/platform/android/Rhodes/res/drawable/icon.png +0 -0
  247. data/platform/android/Rhodes/src/com/rhomobile/rhodes/ConnectionChangeReceiver.java +28 -0
  248. data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java +1 -1
  249. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushContract.java +102 -0
  250. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +20 -56
  251. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +9 -124
  252. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +114 -126
  253. data/platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java +26 -0
  254. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/PopupActivity.java +3 -5
  255. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +31 -13
  256. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +2 -0
  257. data/platform/android/Rhodes/src/com/rhomobile/rhodes/datetime/DateTimePicker.java +3 -7
  258. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/CalendarIDsProvider.java +19 -0
  259. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/CalendarIDsProviderFroyo.java +5 -0
  260. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/CalendarIDsProviderICS.java +22 -0
  261. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +32 -22
  262. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoExtension.java +5 -0
  263. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoListener.java +34 -0
  264. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtManager.java +11 -2
  265. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtension.java +1 -0
  266. data/platform/android/Rhodes/src/com/rhomobile/rhodes/{webview → extmanager}/IRhoWebView.java +5 -1
  267. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManagerImpl.java +605 -492
  268. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +16 -0
  269. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java +9 -2
  270. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +43 -14
  271. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SplashScreen.java +82 -64
  272. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +28 -13
  273. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/GoogleMapView.java +4 -4
  274. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +0 -1
  275. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java +4 -0
  276. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java +6 -0
  277. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java +7 -0
  278. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality12.java +6 -0
  279. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality13.java +6 -0
  280. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality14.java +12 -0
  281. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java +10 -1
  282. data/platform/android/Rhodes/src/com/rhomobile/rhodes/signature/Signature.java +3 -6
  283. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/RhoSocketImpl.java +1 -1
  284. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/LocalFileHandler.java +1 -1
  285. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +43 -0
  286. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebChromeClient.java +5 -0
  287. data/platform/android/build/RhodesSRC_build.files +10 -4
  288. data/platform/android/build/android.rake +46 -193
  289. data/platform/android/build/android_tools.rb +181 -13
  290. data/platform/bb/Hsqldb/src/org/hsqldb/CompiledStatementExecutor.java +3 -3
  291. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +4 -2
  292. data/platform/bb/RubyVM/src/com/rho/IRhoRubyHelper.java +2 -0
  293. data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +6 -0
  294. data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +13 -8
  295. data/platform/bb/RubyVM/src/com/rho/db/DBAdapter.java +103 -1
  296. data/platform/bb/RubyVM/src/com/rho/db/DBAttrManager.java +18 -0
  297. data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +9 -2
  298. data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +16 -11
  299. data/platform/bb/RubyVM/src/com/rho/sync/ClientRegister.java +25 -3
  300. data/platform/bb/RubyVM/src/com/rho/sync/ISyncProtocol.java +1 -1
  301. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +122 -32
  302. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +44 -14
  303. data/platform/bb/RubyVM/src/com/rho/sync/SyncProtocol_3.java +3 -2
  304. data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +340 -88
  305. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +62 -15
  306. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/AttrReader.java +1 -1
  307. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFixnum.java +3 -1
  308. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyHash.java +1 -1
  309. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyAPI.java +19 -1
  310. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyBasic.java +9 -0
  311. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyBinding.java +4 -4
  312. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyModule.java +13 -1
  313. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyObject.java +16 -1
  314. data/platform/bb/build/bb.rake +3 -1
  315. data/platform/bb/build/rhodes_build.files +0 -1
  316. data/platform/bb/rhodes/platform/4.7/com/rho/rubyext/SignatureCapture.java +13 -18
  317. data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +13 -3
  318. data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +1 -1
  319. data/platform/bb/rhodes/platform/common/com/rho/rubyext/SignatureCapture.java +13 -18
  320. data/platform/bb/rhodes/resources/icon.png +0 -0
  321. data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +10 -0
  322. data/platform/bb/rhodes/src/com/rho/BrowserAdapter5.java +13 -3
  323. data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +5 -0
  324. data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +1 -1
  325. data/platform/bb/rhodes/src/com/rho/file/Jsr75File.java +6 -1
  326. data/platform/bb/rhodes/src/com/rho/file/Jsr75RAFileImpl.java +6 -1
  327. data/platform/bb/rhodes/src/com/rho/rubyext/GeoLocation.java +38 -9
  328. data/platform/bb/rhodes/src/com/rho/rubyext/SignatureCapture.java +13 -18
  329. data/platform/bb/rhodes/src/com/rho/rubyext/WebView.java +16 -1
  330. data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +0 -20
  331. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +1 -10
  332. data/platform/bb/rhodes/src/rhomobile/camera/CameraScreen.java +40 -35
  333. data/platform/iphone/Classes/AppManager/AppManager.h +1 -1
  334. data/platform/iphone/Classes/AppManager/AppManager.m +46 -29
  335. data/platform/iphone/Classes/Camera/PickImageDelegate.m +9 -0
  336. data/platform/iphone/Classes/Event/Event.h +6 -1
  337. data/platform/iphone/Classes/Event/Event.m +67 -1
  338. data/platform/iphone/Classes/GeoLocation/LocationController.h +2 -1
  339. data/platform/iphone/Classes/GeoLocation/LocationController.m +17 -1
  340. data/platform/iphone/Classes/NetworkStatusMonitor.h +17 -0
  341. data/platform/iphone/Classes/NetworkStatusMonitor.mm +58 -0
  342. data/platform/iphone/Classes/Phonebook/phonebook.h +6 -0
  343. data/platform/iphone/Classes/Phonebook/phonebook.m +62 -6
  344. data/platform/iphone/Classes/Reachability.h +31 -0
  345. data/platform/iphone/Classes/Reachability.m +223 -0
  346. data/platform/iphone/Classes/RhoMainView.h +1 -0
  347. data/platform/iphone/Classes/RhoViewController.m +16 -0
  348. data/platform/iphone/Classes/Rhodes.h +2 -0
  349. data/platform/iphone/Classes/Rhodes.m +89 -10
  350. data/platform/iphone/Classes/Signature/SignatureDelegate.m +4 -7
  351. data/platform/iphone/Classes/SimpleMainView.m +16 -0
  352. data/platform/iphone/Classes/SplashViewController.m +11 -1
  353. data/platform/iphone/Classes/SplitView/RightViewController.m +6 -0
  354. data/platform/iphone/Classes/SplitView/SplittedMainView.m +5 -0
  355. data/platform/iphone/Classes/TabbedMainView.m +4 -0
  356. data/platform/iphone/Classes/WebView.m +14 -0
  357. data/platform/iphone/Info.plist +1 -6
  358. data/platform/iphone/iTunesArtwork.jpg +0 -0
  359. data/platform/iphone/icon.png +0 -0
  360. data/platform/iphone/icon114.png +0 -0
  361. data/platform/iphone/icon57.png +0 -0
  362. data/platform/iphone/icon72.png +0 -0
  363. data/platform/iphone/rbuild/iphone.rake +8 -11
  364. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +20 -4
  365. data/platform/osx/Rhodes Launcher/rhorunner.app/icon.png +0 -0
  366. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore +0 -0
  367. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui +0 -0
  368. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork +0 -0
  369. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtWebKit.framework/Versions/4/QtWebKit +0 -0
  370. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  371. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  372. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/accessible/libqtaccessiblewidgets.dylib +0 -0
  373. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib +0 -0
  374. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqgenericbearer.dylib +0 -0
  375. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqcncodecs.dylib +0 -0
  376. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqjpcodecs.dylib +0 -0
  377. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqkrcodecs.dylib +0 -0
  378. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqtwcodecs.dylib +0 -0
  379. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/graphicssystems/libqtracegraphicssystem.dylib +0 -0
  380. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqgif.dylib +0 -0
  381. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqico.dylib +0 -0
  382. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqjpeg.dylib +0 -0
  383. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqmng.dylib +0 -0
  384. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtga.dylib +0 -0
  385. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtiff.dylib +0 -0
  386. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_inspector.dylib +0 -0
  387. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_tcp.dylib +0 -0
  388. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Resources/rho.icns +0 -0
  389. data/platform/shared/common/ExtManager.h +8 -0
  390. data/platform/shared/common/RhoDefs.h +3 -2
  391. data/platform/shared/common/RhoFile.cpp +14 -1
  392. data/platform/shared/common/RhoMutexLock.h +4 -0
  393. data/platform/shared/common/RhoPort.h +5 -1
  394. data/platform/shared/common/RhoStd.h +12 -0
  395. data/platform/shared/common/RhoThread.cpp +1 -2
  396. data/platform/shared/common/RhoTime.h +4 -0
  397. data/platform/shared/common/RhodesApp.cpp +189 -65
  398. data/platform/shared/common/RhodesApp.h +60 -7
  399. data/platform/shared/common/RhodesAppBase.cpp +2 -8
  400. data/platform/shared/common/RhodesAppBase.h +1 -0
  401. data/platform/shared/common/ThreadQueue.cpp +2 -2
  402. data/platform/shared/common/app_build_configs.c +3 -1
  403. data/platform/shared/common/map/MapEngine.cpp +39 -3
  404. data/platform/shared/common/push/IRhoPushClient.h +3 -3
  405. data/platform/shared/common/push/RhoPushManager.cpp +31 -53
  406. data/platform/shared/common/push/RhoPushManager.h +12 -26
  407. data/platform/shared/curl/lib/curl_config.h +1 -1
  408. data/platform/shared/json/RJSONTokener.c +3 -1
  409. data/platform/shared/json/config.h +4 -4
  410. data/platform/shared/json/json_tokener.c +1 -1
  411. data/platform/shared/logging/RhoLog.cpp +5 -5
  412. data/platform/shared/logging/RhoLogConf.cpp +4 -6
  413. data/platform/shared/logging/RhoLogConf.h +2 -2
  414. data/platform/shared/logging/RhoLogSink.cpp +2 -0
  415. data/platform/shared/net/HttpServer.cpp +54 -7
  416. data/platform/shared/net/HttpServer.h +2 -0
  417. data/platform/shared/qt/rhodes/QtMainWindow.cpp +22 -0
  418. data/platform/shared/qt/rhodes/QtMainWindow.h +1 -0
  419. data/platform/shared/qt/rhodes/impl/CalendarImpl.cpp +4 -0
  420. data/platform/shared/qt/rhodes/impl/CameraImpl.cpp +4 -0
  421. data/platform/shared/qt/rhodes/impl/GeoLocationImpl.cpp +6 -0
  422. data/platform/shared/qt/rhodes/impl/MainWindowImpl.cpp +7 -0
  423. data/platform/shared/qt/rhodes/impl/MainWindowImpl.h +2 -0
  424. data/platform/shared/qt/rhodes/impl/PhonebookImpl.cpp +4 -0
  425. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +5 -0
  426. data/platform/shared/qt/rhodes/impl/WebViewImpl.cpp +12 -0
  427. data/platform/shared/qt/rhodes/main.cpp +0 -7
  428. data/platform/shared/qt/rhodes/resources/rho.icns +0 -0
  429. data/platform/shared/qt/rhodes/resources/rho.ico +0 -0
  430. data/platform/shared/qt/rhodes/resources/rho.png +0 -0
  431. data/platform/shared/ruby/encoding.c +4 -0
  432. data/platform/shared/ruby/ext/calendar/calendar.i +3 -0
  433. data/platform/shared/ruby/ext/calendar/calendar_wrap.c +19 -0
  434. data/platform/shared/ruby/ext/camera/camera.i +2 -0
  435. data/platform/shared/ruby/ext/camera/camera_wrap.c +43 -2
  436. data/platform/shared/ruby/ext/geolocation/geolocation.i +4 -0
  437. data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +24 -4
  438. data/platform/shared/ruby/ext/phonebook/phonebook.i +4 -0
  439. data/platform/shared/ruby/ext/phonebook/phonebook_wrap.c +44 -0
  440. data/platform/shared/ruby/ext/rho/extensions.c +0 -2
  441. data/platform/shared/ruby/ext/rho/rhoruby.c +2 -0
  442. data/platform/shared/ruby/ext/rho/rhosupport.c +8 -0
  443. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +1 -1
  444. data/platform/shared/ruby/ext/syncengine/syncengine.i +6 -2
  445. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +19 -6
  446. data/platform/shared/ruby/ext/system/system.i +22 -0
  447. data/platform/shared/ruby/ext/system/system_wrap.c +158 -86
  448. data/platform/shared/ruby/ext/webview/webview.i +13 -8
  449. data/platform/shared/ruby/ext/webview/webview_wrap.c +88 -2
  450. data/platform/shared/ruby/include/ruby/win32.h +3 -1
  451. data/platform/shared/ruby/iphone/ruby/config.h +3 -3
  452. data/platform/shared/ruby/missing/hypot.c +4 -0
  453. data/platform/shared/ruby/random.c +6 -2
  454. data/platform/shared/ruby/thread_win32.c +8 -3
  455. data/platform/shared/ruby/win32/ruby/config.h +0 -3
  456. data/platform/shared/ruby/win32/win32.c +4 -0
  457. data/platform/shared/ruby/wp8/assert.c +12 -0
  458. data/platform/shared/ruby/wp8/assert.h +18 -0
  459. data/platform/shared/ruby/wp8/errno.c +11 -0
  460. data/platform/shared/ruby/wp8/errno.h +59 -0
  461. data/platform/shared/ruby/wp8/missing_wp8.h +74 -0
  462. data/platform/shared/ruby/wp8/signal.h +71 -0
  463. data/platform/shared/ruby/wp8/signal_wp8.c +26 -0
  464. data/platform/shared/ruby/wp8/stdio.c +36 -0
  465. data/platform/shared/ruby/wp8/stdlib.c +61 -0
  466. data/platform/shared/ruby/wp8/string_wp8.c +89 -0
  467. data/platform/shared/ruby/wp8/sys/stat.c +183 -0
  468. data/platform/shared/ruby/wp8/sys/stat.h +70 -0
  469. data/platform/shared/ruby/wp8/sys/timeb.c +31 -0
  470. data/platform/shared/ruby/wp8/sys/timeb.h +27 -0
  471. data/platform/shared/ruby/wp8/sys/types.h +62 -0
  472. data/platform/shared/ruby/wp8/sys/utime.c +44 -0
  473. data/platform/shared/ruby/wp8/sys/utime.h +27 -0
  474. data/platform/shared/ruby/wp8/time_wp8.c +256 -0
  475. data/platform/shared/ruby/wp8/varargs.h +34 -0
  476. data/platform/shared/ruby/wp8/win32/win32.c +5783 -0
  477. data/platform/shared/ruby/wp8/winsock_wp8.c +26 -0
  478. data/platform/shared/ruby/wp8/winsock_wp8.h +23 -0
  479. data/platform/shared/ruby/wp8/wp8.c +516 -0
  480. data/platform/shared/ruby/wp8/wp8.h +274 -0
  481. data/platform/shared/ruby/wp8/wp8main.c +18 -0
  482. data/platform/shared/rubyext/GeoLocation.cpp +1 -1
  483. data/platform/shared/rubyext/System.cpp +18 -4
  484. data/platform/shared/rubyext/ZipFiles.cpp +1 -1
  485. data/platform/shared/sync/ClientRegister.cpp +113 -23
  486. data/platform/shared/sync/ClientRegister.h +27 -16
  487. data/platform/shared/sync/ILoginListener.h +44 -0
  488. data/platform/shared/sync/SyncEngine.cpp +50 -24
  489. data/platform/shared/sync/SyncEngine.h +11 -5
  490. data/platform/shared/sync/SyncSource.cpp +87 -61
  491. data/platform/shared/sync/SyncSource.h +6 -3
  492. data/platform/shared/sync/SyncThread.cpp +8 -15
  493. data/platform/shared/sync/SyncThread.h +13 -7
  494. data/platform/shared/unzip/unzip.cpp +1 -1
  495. data/platform/shared/unzip/zip.h +8 -1
  496. data/platform/shared/xruby/src/com/xruby/runtime/builtin/AttrReader.java +13 -0
  497. data/platform/shared/xruby/src/com/xruby/runtime/builtin/RubyFixnum.java +3 -1
  498. data/platform/shared/xruby/src/com/xruby/runtime/lang/MethodBlockBase.java +9 -0
  499. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyBasic.java +9 -0
  500. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyBinding.java +17 -0
  501. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyMethod.java +22 -2
  502. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyModule.java +25 -0
  503. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyObject.java +21 -0
  504. data/platform/shared/xruby/src/com/xruby/runtime/lang/RubyValue.java +8 -0
  505. data/platform/symbian/rhodes/src/phonebook/ruby_phonebook.cpp +6 -0
  506. data/platform/win32/RhoSimulator/Microsoft.VC90.CRT.manifest +12 -5
  507. data/platform/win32/RhoSimulator/Microsoft.VC90.OpenMP.manifest +12 -5
  508. data/platform/win32/RhoSimulator/QtCore4.dll +0 -0
  509. data/platform/win32/RhoSimulator/QtGui4.dll +0 -0
  510. data/platform/win32/RhoSimulator/QtNetwork4.dll +0 -0
  511. data/platform/win32/RhoSimulator/QtWebKit4.dll +0 -0
  512. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  513. data/platform/win32/RhoSimulator/imageformats/qgif4.dll +0 -0
  514. data/platform/win32/RhoSimulator/imageformats/qico4.dll +0 -0
  515. data/platform/win32/RhoSimulator/imageformats/qjpeg4.dll +0 -0
  516. data/platform/win32/RhoSimulator/imageformats/qmng4.dll +0 -0
  517. data/platform/win32/RhoSimulator/imageformats/qsvg4.dll +0 -0
  518. data/platform/win32/RhoSimulator/imageformats/qtiff4.dll +0 -0
  519. data/platform/win32/RhoSimulator/msvcm90.dll +0 -0
  520. data/platform/win32/RhoSimulator/msvcp90.dll +0 -0
  521. data/platform/win32/RhoSimulator/msvcr90.dll +0 -0
  522. data/platform/win32/RhoSimulator/phonon4.dll +0 -0
  523. data/platform/win32/RhoSimulator/vcomp90.dll +0 -0
  524. data/platform/wm/build/wm.rake +67 -22
  525. data/platform/wm/rhodes.sln +485 -493
  526. data/platform/wm/rhodes/IEBrowserEngine.cpp +2 -6
  527. data/platform/wm/rhodes/MainWindow.cpp +86 -35
  528. data/platform/wm/rhodes/MainWindow.h +33 -0
  529. data/platform/wm/rhodes/Rhodes.cpp +288 -215
  530. data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +22 -17
  531. data/platform/wm/rhodes/bluetooth/Bluetooth.h +3 -3
  532. data/platform/wm/rhodes/camera/Camera.cpp +4 -0
  533. data/platform/wm/rhodes/camera/Camera.h +1 -0
  534. data/platform/wm/rhodes/phonebook/phonebook.cpp +9 -0
  535. data/platform/wm/rhodes/phonebook/phonebook.h +2 -0
  536. data/platform/wm/rhodes/resources/icon.ico +0 -0
  537. data/platform/wm/rhodes/rho/common/ExtManager.cpp +5 -1
  538. data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +1 -11
  539. data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.cpp +5 -0
  540. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +21 -2
  541. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +12 -0
  542. data/platform/wm/rhodes/rho/rubyext/calendar.cpp +9 -0
  543. data/platform/wm/rhodes/rhodes.vcproj +60 -60
  544. data/platform/wm/rhodes/simulator/MainWindowQt.cpp +91 -6
  545. data/platform/wm/rhodes/simulator/MainWindowQt.h +6 -0
  546. data/platform/wm/rhoelements.sln +624 -623
  547. data/platform/wm/tcmalloc/tcmalloc.vcproj +1230 -1070
  548. data/platform/wp7/RhoRubyLib/rubyext/RhoCamera.cs +6 -3
  549. data/platform/wp7/rhodes/Properties/WMAppManifest.xml +5 -0
  550. data/platform/wp7/rhodes/icon.png +0 -0
  551. data/platform/wp8/RhoAppRunner/Program.cs +99 -0
  552. data/platform/wp8/RhoAppRunner/Properties/AssemblyInfo.cs +36 -0
  553. data/platform/wp8/RhoAppRunner/RhoAppRunner.csproj +69 -0
  554. data/platform/wp8/build/wp.rake +486 -0
  555. data/platform/wp8/rhodes.sln +154 -0
  556. data/platform/wp8/rhodes/App.xaml +20 -0
  557. data/platform/wp8/rhodes/App.xaml.cs +189 -0
  558. data/platform/wp8/rhodes/Assets/ApplicationIcon.png +0 -0
  559. data/platform/wp8/rhodes/Assets/Tiles/FlipCycleTileMedium.png +0 -0
  560. data/platform/wp8/rhodes/Assets/Tiles/FlipCycleTileSmall.png +0 -0
  561. data/platform/wp8/rhodes/LocalizedStrings.cs +37 -0
  562. data/platform/wp8/rhodes/MainPage.xaml +21 -0
  563. data/platform/wp8/rhodes/MainPage.xaml.cs +339 -0
  564. data/platform/wp8/rhodes/Properties/AppManifest.xml +6 -0
  565. data/platform/wp8/rhodes/Properties/AssemblyInfo.cs +37 -0
  566. data/platform/wp8/rhodes/Properties/WMAppManifest.xml +47 -0
  567. data/platform/wp8/rhodes/Resources/AppResources.Designer.cs +127 -0
  568. data/platform/wp8/rhodes/Resources/AppResources.resx +135 -0
  569. data/platform/wp8/rhodes/common/IInputStream.cs +47 -0
  570. data/platform/wp8/rhodes/common/RhoFile.cs +374 -0
  571. data/platform/wp8/rhodes/common/RhoFilePath.cs +115 -0
  572. data/platform/wp8/rhodes/common/RhoResourceMap.cs +92 -0
  573. data/platform/wp8/rhodes/common/RhoStd.cs +237 -0
  574. data/platform/wp8/rhodes/icon.png +0 -0
  575. data/platform/wp8/rhodes/rhodes.csproj +198 -0
  576. data/platform/wp8/rholib/rholib.vcxproj +240 -0
  577. data/platform/wp8/rholib/rholib.vcxproj.filters +289 -0
  578. data/platform/wp8/rhoruntime/FakeDefs.cpp +134 -0
  579. data/platform/wp8/rhoruntime/common/ExtManager.cpp +449 -0
  580. data/platform/wp8/rhoruntime/common/RhoClassFactory.cpp +58 -0
  581. data/platform/wp8/rhoruntime/common/RhoClassFactory.h +60 -0
  582. data/platform/wp8/rhoruntime/common/RhoCryptImpl.cpp +274 -0
  583. data/platform/wp8/rhoruntime/common/RhoCryptImpl.h +78 -0
  584. data/platform/wp8/rhoruntime/common/RhoThreadImpl.cpp +109 -0
  585. data/platform/wp8/rhoruntime/common/RhoThreadImpl.h +56 -0
  586. data/platform/wp8/rhoruntime/pch_rhoruntime.cpp +27 -0
  587. data/platform/wp8/rhoruntime/pch_rhoruntime.h +30 -0
  588. data/platform/wp8/rhoruntime/rhoruntime.cpp +93 -0
  589. data/platform/wp8/rhoruntime/rhoruntime.h +114 -0
  590. data/platform/wp8/rhoruntime/rhoruntime.vcxproj +175 -0
  591. data/platform/wp8/rhoruntime/rhoruntime.vcxproj.filters +44 -0
  592. data/platform/wp8/rubylib/file.c +5459 -0
  593. data/platform/wp8/rubylib/rubylib.vcxproj +286 -0
  594. data/platform/wp8/rubylib/rubylib.vcxproj.filters +307 -0
  595. data/platform/wp8/sqlite3/crypto.c +933 -0
  596. data/platform/wp8/sqlite3/sqlite3.c +136332 -0
  597. data/platform/wp8/sqlite3/sqlite3.vcxproj +149 -0
  598. data/platform/wp8/sqlite3/sqlite3.vcxproj.filters +16 -0
  599. data/platform/wp8/syncengine/syncengine.vcxproj +199 -0
  600. data/platform/wp8/syncengine/syncengine.vcxproj.filters +155 -0
  601. data/rakefile.rb +61 -9
  602. data/res/build-tools/RhoAppRunnerWP8.exe +0 -0
  603. data/res/build-tools/license_rc.dll +0 -0
  604. data/res/build-tools/win32/license_rc.dll +0 -0
  605. data/res/build-tools/xruby-0.3.3.jar +0 -0
  606. data/res/generators/rhogen.rb +36 -0
  607. data/res/generators/templates/application/app/loading-568h@2x.png +0 -0
  608. data/res/generators/templates/application/app/loading-Landscape.png +0 -0
  609. data/res/generators/templates/application/app/loading-LandscapeLeft.png +0 -0
  610. data/res/generators/templates/application/app/loading-LandscapeRight.png +0 -0
  611. data/res/generators/templates/application/app/loading-Portrait.png +0 -0
  612. data/res/generators/templates/application/app/loading-PortraitUpsideDown.png +0 -0
  613. data/res/generators/templates/application/app/loading.png +0 -0
  614. data/res/generators/templates/application/app/loading@2x.png +0 -0
  615. data/res/generators/templates/application/icon/icon.ico +0 -0
  616. data/res/generators/templates/application/icon/icon.png +0 -0
  617. data/res/generators/templates/application/icon/icon114.png +0 -0
  618. data/res/generators/templates/application/icon/icon57.png +0 -0
  619. data/res/generators/templates/application/icon/icon72.png +0 -0
  620. data/res/generators/templates/application/public/css/android.css +1 -1
  621. data/res/generators/templates/application/public/jqmobile/images/icon-search-black.png +0 -0
  622. data/res/generators/templates/application/rhoconfig.txt +3 -1
  623. data/res/generators/templates/model/model.rb +1 -1
  624. data/res/icons/rho.icns +0 -0
  625. data/res/icons/rho.ico +0 -0
  626. data/res/icons/rho.png +0 -0
  627. data/res/icons/rhodes.icns +0 -0
  628. data/res/icons/rhodes.ico +0 -0
  629. data/res/icons/rhodes.png +0 -0
  630. data/res/icons/rhosim.icns +0 -0
  631. data/res/icons/rhosim.ico +0 -0
  632. data/res/icons/rhosim.png +0 -0
  633. data/res/libs/motorolalicence/android/MotorolaLicence.h +2 -1
  634. data/res/libs/motorolalicence/android/libMotorolaLicence.a +0 -0
  635. data/res/libs/motorolalicence/iphone/MotorolaLicence.h +2 -1
  636. data/res/libs/motorolalicence/iphone/libMotorolaLicence.a +0 -0
  637. data/spec/autocomplete_generator/Rakefile +37 -0
  638. data/spec/autocomplete_generator/app/Generator/controller.rb +40 -0
  639. data/spec/autocomplete_generator/app/Generator/generator.rb +236 -0
  640. data/spec/autocomplete_generator/app/Generator/index.erb +21 -0
  641. data/spec/autocomplete_generator/app/Settings/controller.rb +117 -0
  642. data/spec/autocomplete_generator/app/Settings/err_sync.erb +11 -0
  643. data/spec/autocomplete_generator/app/Settings/home.bb.erb +18 -0
  644. data/spec/autocomplete_generator/app/Settings/home.erb +19 -0
  645. data/spec/autocomplete_generator/app/Settings/index.bb.erb +31 -0
  646. data/spec/autocomplete_generator/app/Settings/index.erb +31 -0
  647. data/spec/autocomplete_generator/app/Settings/login.bb.erb +29 -0
  648. data/spec/autocomplete_generator/app/Settings/login.erb +25 -0
  649. data/spec/autocomplete_generator/app/Settings/reset.bb.erb +16 -0
  650. data/spec/autocomplete_generator/app/Settings/reset.erb +14 -0
  651. data/spec/autocomplete_generator/app/Settings/wait.bb.erb +10 -0
  652. data/spec/autocomplete_generator/app/Settings/wait.erb +10 -0
  653. data/spec/autocomplete_generator/app/application.rb +16 -0
  654. data/spec/autocomplete_generator/app/helpers/application_helper.rb +129 -0
  655. data/spec/autocomplete_generator/app/helpers/browser_helper.rb +22 -0
  656. data/spec/autocomplete_generator/app/index.bb.erb +21 -0
  657. data/spec/autocomplete_generator/app/index.erb +24 -0
  658. data/spec/autocomplete_generator/app/layout.erb +94 -0
  659. data/spec/autocomplete_generator/app/loading.html +11 -0
  660. data/spec/autocomplete_generator/build.yml +41 -0
  661. data/spec/autocomplete_generator/icon/icon.ico +0 -0
  662. data/spec/autocomplete_generator/icon/icon.png +0 -0
  663. data/spec/autocomplete_generator/icon/icon.svg +5334 -0
  664. data/spec/autocomplete_generator/icon/icon114.png +0 -0
  665. data/spec/autocomplete_generator/icon/icon57.png +0 -0
  666. data/spec/autocomplete_generator/icon/icon72.png +0 -0
  667. data/spec/autocomplete_generator/readme.txt +1 -0
  668. data/spec/autocomplete_generator/rhoconfig.txt +88 -0
  669. data/spec/autocomplete_generator/rhosimulator/Databases/Databases.db +0 -0
  670. data/spec/autocomplete_generator/rhosimulator/WebpageIcons.db +0 -0
  671. data/spec/autocomplete_generator/rhosimulator/db/syncdbuser.sqlite +0 -0
  672. data/spec/autocomplete_generator/rhosimulator/db/syncdbuser.sqlite.version +1 -0
  673. data/spec/autocomplete_generator/rhosimulator/rholog.txt_pos +1 -0
  674. data/spec/autocomplete_generator/rhosimulator/rhosimconfig.txt +8 -0
  675. data/spec/framework_spec/app/spec/rhomobile/NetHttp_spec.rb +22 -0
  676. data/spec/framework_spec/app/spec_runner.rb +12 -0
  677. data/spec/framework_spec/icon/icon.ico +0 -0
  678. data/spec/framework_spec/icon/icon.png +0 -0
  679. data/spec/perfomance_spec/icon/icon.ico +0 -0
  680. data/spec/perfomance_spec/icon/icon.png +0 -0
  681. data/spec/phone_spec/app/BlobBulkTest/blob_bulk_test.png +0 -0
  682. data/spec/phone_spec/app/BlobBulkTest_s/blob_bulk_test_s.png +0 -0
  683. data/spec/phone_spec/app/PartialTest/_index_partial.erb +5 -0
  684. data/spec/phone_spec/app/PartialTest/_index_partial_nested.erb +2 -0
  685. data/spec/phone_spec/app/PartialTest/index.erb +6 -0
  686. data/spec/phone_spec/app/spec/blob_bulksync_spec.rb +5 -3
  687. data/spec/phone_spec/app/spec/bulksync_spec.rb +33 -41
  688. data/spec/phone_spec/app/spec/database_spec.rb +5 -0
  689. data/spec/phone_spec/app/spec/json_spec.rb +50 -50
  690. data/spec/phone_spec/app/spec/rho_controller_spec.rb +29 -0
  691. data/spec/phone_spec/app/spec/syncengine_spec.rb +184 -47
  692. data/spec/phone_spec/app/spec_runner.rb +3 -2
  693. data/spec/phone_spec/icon/icon.ico +0 -0
  694. data/spec/phone_spec/icon/icon.png +0 -0
  695. data/spec/phone_spec/rhoconfig.txt +2 -0
  696. data/version +1 -1
  697. metadata +339 -47
  698. data/platform/android/Rhodes/PushReceiver.erb +0 -14
  699. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +0 -126
  700. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +0 -83
  701. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/Config.java +0 -246
  702. data/platform/bb/rhodes/src/com/rho/rubyext/PNGEncoder.java +0 -613
  703. data/res/icons/rho.psd +0 -0
  704. data/res/icons/rhodes.psd +0 -0
  705. data/res/icons/rhosim.psd +0 -0
@@ -8,8 +8,7 @@
8
8
  #include <webvw.h>
9
9
  #endif
10
10
 
11
- extern "C" int rho_wm_impl_CheckLicense();
12
- extern "C" int rho_wm_impl_CheckSymbolDevice();
11
+ extern "C" void rho_wm_impl_CheckLicense();
13
12
 
14
13
  CIEBrowserEngine::CIEBrowserEngine(HWND hParentWnd, HINSTANCE hInstance) :
15
14
  m_spIWebBrowser2(NULL)
@@ -177,9 +176,6 @@ LRESULT CIEBrowserEngine::OnWebKitMessages(UINT uMsg, WPARAM wParam, LPARAM lPar
177
176
 
178
177
  void CIEBrowserEngine::RunMessageLoop(CMainWindow& mainWnd)
179
178
  {
180
- if (!rho_wm_impl_CheckSymbolDevice())
181
- return;
182
-
183
179
  MSG msg;
184
180
  while (GetMessage(&msg, NULL, 0, 0))
185
181
  {
@@ -243,7 +239,7 @@ void CIEBrowserEngine::OnDocumentComplete(LPCTSTR url)
243
239
  {
244
240
  if(!m_bLoadingComplete && wcscmp(url,_T("about:blank"))!=0)
245
241
  {
246
- rho_wm_impl_CheckLicense();
242
+ rho_wm_impl_CheckLicense();
247
243
  m_bLoadingComplete = true;
248
244
  }
249
245
  }
@@ -275,6 +275,8 @@ LRESULT CMainWindow::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*
275
275
 
276
276
  rho_rhodesapp_callUiCreatedCallback();
277
277
 
278
+ RHODESAPP().setNetworkStatusMonitor(&m_networkStatusMonitor);
279
+
278
280
  return 0;
279
281
  }
280
282
 
@@ -579,6 +581,15 @@ LRESULT CMainWindow::OnAuthenticationRequest (UINT /*uMsg*/, WPARAM wParam, LPAR
579
581
 
580
582
  #endif //APP_BUILD_CAPABILITY_WEBKIT_BROWSER
581
583
 
584
+ LRESULT CMainWindow::OnWindowMinimized (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
585
+ {
586
+ ProcessActivate( FALSE, MAKEWPARAM(0,1), 0 );
587
+
588
+ ::ShowWindow( m_hWnd, SW_MINIMIZE );
589
+
590
+ return 0;
591
+ }
592
+
582
593
  LRESULT CMainWindow::OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
583
594
  {
584
595
  int fActive = LOWORD(wParam);
@@ -587,12 +598,18 @@ LRESULT CMainWindow::OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOO
587
598
  if (lParam) //We get activate from some internal window
588
599
  {
589
600
  #if defined(_WIN32_WCE)
590
- if (m_bFullScreen && fActive && (getSIPVisibleTop()<0))
591
- RhoSetFullScreen(true);
601
+ if (m_bFullScreen && fActive && (getSIPVisibleTop()<0))
602
+ RhoSetFullScreen(true);
592
603
  #endif
593
604
  return 0;
594
605
  }
595
606
 
607
+ ProcessActivate( fActive, wParam, lParam );
608
+ return 0;
609
+ }
610
+
611
+ void CMainWindow::ProcessActivate( BOOL fActive, WPARAM wParam, LPARAM lParam )
612
+ {
596
613
  #if defined(_WIN32_WCE)
597
614
  if (m_bFullScreen)
598
615
  RhoSetFullScreen(fActive!=0);
@@ -602,24 +619,10 @@ LRESULT CMainWindow::OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOO
602
619
  #if defined(_WIN32_WCE) && !defined (OS_PLATFORM_MOTCE)
603
620
  // Notify shell of our WM_ACTIVATE message
604
621
  SHHandleWMActivate(m_hWnd, wParam, lParam, &m_sai, 0);
605
-
606
- //pause_sync(!fActive);
607
- /* TBD: Commented this out because it was called before http server started
608
- We need to fix this properly
609
- if ( fActive )
610
- CHttpServer::Instance()->ResumeThread();
611
- else
612
- CHttpServer::Instance()->FreezeThread();
613
- */
614
- //activate calls after javascript alerts, so we have viciouse cycle if alert is display in home page
615
- //if ( rho::common::CRhodesApp::getInstance() != null )
616
- // RHODESAPP().callAppActiveCallback(fActive!=0);
617
-
618
622
  #endif
619
623
 
620
624
  if (!fActive)
621
625
  rho_geoimpl_turngpsoff();
622
- return 0;
623
626
  }
624
627
 
625
628
  LRESULT CMainWindow::OnSetCookieCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
@@ -863,26 +866,57 @@ LRESULT CMainWindow::OnHotKey (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
863
866
 
864
867
  return 1;
865
868
  }
869
+ extern "C" HWND getMainWnd();
870
+ BOOL EnumChildProc(HWND hwnd,LPARAM lParam)
871
+ {
872
+ if ( getMainWnd() != ::GetParent(hwnd) )
873
+ return TRUE;
874
+
875
+ wchar_t szBuf[200];
876
+ GetWindowText(hwnd, szBuf, 199);
877
+ if (!*szBuf)
878
+ return TRUE;
879
+
880
+ DWORD dwStyles = GetWindowLong(hwnd, GWL_STYLE);
881
+ //LOG(INFO) + "Child: " + szBuf + "Styles: " + LOGFMT("0x%X") + dwStyles + "Popup: " + (((dwStyles&WS_POPUP) != 0) ? "1" : "0");
882
+
883
+ if ( *((HWND*)lParam) != hwnd && (dwStyles&WS_POPUP) != 0 )
884
+ {
885
+ HWND* pWnd = (HWND*)lParam;
886
+ *pWnd = hwnd;
887
+ return FALSE;
888
+ }
889
+
890
+ return TRUE;
891
+ }
866
892
 
867
893
  LRESULT CMainWindow::OnSetFocus (UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
868
894
  {
869
- HWND hBrowserWnd = m_pBrowserEng ? m_pBrowserEng->GetHTMLWND() : NULL;
895
+ HWND hWndLostFocus = (HWND)wParam;
896
+ WCHAR wWindowName[30];
897
+ if (hWndLostFocus && GetClassName(hWndLostFocus, wWindowName, 30))
898
+ {
899
+ // Allow the following windows to remain having focus, avoids
900
+ // the bug where we're unable to select anything from a combo
901
+ // box
902
+ if (wcscmp(wWindowName, L"PopupWindowClass") == 0)
903
+ return 0;
904
+ }
870
905
 
871
- if (hBrowserWnd && !::IsIconic(m_hWnd))
906
+ //Look for popup window
907
+ HWND hChildPopUp = hWndLostFocus;
908
+ EnumWindows( EnumChildProc, (LPARAM)&hChildPopUp);
909
+ if ( hChildPopUp && hChildPopUp != hWndLostFocus)
910
+ {
911
+ ::SetFocus(hChildPopUp);
912
+ return 0;
913
+ }
914
+
915
+ HWND hBrowserWnd = m_pBrowserEng ? m_pBrowserEng->GetHTMLWND() : NULL;
916
+ if (hBrowserWnd && ::IsWindowVisible(m_hWnd) ) //!::IsIconic(m_hWnd))
872
917
  {
873
- HWND hWndLostFocus = (HWND)wParam;
874
918
  if (hWndLostFocus == hBrowserWnd)
875
919
  return 0;
876
-
877
- WCHAR wWindowName[30];
878
- if (hWndLostFocus && GetClassName(hWndLostFocus, wWindowName, 30))
879
- {
880
- // Allow the following windows to remain having focus, avoids
881
- // the bug where we're unable to select anything from a combo
882
- // box
883
- if (wcscmp(wWindowName, L"PopupWindowClass") == 0)
884
- return 0;
885
- }
886
920
  ::SetFocus(hBrowserWnd);
887
921
  }
888
922
 
@@ -994,7 +1028,9 @@ LRESULT CMainWindow::OnStopNavigate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWn
994
1028
 
995
1029
  LRESULT CMainWindow::OnZoomPage(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
996
1030
  {
997
- float fZoom = (float)(long)(hWndCtl);
1031
+ CRhoFloatData* pFloatData = (CRhoFloatData*)(hWndCtl);
1032
+ float fZoom = pFloatData->m_fValue;
1033
+ delete pFloatData;
998
1034
  if ( m_pBrowserEng )
999
1035
  m_pBrowserEng->ZoomPageOnTab(fZoom, rho_webview_active_tab());
1000
1036
 
@@ -1059,6 +1095,7 @@ LRESULT CMainWindow::OnConnectionsNetworkCount(UINT /*uMsg*/, WPARAM wParam, LPA
1059
1095
  #if defined (_WIN32_WCE)
1060
1096
 
1061
1097
  rho_sysimpl_sethas_network( wParam );
1098
+ m_networkStatusMonitor.notifyReceiver( ((int)wParam!=0)?rho::common::networkStatusConnected:rho::common::networkStatusDisconnected );
1062
1099
 
1063
1100
  #endif
1064
1101
  return 0;
@@ -1069,6 +1106,7 @@ LRESULT CMainWindow::OnConnectionsNetworkCell(UINT /*uMsg*/, WPARAM wParam, LPAR
1069
1106
  #if defined (_WIN32_WCE)
1070
1107
 
1071
1108
  rho_sysimpl_sethas_cellnetwork( (int)wParam );
1109
+ m_networkStatusMonitor.notifyReceiver( (wParam!=0)?rho::common::networkStatusConnected:rho::common::networkStatusDisconnected );
1072
1110
 
1073
1111
  #endif
1074
1112
  return 0;
@@ -1125,11 +1163,11 @@ LRESULT CMainWindow::OnAlertShowPopup (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM
1125
1163
  m_SyncStatusDlg.setTitle( convertToStringW(params->m_title).c_str() );
1126
1164
  if ( !m_SyncStatusDlg.m_hWnd )
1127
1165
  m_SyncStatusDlg.Create(m_hWnd, 0);
1128
- else
1129
- {
1130
- m_SyncStatusDlg.ShowWindow(SW_SHOW);
1131
- m_SyncStatusDlg.BringWindowToTop();
1132
- }
1166
+ //else
1167
+ //{
1168
+ m_SyncStatusDlg.ShowWindow(SW_SHOW);
1169
+ m_SyncStatusDlg.BringWindowToTop();
1170
+ //}
1133
1171
  }else if (params->m_dlgType == CAlertDialog::Params::DLG_DEFAULT) {
1134
1172
  MessageBox(convertToStringW(params->m_message).c_str(), strAppName.c_str(), MB_ICONWARNING | MB_OK);
1135
1173
  RHODESAPP().callPopupCallback(params->m_callback, "ok", "ok");
@@ -1201,6 +1239,13 @@ LRESULT CMainWindow::OnExecuteCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM lPara
1201
1239
  }
1202
1240
 
1203
1241
 
1242
+ LRESULT CMainWindow::OnLicenseWarning (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
1243
+ {
1244
+ ::MessageBoxW( m_hWnd, L"Please provide RhoElements license key.", L"Motorola License", MB_ICONERROR | MB_OK);
1245
+
1246
+ return 0;
1247
+ }
1248
+
1204
1249
  LRESULT CMainWindow::OnLicenseScreen(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
1205
1250
  {
1206
1251
  LOG(INFO) + "OnLicenseScreen";
@@ -1215,6 +1260,12 @@ LRESULT CMainWindow::OnLicenseScreen(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam
1215
1260
  }*/
1216
1261
  }
1217
1262
  #endif
1263
+
1264
+ //Fix issue with lost focus after License Screen hides
1265
+ HWND hBrowserWnd = m_pBrowserEng ? m_pBrowserEng->GetHTMLWND() : NULL;
1266
+ if (hBrowserWnd && !::IsIconic(m_hWnd))
1267
+ ::SetFocus(hBrowserWnd);
1268
+
1218
1269
  return 0;
1219
1270
  }
1220
1271
 
@@ -103,6 +103,8 @@ static UINT WM_BLUETOOTH_DISCOVERED = ::RegisterWindowMessage(L"RHODES_WM_BLU
103
103
  static UINT WM_BLUETOOTH_CALLBACK = ::RegisterWindowMessage(L"RHODES_WM_BLUETOOTH_CALLBACK");
104
104
  static UINT WM_EXECUTE_COMMAND = ::RegisterWindowMessage(L"RHODES_WM_EXECUTE_COMMAND");
105
105
  static UINT WM_EXECUTE_RUNNABLE = ::RegisterWindowMessage(L"RHODES_WM_EXECUTE_RUNNABLE");
106
+ static UINT WM_WINDOW_MINIMIZE = ::RegisterWindowMessage(L"RHODES_WM_MINIMIZE");
107
+ static UINT WM_SHOW_LICENSE_WARNING = ::RegisterWindowMessage(L"RHOELEMENTS_WM_LICENSE_WARNING");
106
108
  extern UINT WM_LICENSE_SCREEN;
107
109
 
108
110
  typedef struct _TCookieData {
@@ -110,6 +112,29 @@ typedef struct _TCookieData {
110
112
  char* cookie;
111
113
  } TCookieData;
112
114
 
115
+ namespace rho
116
+ {
117
+ namespace common
118
+ {
119
+ class WMNetworkStatusMonitor : public INetworkStatusMonitor
120
+ {
121
+ INetworkStatusReceiver* m_pReceiver;
122
+ public:
123
+ WMNetworkStatusMonitor() : m_pReceiver(0) {}
124
+ virtual void setPollInterval(int pollInterval) {}
125
+ virtual void setNetworkStatusReceiver(INetworkStatusReceiver* receiver) { m_pReceiver = receiver; }
126
+ void notifyReceiver( enNetworkStatus status )
127
+ {
128
+ if (m_pReceiver != 0)
129
+ {
130
+ m_pReceiver->onNetworkStatusChanged(status);
131
+ }
132
+ }
133
+ };
134
+
135
+ }
136
+ }
137
+
113
138
  class CMainWindow :
114
139
  #if defined(_WIN32_WCE)&& !defined( OS_PLATFORM_MOTCE )
115
140
  public CFrameWindowImpl<CMainWindow>,
@@ -210,6 +235,8 @@ public:
210
235
  MESSAGE_HANDLER(WM_BLUETOOTH_CALLBACK, OnBluetoothCallback);
211
236
  MESSAGE_HANDLER(WM_EXECUTE_COMMAND, OnExecuteCommand);
212
237
  MESSAGE_HANDLER(WM_EXECUTE_RUNNABLE, OnExecuteRunnable);
238
+ MESSAGE_HANDLER(WM_WINDOW_MINIMIZE, OnWindowMinimized);
239
+ MESSAGE_HANDLER(WM_SHOW_LICENSE_WARNING, OnLicenseWarning);
213
240
  MESSAGE_HANDLER(WM_LICENSE_SCREEN, OnLicenseScreen);
214
241
  MESSAGE_HANDLER(WM_SETFOCUS, OnSetFocus);
215
242
  MESSAGE_HANDLER(WM_HOTKEY, OnHotKey);
@@ -279,6 +306,8 @@ private:
279
306
  LRESULT OnBluetoothCallback (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
280
307
  LRESULT OnExecuteCommand (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
281
308
  LRESULT OnExecuteRunnable (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
309
+ LRESULT OnWindowMinimized (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
310
+ LRESULT OnLicenseWarning (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
282
311
  LRESULT OnLicenseScreen (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
283
312
  LRESULT OnSetFocus (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
284
313
  LRESULT OnHotKey (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
@@ -389,6 +418,10 @@ private:
389
418
  CAlertDialog *m_alertDialog;
390
419
 
391
420
  CSyncStatusDlg m_SyncStatusDlg;
421
+
422
+ WMNetworkStatusMonitor m_networkStatusMonitor;
423
+
424
+ void ProcessActivate( BOOL fActive, WPARAM wParam, LPARAM lParam );
392
425
  };
393
426
 
394
427
  #if !defined(_WIN32_WCE) || defined( OS_PLATFORM_MOTCE )
@@ -51,7 +51,7 @@ using namespace stdext;
51
51
  typedef unsigned long VALUE;
52
52
  #endif //!RUBY_RUBY_H
53
53
 
54
- char* parseToken( const char* start, int len );
54
+ LPTSTR parseToken(LPCTSTR start, LPCTSTR* next_token);
55
55
  extern "C" void rho_ringtone_manager_stop();
56
56
  extern "C" void rho_sysimpl_sethas_network(int nValue);
57
57
  extern "C" void rho_sysimpl_sethas_cellnetwork(int nValue);
@@ -64,6 +64,12 @@ extern "C" void rho_webview_navigate(const char* url, int index);
64
64
  class CEng;
65
65
  extern rho::IBrowserEngine* rho_wmimpl_get_webkitBrowserEngine(HWND hwndParent, HINSTANCE rhoAppInstance);
66
66
  extern "C" CEng* rho_wmimpl_get_webkitbrowser(HWND hParentWnd, HINSTANCE hInstance);
67
+ #else
68
+ extern "C" void rho_wm_impl_SetApplicationLicenseObj(void* pAppLicenseObj)
69
+ {
70
+ if (pAppLicenseObj)
71
+ delete pAppLicenseObj;
72
+ }
67
73
  #endif // APP_BUILD_CAPABILITY_WEBKIT_BROWSER
68
74
  #ifdef APP_BUILD_CAPABILITY_SHARED_RUNTIME
69
75
  extern "C" {
@@ -75,7 +81,7 @@ extern "C" {
75
81
  bool rho_wmimpl_get_fullscreen();
76
82
  void rho_wmimpl_set_is_version2(const char* path);
77
83
  bool rho_wmimpl_get_is_version2();
78
-
84
+ const wchar_t* rho_wmimpl_sharedconfig_getvalue(const wchar_t* szName);
79
85
  #if !defined( APP_BUILD_CAPABILITY_WEBKIT_BROWSER ) && !defined(APP_BUILD_CAPABILITY_MOTOROLA)
80
86
  bool rho_wmimpl_get_is_version2(){ return 1;}
81
87
  void rho_wmimpl_set_is_version2(const char* path){}
@@ -90,6 +96,7 @@ extern "C" {
90
96
  const char* rho_wmimpl_get_logpath(){ return ""; }
91
97
  int rho_wmimpl_is_loglevel_enabled(int nLogLevel){ return true; }
92
98
  const int* rho_wmimpl_get_loglevel(){ return NULL; }
99
+ const wchar_t* rho_wmimpl_sharedconfig_getvalue(const wchar_t* szName){return 0;}
93
100
  #endif
94
101
 
95
102
  const unsigned int* rho_wmimpl_get_logmaxsize();
@@ -159,8 +166,9 @@ class CRhodesModule : public CAtlExeModuleT< CRhodesModule >
159
166
  {
160
167
  static HINSTANCE m_hInstance;
161
168
  CMainWindow m_appWindow;
162
- rho::String m_strRootPath, m_strRhodesPath, m_logPort, m_strRuntimePath;//, m_strDebugHost, m_strDebugPort;*/
169
+ rho::String m_strRootPath, m_strRhodesPath, m_logPort, m_strRuntimePath, m_strAppName;//, m_strDebugHost, m_strDebugPort;*/
163
170
  int m_nRestarting;
171
+ bool m_isRhoConnectPush;
164
172
  #ifndef RHODES_EMULATOR
165
173
  HANDLE m_hMutex;
166
174
  #endif
@@ -188,10 +196,11 @@ public :
188
196
  void RunMessageLoop( ) throw( );
189
197
  const rho::String& getRhoRootPath();
190
198
  const rho::String& getRhoRuntimePath();
191
- void parseHttpProxyURI(const rho::String &http_proxy);
192
-
199
+ const rho::String& getAppName();
193
200
  };
194
201
 
202
+ void parseHttpProxyURI(const rho::String &http_proxy);
203
+
195
204
  static String g_strCmdLine;
196
205
  HINSTANCE CRhodesModule::m_hInstance;
197
206
  CRhodesModule _AtlModule;
@@ -211,151 +220,138 @@ rho::IBrowserEngine* rho_wmimpl_createBrowserEngine(HWND hwndParent)
211
220
  bool CRhodesModule::ParseCommandLine(LPCTSTR lpCmdLine, HRESULT* pnRetCode ) throw( )
212
221
  {
213
222
  m_nRestarting = 1;
214
- TCHAR szTokens[] = _T("-/");
215
- LPCTSTR lpszToken = FindOneOf(lpCmdLine, szTokens);
223
+ LPCTSTR lpszToken = lpCmdLine;
224
+ LPCTSTR nextToken;
216
225
  getRhoRootPath();
217
226
 
218
227
  m_logPort = "";
228
+ m_isRhoConnectPush = false;
219
229
 
220
230
  while (lpszToken != NULL)
221
231
  {
222
- if (WordCmpI(lpszToken, _T("Restarting"))==0) {
223
- m_nRestarting = 10;
232
+ // skip leading spaces and double-quote (if present)
233
+ bool doubleQuote = false;
234
+ while ((*lpszToken != 0) && ((*lpszToken==' ') || ((!doubleQuote) && (*lpszToken=='"')))) {
235
+ if (*lpszToken=='"')
236
+ doubleQuote = true;
237
+ lpszToken++;
238
+ }
239
+ // skip leading spaces and check for leading '/' or '-' of command line option
240
+ bool isCmdLineOpt = false;
241
+ while ((*lpszToken != 0) && ((*lpszToken==' ') || ((!isCmdLineOpt) && ((*lpszToken=='/') || (*lpszToken=='-'))))) {
242
+ if ((*lpszToken=='/') || (*lpszToken=='-'))
243
+ isCmdLineOpt = true;
244
+ lpszToken++;
224
245
  }
246
+ // finish command line processing on EOL
247
+ if (*lpszToken == 0) break;
248
+
249
+ // if option starts with double-quote, find its end by next double-quote;
250
+ // otherwise the end will be found automatically
251
+ nextToken = doubleQuote ? FindOneOf(lpszToken, _T("\"")) : NULL;
252
+
253
+ //parseToken will allocate extra byte at the end of the returned token value
254
+ LPTSTR value = parseToken( lpszToken, &nextToken );
225
255
 
226
- if (wcsncmp(lpszToken, _T("log"), 3)==0)
227
- {
228
- String token = convertToStringA(lpszToken);
229
- //parseToken will allocate extra byte at the end of the returned token value
230
- char* port = parseToken( token.c_str(), token.length() );
231
- if (port) {
232
- String strLogPort = port;
233
- m_logPort = strLogPort;
234
- free(port);
256
+ if (isCmdLineOpt) {
257
+ if (WordCmpI(lpszToken, _T("Restarting"))==0) {
258
+ m_nRestarting = 10;
235
259
  }
236
- else {
237
- m_logPort = rho::String("11000");
260
+
261
+ if (WordCmpI(lpszToken, _T("rhoconnectpush"))==0) {
262
+ m_isRhoConnectPush = true;
263
+ }
264
+
265
+ else if (wcsncmp(lpszToken, _T("log"), 3)==0)
266
+ {
267
+ if (value) {
268
+ m_logPort = convertToStringA(value);
269
+ }
270
+ else {
271
+ m_logPort = rho::String("11000");
272
+ }
238
273
  }
239
- }
240
274
 
241
275
  #if defined(APP_BUILD_CAPABILITY_SHARED_RUNTIME)
242
- else if (wcsnicmp(lpszToken, _T("s"),1)==0)
243
- {
244
- String token = convertToStringA(lpszToken);
245
- char* path = parseToken( token.c_str(), token.length() );
246
- if (path) {
247
- // RhoElements v1.0 compatibility mode
248
- rho_wmimpl_set_startpage(path);
249
- free(path);
276
+ else if (wcsnicmp(lpszToken, _T("s"),1)==0)
277
+ {
278
+ if (value) {
279
+ // RhoElements v1.0 compatibility mode
280
+ String strPath = convertToStringA(value);
281
+ rho_wmimpl_set_startpage(strPath.c_str());
282
+ }
250
283
  }
251
- }
252
- else if (wcsnicmp(lpszToken, _T("c"),1)==0)
253
- {
254
- String token = convertToStringA(lpszToken);
255
- char* path = parseToken( token.c_str(), token.length() );
256
- if (path) {
257
- token = path;
258
- if (token.substr(0,7).compare("file://")==0)
259
- token.erase(0,7);
260
- rho_wmimpl_set_configfilepath(token.c_str());
261
- free(path);
284
+ else if (wcsnicmp(lpszToken, _T("c"),1)==0)
285
+ {
286
+ if (value) {
287
+ String strPath = convertToStringA(value);
288
+ if (strPath.substr(0,7).compare("file://")==0)
289
+ strPath.erase(0,7);
290
+ rho_wmimpl_set_configfilepath(strPath.c_str());
291
+ }
262
292
  }
263
- }
264
293
  #endif // APP_BUILD_CAPABILITY_SHARED_RUNTIME
265
294
 
266
295
  #if defined(OS_WINDOWS_DESKTOP)
267
- else if (wcsncmp(lpszToken, _T("http_proxy_url"),14)==0)
268
- {
269
- String token = convertToStringA(lpszToken);
270
- char *proxy = parseToken( token.c_str(), token.length() );
271
-
272
- if (proxy)
273
- {
274
- m_strHttpProxy = proxy;
275
- free(proxy);
276
- }
277
- else
278
- LOG(WARNING) + "invalid value for \"http_proxy_url\" cmd parameter";
296
+ else if (wcsncmp(lpszToken, _T("http_proxy_url"),14)==0)
297
+ {
298
+ if (value) {
299
+ m_strHttpProxy = convertToStringA(value);
300
+ }
301
+ else
302
+ LOG(WARNING) + "invalid value for \"http_proxy_url\" cmd parameter";
279
303
 
280
- } else if (wcsncmp(lpszToken, _T("approot"),7)==0)
281
- {
282
- String token = convertToStringA(lpszToken);
283
- //parseToken will allocate extra byte at the end of the returned token value
284
- char* path = parseToken( token.c_str(), token.length() );
285
- if (path) {
286
- int len = strlen(path);
287
- if (!(path[len-1]=='\\' || path[len-1]=='/')) {
288
- #ifdef RHODES_EMULATOR
289
- path[len] = '/';
290
- #else
291
- path[len] = '\\';
292
- #endif
293
- path[len+1] = 0;
304
+ } else if (wcsncmp(lpszToken, _T("approot"),7)==0)
305
+ {
306
+ if (value) {
307
+ m_strRootPath = convertToStringA(value);
308
+ String_replace(m_strRootPath, '\\', '/');
309
+ if (m_strRootPath.at(m_strRootPath.length()-1)!='/')
310
+ m_strRootPath.append("/");
294
311
  }
295
- m_strRootPath = path;
296
- free(path);
297
- String_replace(m_strRootPath, '\\', '/');
298
- }
299
- } else if (wcsncmp(lpszToken, _T("rhodespath"),10)==0)
300
- {
301
- String token = convertToStringA(lpszToken);
302
- //parseToken will allocate extra byte at the end of the returned token value
303
- char* path = parseToken( token.c_str(), token.length() );
304
- if (path) {
305
- m_strRhodesPath = path;
306
- free(path);
307
- String_replace(m_strRhodesPath, '\\', '/');
308
- }
309
- } /* else if (wcsncmp(lpszToken, _T("appname"),7)==0)
310
- {
311
- String token = convertToStringA(lpszToken);
312
- //parseToken will allocate extra byte at the end of the returned token value
313
- char* path = parseToken( token.c_str(), token.length() );
314
- if (path) {
315
- convertToStringW(path, m_strAppNameW);
316
- free(path);
317
- }
318
- } else if (wcsncmp(lpszToken, _T("debughost"),9)==0)
319
- {
320
- String token = convertToStringA(lpszToken);
321
- //parseToken will allocate extra byte at the end of the returned token value
322
- char* host = parseToken( token.c_str(), token.length() );
323
- if (host) {
324
- m_strDebugHost = host;
325
- free(host);
326
- }
327
- } else if (wcsncmp(lpszToken, _T("debugport"),9)==0)
328
- {
329
- String token = convertToStringA(lpszToken);
330
- //parseToken will allocate extra byte at the end of the returned token value
331
- char* port = parseToken( token.c_str(), token.length() );
332
- if (port) {
333
- m_strDebugPort = port;
334
- free(port);
335
- }
336
- } */
312
+ } else if (wcsncmp(lpszToken, _T("rhodespath"),10)==0)
313
+ {
314
+ if (value) {
315
+ m_strRhodesPath = convertToStringA(value);
316
+ String_replace(m_strRhodesPath, '\\', '/');
317
+ }
318
+ } /* else if (wcsncmp(lpszToken, _T("appname"),7)==0)
319
+ {
320
+ if (value) {
321
+ m_strAppNameW = convertToStringW(value);
322
+ }
323
+ } else if (wcsncmp(lpszToken, _T("debughost"),9)==0)
324
+ {
325
+ if (value) {
326
+ m_strDebugHost = convertToStringA(value);
327
+ }
328
+ } else if (wcsncmp(lpszToken, _T("debugport"),9)==0)
329
+ {
330
+ if (value) {
331
+ m_strDebugPort = convertToStringA(value);
332
+ }
333
+ } */
337
334
  #else
338
- else if (wcsnicmp(lpszToken, _T("approot"),7)==0)
339
- {
340
- String token = convertToStringA(lpszToken);
341
- char* path = parseToken( token.c_str(), token.length() );
342
- if (path) {
343
- // RhoElements v2.0 Shared Runtime command line parameter
344
- m_strRootPath = path;
345
- if (m_strRootPath.substr(0,7).compare("file://")==0)
346
- m_strRootPath.erase(0,7);
347
- String_replace(m_strRootPath, '\\', '/');
348
- if (m_strRootPath.at(m_strRootPath.length()-1)!='/')
349
- m_strRootPath.append("/");
350
- m_strRootPath.append("rho/");
335
+ else if (wcsnicmp(lpszToken, _T("approot"),7)==0)
336
+ {
337
+ if (value) {
338
+ // RhoElements v2.0 Shared Runtime command line parameter
339
+ m_strRootPath = convertToStringA(value);
340
+ if (m_strRootPath.substr(0,7).compare("file://")==0)
341
+ m_strRootPath.erase(0,7);
342
+ String_replace(m_strRootPath, '\\', '/');
343
+ if (m_strRootPath.at(m_strRootPath.length()-1)!='/')
344
+ m_strRootPath.append("/");
345
+ m_strRootPath.append("rho/");
351
346
  #ifdef APP_BUILD_CAPABILITY_SHARED_RUNTIME
352
- rho_wmimpl_set_is_version2(m_strRootPath.c_str());
347
+ rho_wmimpl_set_is_version2(m_strRootPath.c_str());
353
348
  #endif
354
- }
355
- free(path);
356
- }
349
+ }
350
+ }
357
351
  #endif
358
- lpszToken = FindOneOf(lpszToken, szTokens);
352
+ }
353
+ if (value) free(value);
354
+ lpszToken = nextToken;
359
355
  }
360
356
 
361
357
  return __super::ParseCommandLine(lpCmdLine, pnRetCode);
@@ -372,7 +368,7 @@ extern "C" void rho_sys_impl_exit_with_errormessage(const char* szTitle, const c
372
368
 
373
369
  extern "C" void rho_scanner_TEST(HWND hwnd);
374
370
  extern "C" void rho_scanner_TEST2();
375
- extern "C" int rho_wm_impl_CheckLicense();
371
+ extern "C" void rho_wm_impl_CheckLicense();
376
372
 
377
373
  // This method is called immediately before entering the message loop.
378
374
  // It contains initialization code for the application.
@@ -405,7 +401,8 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
405
401
 
406
402
  if (hWnd)
407
403
  {
408
- SetForegroundWindow( HWND( DWORD(hWnd) | 0x01 ) );
404
+ SendMessage( hWnd, PB_WINDOW_RESTORE, NULL, TRUE);
405
+ SetForegroundWindow( hWnd );
409
406
  return S_FALSE;
410
407
  }
411
408
 
@@ -478,11 +475,20 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
478
475
  #ifdef OS_WINDOWS_DESKTOP
479
476
  if (m_strHttpProxy.length() > 0) {
480
477
  parseHttpProxyURI(m_strHttpProxy);
481
- } else {
478
+ } else
479
+ #endif
480
+ {
482
481
  if (RHOCONF().isExist("http_proxy_url")) {
483
482
  parseHttpProxyURI(RHOCONF().getString("http_proxy_url"));
483
+ #if defined(OS_WINDOWS_DESKTOP) || defined(RHODES_EMULATOR)
484
+ } else {
485
+ // it's important to call this method from here to perform
486
+ // a proper initialization of proxy implementation for Win32
487
+ GetAppWindow().setProxy();
488
+ #endif
484
489
  }
485
490
  }
491
+
486
492
  #ifdef RHODES_EMULATOR
487
493
  if (RHOSIMCONF().getString("debug_host").length() > 0)
488
494
  SetEnvironmentVariableA("RHOHOST", RHOSIMCONF().getString("debug_host").c_str() );
@@ -490,7 +496,6 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
490
496
  SetEnvironmentVariableA("rho_debug_port", RHOSIMCONF().getString("debug_port").c_str() );
491
497
  #endif
492
498
 
493
- #endif
494
499
  //::SetThreadPriority(GetCurrentThread(),10);
495
500
 
496
501
  //Check for bundle directory is exists.
@@ -560,15 +565,16 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
560
565
  m_appWindow.ShowWindow(nShowCmd);
561
566
 
562
567
  #ifndef RHODES_EMULATOR
563
- int nRes = rho_wm_impl_CheckLicense();
564
- if ( !nRes )
565
- ::MessageBoxW(0, L"Please provide RhoElements license key.", L"Motorola License", MB_ICONERROR | MB_OK);
568
+ rho_wm_impl_CheckLicense();
566
569
  #endif
567
570
 
568
571
  #else
569
572
  String strTitle = RHODESAPP().getAppTitle();
570
573
  m_appWindow.Create(NULL, CWindow::rcDefault, convertToStringW(strTitle).c_str(), dwStyle);
571
574
 
575
+ //if( m_isRhoConnectPush )
576
+ // m_appWindow.ShowWindow(SW_MINIMIZE);
577
+
572
578
  if (NULL == m_appWindow.m_hWnd)
573
579
  {
574
580
  return S_FALSE;
@@ -619,13 +625,6 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
619
625
  {
620
626
  RHODESAPP().startApp();
621
627
 
622
- #ifdef RHODES_EMULATOR
623
- int width = RHOSIMCONF().getInt("screen_width");
624
- int height = RHOSIMCONF().getInt("screen_height");
625
- if ((width>0) && (height>0))
626
- m_appWindow.setSize(width, height);
627
- #endif
628
-
629
628
  // Navigate to the "loading..." page
630
629
  m_appWindow.Navigate2(_T("about:blank")
631
630
  #if defined(OS_WINDOWS_DESKTOP)
@@ -674,7 +673,8 @@ HRESULT CRhodesModule::PreMessageLoop(int nShowCmd) throw()
674
673
  &g_hNotifyCell);
675
674
 
676
675
  #elif !defined( OS_PLATFORM_MOTCE )
677
- rho_clientregister_create("win32_client");
676
+ if (RHOCONF().getString("test_push_client").length() > 0 )
677
+ rho_clientregister_create(RHOCONF().getString("test_push_client").c_str());//"win32_client");
678
678
  #endif
679
679
 
680
680
  return S_OK;
@@ -700,9 +700,9 @@ void CRhodesModule::RunMessageLoop( ) throw( )
700
700
  #endif
701
701
  rho_ringtone_manager_stop();
702
702
 
703
- #if !defined(_WIN32_WCE)
704
- rho_clientregister_destroy();
705
- #endif
703
+ //#if !defined(_WIN32_WCE)
704
+ // rho::sync::CClientRegister::Destroy();
705
+ //#endif
706
706
 
707
707
  #if defined(OS_WINDOWS_DESKTOP)
708
708
  m_appWindow.DestroyUi();
@@ -721,9 +721,39 @@ const rho::String& CRhodesModule::getRhoRootPath()
721
721
  {
722
722
  if ( m_strRootPath.length() == 0 )
723
723
  m_strRootPath = getRhoRuntimePath();
724
+
724
725
  return m_strRootPath;
725
726
  }
726
727
 
728
+ const rho::String& CRhodesModule::getAppName()
729
+ {
730
+ if ( m_strAppName.length() == 0 )
731
+ {
732
+ #if defined(APP_BUILD_CAPABILITY_SHARED_RUNTIME)
733
+ bool bRE1App = false;
734
+ if (!rho_wmimpl_get_is_version2())
735
+ bRE1App = true;
736
+ if ( bRE1App )
737
+ m_strAppName = convertToStringA( rho_wmimpl_sharedconfig_getvalue( L"General\\Name" ) );
738
+ else
739
+ {
740
+ String path = getRhoRootPath();
741
+ String_replace(path, '/', '\\');
742
+
743
+ int nEnd = path.find_last_of('\\');
744
+ nEnd = path.find_last_of('\\', nEnd-1)-1;
745
+
746
+ int nStart = path.find_last_of('\\', nEnd) +1;
747
+ m_strAppName = path.substr( nStart, nEnd-nStart+1);
748
+ }
749
+ #else
750
+ m_strAppName = get_app_build_config_item("name");
751
+ #endif
752
+ }
753
+
754
+ return m_strAppName;
755
+ }
756
+
727
757
  const rho::String& CRhodesModule::getRhoRuntimePath()
728
758
  {
729
759
  if ( m_strRuntimePath.length() == 0 )
@@ -802,21 +832,17 @@ void rho_platform_restart_application()
802
832
  typedef bool (WINAPI *PCSD)();
803
833
 
804
834
  #ifdef APP_BUILD_CAPABILITY_MOTOROLA
805
- extern "C" void rho_wm_impl_CheckLicenseWithBarcode(HWND hParent);
835
+ extern "C" void rho_wm_impl_CheckLicenseWithBarcode(HWND hParent, HINSTANCE hLicenseInstance);
806
836
  #endif
837
+ extern "C" void rho_wm_impl_SetApplicationLicenseObj(void* pAppLicenseObj);
807
838
 
808
839
  typedef LPCWSTR (WINAPI *PCL)(HWND, LPCWSTR, LPCWSTR, LPCWSTR);
809
840
  typedef int (WINAPI *FUNC_IsLicenseOK)();
841
+ typedef void* (WINAPI *FUNC_GetAppLicenseObj)();
810
842
 
811
- extern "C" int rho_wm_impl_CheckLicense()
843
+ extern "C" void rho_wm_impl_CheckLicense()
812
844
  {
813
- //#ifdef OS_WINDOWS_DESKTOP
814
- // return;
815
- //#else
816
-
817
- #ifdef APP_BUILD_CAPABILITY_MOTOROLA
818
- rho_wm_impl_CheckLicenseWithBarcode(getMainWnd());
819
- #else
845
+ int nRes = 0;
820
846
  HINSTANCE hLicenseInstance = LoadLibrary(L"license_rc.dll");
821
847
  if(hLicenseInstance)
822
848
  {
@@ -836,51 +862,57 @@ extern "C" int rho_wm_impl_CheckLicense()
836
862
  StringW strCompanyW;
837
863
  common::convertToStringW( get_app_build_config_item("motorola_license_company"), strCompanyW );
838
864
 
839
- szLogText = pCheckLicense( getMainWnd(), L"rhodes-system-api-samples", strLicenseW.c_str(), strCompanyW.c_str() );
865
+ bool bRE1App = false;
866
+ #if defined(APP_BUILD_CAPABILITY_SHARED_RUNTIME)
867
+ if (!rho_wmimpl_get_is_version2())
868
+ bRE1App = true;
869
+
870
+ if ( bRE1App )
871
+ {
872
+ LPCTSTR szLicense = rho_wmimpl_sharedconfig_getvalue( L"LicenseKey" );
873
+ if ( szLicense )
874
+ strLicenseW = szLicense;
875
+
876
+ LPCTSTR szLicenseComp = rho_wmimpl_sharedconfig_getvalue( L"LicenseKeyCompany" );
877
+ if ( szLicenseComp )
878
+ strCompanyW = szLicenseComp;
879
+ }
880
+ #endif
881
+
882
+ StringW strAppNameW;
883
+ //#if defined(APP_BUILD_CAPABILITY_SHARED_RUNTIME)
884
+ strAppNameW = RHODESAPP().getAppNameW();
885
+ //#else
886
+ // common::convertToStringW( get_app_build_config_item("name"), strAppNameW );
887
+ //#endif
888
+ szLogText = pCheckLicense( getMainWnd(), strAppNameW.c_str(), strLicenseW.c_str(), strCompanyW.c_str() );
840
889
  }
841
890
 
842
891
  if ( szLogText && *szLogText )
843
892
  LOGC(INFO, "License") + szLogText;
844
893
 
845
- return pIsOK ? pIsOK() : 0;
894
+ nRes = pIsOK ? pIsOK() : 0;
846
895
  }
847
- #endif
848
-
849
- return 0;
850
- //#endif
851
- }
852
-
853
- extern "C" int rho_wm_impl_CheckSymbolDevice()
854
- {
855
- #ifdef OS_WINDOWS_DESKTOP
856
- //return false;
857
- return true;
858
- #else
859
- int res = -1;
860
- HINSTANCE hLicenseInstance = LoadLibrary(L"license_rc.dll");
861
- if(!hLicenseInstance)
862
- {
863
- MessageBox(NULL, L"license_rc.dll is absent. Application will be closed"
864
- , L"Rhodes", MB_SETFOREGROUND | MB_TOPMOST | MB_ICONSTOP | MB_OK);
865
- return 0;
866
- }
867
- /*if(hLicenseInstance)
868
- {
869
- PCSD pCheckSymbolDevice = (PCSD) GetProcAddress(hLicenseInstance, L"CheckSymbolDevice");
870
- if(pCheckSymbolDevice)
871
- res = pCheckSymbolDevice();
872
- }
873
896
 
874
- if(res == -1)
875
- {
876
- MessageBox(NULL, L"license_rc.dll is absent. Application will be closed"
877
- , L"Rhodes", MB_SETFOREGROUND | MB_TOPMOST | MB_ICONSTOP | MB_OK);
878
- return 0;
879
- }*/
897
+ #ifdef APP_BUILD_CAPABILITY_MOTOROLA
898
+ if ( nRes == 0 )
899
+ {
900
+ rho_wm_impl_CheckLicenseWithBarcode(getMainWnd(),hLicenseInstance);
901
+ return;
902
+ }
903
+ #endif
880
904
 
881
- return 1;
905
+ #ifdef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
906
+ if ( nRes )
907
+ {
908
+ FUNC_GetAppLicenseObj pGetAppLicenseObj = (FUNC_GetAppLicenseObj) GetProcAddress(hLicenseInstance, L"GetAppLicenseObj");
909
+ if ( pGetAppLicenseObj )
910
+ rho_wm_impl_SetApplicationLicenseObj( pGetAppLicenseObj() );
911
+ }
882
912
  #endif
883
913
 
914
+ if ( !nRes )
915
+ ::PostMessage( getMainWnd(), WM_SHOW_LICENSE_WARNING, 0, 0);
884
916
  }
885
917
 
886
918
  static inline char *
@@ -894,6 +926,11 @@ translate_char(char *p, int from, int to)
894
926
  return p;
895
927
  }
896
928
 
929
+ extern "C" const char* rho_native_get_appname()
930
+ {
931
+ return _AtlModule.getAppName().c_str();
932
+ }
933
+
897
934
  extern "C" const char* rho_native_rhopath()
898
935
  {
899
936
  return _AtlModule.getRhoRootPath().c_str();
@@ -1001,38 +1038,51 @@ extern "C" void Init_fcntl(void)
1001
1038
 
1002
1039
  //parseToken will allocate extra byte at the end of the
1003
1040
  //returned token value
1004
- char* parseToken( const char* start, int len ) {
1041
+ LPTSTR parseToken (LPCTSTR start, LPCTSTR* next_token) {
1005
1042
  int nNameLen = 0;
1006
- while(*start==' '){ start++; len--;}
1043
+ while(*start==' '){ start++; }
1007
1044
 
1008
1045
  int i = 0;
1009
- for( i = 0; i < len; i++ ){
1010
- if (( start[i] == '=' ) || ( start[i] == ':' ) || ( start[i] == ' ' )) {
1046
+ while( start[i] != L'\0' )
1047
+ {
1048
+ if (( start[i] == L'=' ) || ( start[i] == L':' ) || ( start[i] == L' ' )) {
1011
1049
  if ( i > 0 ){
1012
1050
  int s = i-1;
1013
1051
  for(; s >= 0 && start[s]==' '; s-- );
1014
-
1015
1052
  nNameLen = s+1;
1016
1053
  break;
1017
1054
  }else
1018
1055
  break;
1019
1056
  }
1057
+ ++i;
1020
1058
  }
1021
1059
 
1022
- if ( nNameLen == 0 )
1060
+ if ( nNameLen == 0 )
1023
1061
  return NULL;
1024
1062
 
1025
- const char* szValue = start + i+1;
1063
+ LPCTSTR szValue = start + i+1;
1026
1064
  int nValueLen = 0;
1027
1065
 
1028
- while(*szValue==' ' || *szValue=='\'' || *szValue=='"' && nValueLen >= 0 ){ szValue++;}
1029
- while(szValue[nValueLen] && szValue[nValueLen] !='\'' && szValue[nValueLen] != '"' ){ nValueLen++;}
1030
-
1031
- //while(nValueLen > 0 && (szValue[nValueLen-1]==' ' || szValue[nValueLen-1]=='\'' || szValue[nValueLen-1]=='"')) nValueLen--;
1066
+ // skip leading spaces and optional delimiter (that is either ' or ") and keep the delimiter for further use
1067
+ TCHAR delimiter = L' ';
1068
+ while ((*szValue==delimiter) || ((delimiter==L' ') && ((*szValue==L'\'') || (*szValue==L'"')))) {
1069
+ if ((delimiter==L' ') && ((*szValue==L'\'') || (*szValue==L'"'))) {
1070
+ // delimiter found
1071
+ delimiter = *szValue;
1072
+ szValue++;
1073
+ break;
1074
+ }
1075
+ szValue++;
1076
+ }
1077
+ // search for value end -- that is either end of line or delimiter
1078
+ while ((szValue[nValueLen] != L'\0') && (szValue[nValueLen] != delimiter)) { nValueLen++; }
1079
+ // next token begins with the character next to delimiter (if it's not the end of the line)
1080
+ if (*next_token == NULL)
1081
+ *next_token = szValue + nValueLen + (szValue[nValueLen] != L'\0' ? 1 : 0 );
1032
1082
 
1033
- char* value = (char*) malloc(nValueLen+2);
1034
- strncpy(value, szValue, nValueLen);
1035
- value[nValueLen] = '\0';
1083
+ TCHAR* value = (TCHAR*) malloc((nValueLen+2)*sizeof(TCHAR));
1084
+ wcsncpy(value, szValue, nValueLen);
1085
+ value[nValueLen] = L'\0';
1036
1086
 
1037
1087
  return value;
1038
1088
  }
@@ -1186,19 +1236,34 @@ HBITMAP SHLoadImageFile( LPCTSTR pszFileName )
1186
1236
 
1187
1237
  #endif
1188
1238
 
1189
- void CRhodesModule::parseHttpProxyURI(const rho::String &http_proxy)
1239
+ extern "C" void rho_sys_unset_http_proxy()
1240
+ {
1241
+ #if defined(OS_WINDOWS_DESKTOP) || defined(RHODES_EMULATOR)
1242
+ _AtlModule.GetAppWindow().setProxy();
1243
+ #endif
1244
+ RHOCONF().removeProperty("http_proxy_host", false);
1245
+ RHOCONF().removeProperty("http_proxy_port", false);
1246
+ RHOCONF().removeProperty("http_proxy_login", false);
1247
+ RHOCONF().removeProperty("http_proxy_password", false);
1248
+ RAWLOG_INFO("Unsetting HTTP proxy");
1249
+ }
1250
+
1251
+ void parseHttpProxyURI(const rho::String &http_proxy)
1190
1252
  {
1191
1253
  // http://<login>:<passwod>@<host>:<port>
1192
1254
  const char *default_port = "8080";
1193
1255
 
1256
+ if (http_proxy.length() == 0)
1257
+ rho_sys_unset_http_proxy();
1258
+
1194
1259
  if (http_proxy.length() < 8) {
1195
- LOG(ERROR) + "invalid http proxy url";
1260
+ RAWLOG_ERROR("invalid http proxy url");
1196
1261
  return;
1197
1262
  }
1198
1263
 
1199
1264
  int index = http_proxy.find("http://", 0, 7);
1200
1265
  if (index == string::npos) {
1201
- LOG(ERROR) + "http proxy url should starts with \"http://\"";
1266
+ RAWLOG_ERROR("http proxy url should starts with \"http://\"");
1202
1267
  return;
1203
1268
  }
1204
1269
  index = 7;
@@ -1284,20 +1349,23 @@ void CRhodesModule::parseHttpProxyURI(const rho::String &http_proxy)
1284
1349
  }
1285
1350
  }
1286
1351
 
1287
- LOG(INFO) + "Setting up HTTP proxy:";
1288
- LOG(INFO) + "URI: " + http_proxy;
1289
- LOG(INFO) + "HTTP proxy login = " + login;
1290
- LOG(INFO) + "HTTP proxy password = " + password;
1291
- LOG(INFO) + "HTTP proxy host = " + host;
1292
- LOG(INFO) + "HTTP proxy port = " + port;
1352
+ RAWLOG_INFO("Setting up HTTP proxy:");
1353
+ RAWLOG_INFO1("URI: %s", http_proxy.c_str());
1354
+ RAWLOG_INFO1("HTTP proxy login = %s", login.c_str());
1355
+ RAWLOG_INFO1("HTTP proxy password = %s", password.c_str());
1356
+ RAWLOG_INFO1("HTTP proxy host = %s", host.c_str());
1357
+ RAWLOG_INFO1("HTTP proxy port = %s", port.c_str());
1293
1358
 
1294
1359
  if (host.length()) {
1360
+ #if defined(OS_WINDOWS_DESKTOP) || defined(RHODES_EMULATOR)
1361
+ _AtlModule.GetAppWindow().setProxy(host, port, login, password);
1362
+ #endif
1295
1363
  RHOCONF().setString ("http_proxy_host", host, false);
1296
1364
 
1297
1365
  if (port.length()){
1298
1366
  RHOCONF().setString ("http_proxy_port", port, false);
1299
1367
  } else {
1300
- LOG(WARNING) + "there is no proxy port defined";
1368
+ RAWLOG_WARNING("there is no proxy port defined");
1301
1369
  }
1302
1370
 
1303
1371
  if (login.length())
@@ -1307,7 +1375,12 @@ void CRhodesModule::parseHttpProxyURI(const rho::String &http_proxy)
1307
1375
  RHOCONF().setString ("http_proxy_password", password, false);
1308
1376
 
1309
1377
  } else {
1310
- LOG(ERROR) + "empty host name in HTTP-proxy URL";
1378
+ RAWLOG_ERROR("empty host name in HTTP-proxy URL");
1311
1379
  }
1312
-
1313
1380
  }
1381
+
1382
+ extern "C" void rho_sys_set_http_proxy_url(const char* url)
1383
+ {
1384
+ String m_strHttpProxy = url;
1385
+ parseHttpProxyURI(m_strHttpProxy);
1386
+ }