rhodes 3.3.3.beta.4 → 3.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (497) hide show
  1. data/CHANGELOG +7 -5
  2. data/CREDITS +2215 -0
  3. data/Rakefile +225 -59
  4. data/bin/c2dm.rb +0 -0
  5. data/bin/get-rhodes-info.bat +0 -0
  6. data/bin/migrate-rhodes-app +0 -0
  7. data/bin/migrate-rhodes-app.bat +0 -0
  8. data/bin/rhodes +0 -0
  9. data/bin/rhodes-setup +0 -0
  10. data/bin/rhodes-setup.bat +0 -0
  11. data/bin/rhogen +0 -0
  12. data/bin/rhogen.bat +0 -0
  13. data/bin/set-rhodes-sdk +0 -0
  14. data/bin/set-rhodes-sdk.bat +0 -0
  15. data/bin/upgrade-rhodes-app +0 -0
  16. data/bin/upgrade-rhodes-app.bat +0 -0
  17. data/doc/build.txt +20 -9
  18. data/doc/configuration.txt +8 -8
  19. data/doc/connect-to-web-services.txt +1 -1
  20. data/doc/device-caps.txt +63 -26
  21. data/doc/extensions.txt +14 -2
  22. data/doc/install.txt +28 -19
  23. data/doc/introduction.txt +6 -3
  24. data/doc/jqt-jqm-transition.txt +10 -9
  25. data/doc/release.txt +5 -1
  26. data/doc/rhodes-command-line.txt +130 -0
  27. data/doc/rhom.txt +16 -11
  28. data/doc/rhostudio-eclipse.txt +3 -3
  29. data/doc/simulator.txt +28 -31
  30. data/doc/syncengine-ajax-api.txt +246 -0
  31. data/doc/synchronization.txt +21 -3
  32. data/doc/test-log-debug.txt +3 -1
  33. data/doc/ui.txt +16 -16
  34. data/ext/extconf.rb +8 -0
  35. data/lib/build/jake.rb +5 -5
  36. data/lib/extensions/barcode/ext/barcode/platform/android/Rakefile +9 -9
  37. data/lib/extensions/barcode/ext/barcode/platform/android/jni/src/barcode.cpp +81 -1
  38. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/android/CaptureActivityHandler.java +6 -13
  39. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/google/zxing/client/android/DecodeHandler.java +2 -6
  40. data/lib/extensions/barcode/ext/barcode/platform/android/src/com/rhomobile/barcode/Barcode.java +12 -1
  41. data/lib/extensions/barcode/ext/barcode/platform/bb/run.bat +0 -0
  42. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeCallbackHelper.h +2 -0
  43. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeCallbackHelper.mm +36 -0
  44. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewController.h +0 -0
  45. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/BarcodeViewController.m +15 -5
  46. data/lib/extensions/barcode/ext/barcode/platform/iphone/Classes/barcode.m +64 -1
  47. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode.i +35 -1
  48. data/lib/extensions/barcode/ext/barcode/shared/ruby/barcode_wrap.c +126 -2
  49. data/lib/extensions/barcode/ext/barcode/shared/src/zbar.c +18 -1
  50. data/lib/extensions/barcode/ext/build +0 -0
  51. data/lib/extensions/barcode/ext/build.bat +0 -0
  52. data/lib/extensions/digest-md5/ext/Rakefile +12 -10
  53. data/lib/extensions/digest-md5/ext/build +0 -0
  54. data/lib/extensions/digest-md5/ext/build.bat +0 -0
  55. data/lib/extensions/digest-md5/ext/digest-md5.sln +2 -2
  56. data/lib/extensions/digest-md5/ext/digest-md5.vcproj +41 -28
  57. data/lib/extensions/digest-sha1/ext/Rakefile +11 -10
  58. data/lib/extensions/digest-sha1/ext/build +0 -0
  59. data/lib/extensions/digest-sha1/ext/build.bat +0 -0
  60. data/lib/extensions/digest-sha1/ext/digest-sha1.sln +2 -2
  61. data/lib/extensions/digest-sha1/ext/digest-sha1.vcproj +41 -28
  62. data/lib/extensions/digest/ext/Rakefile +12 -11
  63. data/lib/extensions/digest/ext/build +0 -0
  64. data/lib/extensions/digest/ext/build.bat +0 -0
  65. data/lib/extensions/digest/ext/digest.sln +44 -0
  66. data/lib/extensions/digest/ext/digest.vcproj +40 -27
  67. data/lib/extensions/esri/ext/build +0 -0
  68. data/lib/extensions/esri/ext/build.bat +0 -0
  69. data/lib/extensions/fcntl/ext/Rakefile +10 -9
  70. data/lib/extensions/fcntl/ext/build +0 -0
  71. data/lib/extensions/fcntl/ext/build.bat +0 -0
  72. data/lib/extensions/fcntl/ext/fcntl.vcproj +1 -1
  73. data/lib/extensions/nfc/ext/build +0 -0
  74. data/lib/extensions/nfc/ext/build.bat +0 -0
  75. data/lib/extensions/nfc/ext/nfc/platform/android/Rakefile +11 -11
  76. data/lib/extensions/nfc/ext/nfc/platform/android/jni/src/nfc.cpp +0 -0
  77. data/lib/extensions/nfc/ext/nfc/platform/android/src/com/rhomobile/nfc/Nfc.java +12 -10
  78. data/lib/extensions/nfc/ext/nfc/shared/ruby/nfc_wrap.c +16 -9
  79. data/lib/extensions/pdf-writer/color.rb +145 -0
  80. data/lib/extensions/pdf-writer/color/cmyk.rb +279 -0
  81. data/lib/extensions/pdf-writer/color/css.rb +28 -0
  82. data/lib/extensions/pdf-writer/color/grayscale.rb +212 -0
  83. data/lib/extensions/pdf-writer/color/hsl.rb +221 -0
  84. data/lib/extensions/pdf-writer/color/palette.rb +16 -0
  85. data/lib/extensions/pdf-writer/color/palette/adobecolor.rb +272 -0
  86. data/lib/extensions/pdf-writer/color/palette/gimp.rb +116 -0
  87. data/lib/extensions/pdf-writer/color/palette/monocontrast.rb +180 -0
  88. data/lib/extensions/pdf-writer/color/rgb-colors.rb +355 -0
  89. data/lib/extensions/pdf-writer/color/rgb.rb +453 -0
  90. data/lib/extensions/pdf-writer/color/rgb/metallic.rb +43 -0
  91. data/lib/extensions/pdf-writer/color/yiq.rb +84 -0
  92. data/lib/extensions/pdf-writer/ext/LICENSES/color/Licence.txt +27 -0
  93. data/lib/extensions/pdf-writer/ext/LICENSES/color/README.txt +32 -0
  94. data/lib/extensions/pdf-writer/ext/LICENSES/pdf-writer/LICENCE +131 -0
  95. data/lib/extensions/pdf-writer/ext/LICENSES/pdf-writer/README +33 -0
  96. data/lib/extensions/pdf-writer/ext/LICENSES/transaction-simple/Licence.txt +25 -0
  97. data/lib/extensions/pdf-writer/ext/LICENSES/transaction-simple/Readme.txt +204 -0
  98. data/lib/extensions/pdf-writer/pdf/charts.rb +13 -0
  99. data/lib/extensions/pdf-writer/pdf/charts/stddev.rb +430 -0
  100. data/lib/extensions/pdf-writer/pdf/math.rb +108 -0
  101. data/lib/extensions/pdf-writer/pdf/quickref.rb +332 -0
  102. data/lib/extensions/pdf-writer/pdf/simpletable.rb +947 -0
  103. data/lib/extensions/pdf-writer/pdf/techbook.rb +901 -0
  104. data/lib/extensions/pdf-writer/pdf/writer.rb +2729 -0
  105. data/lib/extensions/pdf-writer/pdf/writer/arc4.rb +63 -0
  106. data/lib/extensions/pdf-writer/pdf/writer/fontmetrics.rb +203 -0
  107. data/lib/extensions/pdf-writer/pdf/writer/fonts/Courier-Bold.afm +342 -0
  108. data/lib/extensions/pdf-writer/pdf/writer/fonts/Courier-BoldOblique.afm +342 -0
  109. data/lib/extensions/pdf-writer/pdf/writer/fonts/Courier-Oblique.afm +342 -0
  110. data/lib/extensions/pdf-writer/pdf/writer/fonts/Courier.afm +342 -0
  111. data/lib/extensions/pdf-writer/pdf/writer/fonts/Helvetica-Bold.afm +2827 -0
  112. data/lib/extensions/pdf-writer/pdf/writer/fonts/Helvetica-BoldOblique.afm +2827 -0
  113. data/lib/extensions/pdf-writer/pdf/writer/fonts/Helvetica-Oblique.afm +3051 -0
  114. data/lib/extensions/pdf-writer/pdf/writer/fonts/Helvetica.afm +3051 -0
  115. data/lib/extensions/pdf-writer/pdf/writer/fonts/MustRead.html +19 -0
  116. data/lib/extensions/pdf-writer/pdf/writer/fonts/Symbol.afm +213 -0
  117. data/lib/extensions/pdf-writer/pdf/writer/fonts/Times-Bold.afm +2588 -0
  118. data/lib/extensions/pdf-writer/pdf/writer/fonts/Times-BoldItalic.afm +2384 -0
  119. data/lib/extensions/pdf-writer/pdf/writer/fonts/Times-Italic.afm +2667 -0
  120. data/lib/extensions/pdf-writer/pdf/writer/fonts/Times-Roman.afm +2419 -0
  121. data/lib/extensions/pdf-writer/pdf/writer/fonts/ZapfDingbats.afm +225 -0
  122. data/lib/extensions/pdf-writer/pdf/writer/graphics.rb +813 -0
  123. data/lib/extensions/pdf-writer/pdf/writer/graphics/imageinfo.rb +365 -0
  124. data/lib/extensions/pdf-writer/pdf/writer/lang.rb +43 -0
  125. data/lib/extensions/pdf-writer/pdf/writer/lang/en.rb +99 -0
  126. data/lib/extensions/pdf-writer/pdf/writer/object.rb +23 -0
  127. data/lib/extensions/pdf-writer/pdf/writer/object/action.rb +35 -0
  128. data/lib/extensions/pdf-writer/pdf/writer/object/annotation.rb +42 -0
  129. data/lib/extensions/pdf-writer/pdf/writer/object/catalog.rb +39 -0
  130. data/lib/extensions/pdf-writer/pdf/writer/object/contents.rb +65 -0
  131. data/lib/extensions/pdf-writer/pdf/writer/object/destination.rb +40 -0
  132. data/lib/extensions/pdf-writer/pdf/writer/object/encryption.rb +53 -0
  133. data/lib/extensions/pdf-writer/pdf/writer/object/font.rb +72 -0
  134. data/lib/extensions/pdf-writer/pdf/writer/object/fontdescriptor.rb +34 -0
  135. data/lib/extensions/pdf-writer/pdf/writer/object/fontencoding.rb +40 -0
  136. data/lib/extensions/pdf-writer/pdf/writer/object/image.rb +304 -0
  137. data/lib/extensions/pdf-writer/pdf/writer/object/info.rb +51 -0
  138. data/lib/extensions/pdf-writer/pdf/writer/object/outline.rb +30 -0
  139. data/lib/extensions/pdf-writer/pdf/writer/object/outlines.rb +30 -0
  140. data/lib/extensions/pdf-writer/pdf/writer/object/page.rb +195 -0
  141. data/lib/extensions/pdf-writer/pdf/writer/object/pages.rb +115 -0
  142. data/lib/extensions/pdf-writer/pdf/writer/object/procset.rb +46 -0
  143. data/lib/extensions/pdf-writer/pdf/writer/object/viewerpreferences.rb +74 -0
  144. data/lib/extensions/pdf-writer/pdf/writer/ohash.rb +58 -0
  145. data/lib/extensions/pdf-writer/pdf/writer/oreader.rb +25 -0
  146. data/lib/extensions/pdf-writer/pdf/writer/state.rb +48 -0
  147. data/lib/extensions/pdf-writer/pdf/writer/strokestyle.rb +138 -0
  148. data/lib/extensions/pdf-writer/transaction/simple.rb +486 -0
  149. data/lib/extensions/pdf-writer/transaction/simple/group.rb +146 -0
  150. data/lib/extensions/pdf-writer/transaction/simple/threadsafe.rb +68 -0
  151. data/lib/extensions/pdf-writer/transaction/simple/threadsafe/group.rb +36 -0
  152. data/lib/framework/builtinME.rb +0 -0
  153. data/lib/framework/dateOrig.rb +8 -2
  154. data/lib/framework/rational.rb +0 -0
  155. data/lib/framework/res/esri.wm.png +0 -0
  156. data/lib/framework/rho/rho.rb +6 -0
  157. data/lib/framework/rho/rhobluetooth.rb +0 -0
  158. data/lib/framework/rho/rhofsconnector.rb +0 -0
  159. data/lib/framework/rho/rhonativeviewmanager.rb +0 -0
  160. data/lib/framework/rhofsconnector.rb +0 -0
  161. data/lib/framework/rhom/rhom_object_factory.rb +8 -0
  162. data/lib/framework/rhomotoapi.rb +3 -2
  163. data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +9 -1
  164. data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +1 -0
  165. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_file_RhoFileApi.h +26 -2
  166. data/platform/android/Rhodes/jni/src/callbacks.cpp +0 -5
  167. data/platform/android/Rhodes/jni/src/camera.cpp +1 -1
  168. data/platform/android/Rhodes/jni/src/fileapi.cpp +39 -19
  169. data/platform/android/Rhodes/jni/src/geolocation.cpp +3 -3
  170. data/platform/android/Rhodes/jni/src/mapview.cpp +206 -64
  171. data/platform/android/Rhodes/jni/src/nativeview.cpp +1 -1
  172. data/platform/android/Rhodes/jni/src/rhodes.cpp +13 -0
  173. data/platform/android/Rhodes/jni/src/rhodesapp.cpp +20 -0
  174. data/platform/android/Rhodes/jni/src/rhodessystem.cpp +36 -3
  175. data/platform/android/Rhodes/jni/src/signature.cpp +22 -2
  176. data/platform/android/Rhodes/res/drawable/alert_info.png +0 -0
  177. data/platform/android/Rhodes/res/drawable/esri.png +0 -0
  178. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +17 -16
  179. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Logger.java +4 -1
  180. data/platform/android/Rhodes/src/com/rhomobile/rhodes/MemoryInfoCollector.java +67 -0
  181. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +139 -114
  182. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesApplication.java +106 -13
  183. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +11 -3
  184. data/platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java +71 -16
  185. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraNewService.java +4 -1
  186. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/CameraSemiService.java +4 -1
  187. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/AbstractRhoExtension.java +22 -1
  188. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/Config.java +243 -0
  189. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtManager.java +19 -1
  190. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/IRhoExtension.java +9 -1
  191. data/platform/android/Rhodes/src/com/rhomobile/rhodes/{RhodesActivityListener.java → extmanager/IRhoListener.java} +16 -12
  192. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManager.java +63 -1
  193. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhoExtManagerImpl.java +239 -14
  194. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/RhodesStartupListeners.java +9 -0
  195. data/platform/android/Rhodes/src/com/rhomobile/rhodes/extmanager/WebkitExtension.java +53 -0
  196. data/platform/android/Rhodes/src/com/rhomobile/rhodes/file/RhoFileApi.java +27 -12
  197. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +124 -62
  198. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +49 -137
  199. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +84 -114
  200. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SplashScreen.java +75 -82
  201. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +3 -2
  202. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Callout.java +4 -0
  203. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapBitmapManager.java +124 -0
  204. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +232 -43
  205. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Request.java +193 -0
  206. data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/IRhoCustomView.java +13 -0
  207. data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoNativeViewManager.java +32 -23
  208. data/platform/android/Rhodes/src/com/rhomobile/rhodes/nativeview/RhoVideoView.java +74 -0
  209. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality.java +6 -7
  210. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality01.java +37 -0
  211. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality03.java +14 -1
  212. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality05.java +51 -38
  213. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality07.java +9 -1
  214. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionality08.java +48 -31
  215. data/platform/android/Rhodes/src/com/rhomobile/rhodes/osfunctionality/AndroidFunctionalityManager.java +15 -16
  216. data/platform/android/Rhodes/src/com/rhomobile/rhodes/signature/Signature.java +52 -15
  217. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/LocalFileHandler.java +20 -2
  218. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientOld.java +1 -0
  219. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/GoogleWebView.java +77 -34
  220. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/IRhoWebView.java +9 -0
  221. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebChromeClient.java +105 -0
  222. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebViewClient.java +1 -1
  223. data/platform/android/build/RhodesSRC_build.files +8 -7
  224. data/platform/android/build/android.rake +326 -216
  225. data/platform/android/build/androidcommon.rb +27 -13
  226. data/platform/bb/RubyVM/src/com/rho/file/SimpleFile.java +27 -1
  227. data/platform/bb/RubyVM/src/j2me/io/File.java +104 -38
  228. data/platform/bb/build/bb.rake +1 -0
  229. data/platform/bb/build/runRAPC.bat +0 -0
  230. data/platform/bb/rhodes/resources/background.png +0 -0
  231. data/platform/bb/rhodes/resources/esri.png +0 -0
  232. data/platform/bb/rhodes/resources/mappin.png +0 -0
  233. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +5 -1
  234. data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +2 -2
  235. data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapField.java +0 -0
  236. data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapProvider.java +0 -0
  237. data/platform/bb/rhodes/src/rhomobile/mapview/GeoCoding.java +0 -0
  238. data/platform/bb/rhodes/src/rhomobile/mapview/GoogleGeoCoding.java +0 -0
  239. data/platform/bb/rhodes/src/rhomobile/mapview/MapTools.java +0 -0
  240. data/platform/iphone/Classes/AppManager/AppManager.m +7 -1
  241. data/platform/iphone/Classes/Camera/PickImageDelegate.h +9 -0
  242. data/platform/iphone/Classes/Camera/PickImageDelegate.m +75 -4
  243. data/platform/iphone/Classes/GeoLocation/LocationController.h +8 -2
  244. data/platform/iphone/Classes/GeoLocation/LocationController.m +74 -76
  245. data/platform/iphone/Classes/InitMemoryInfoCollector.h +33 -0
  246. data/platform/iphone/Classes/InitMemoryInfoCollector.mm +52 -0
  247. data/platform/iphone/Classes/NativeView/NVViewController.h +0 -0
  248. data/platform/iphone/Classes/NativeView/NVViewController.m +34 -2
  249. data/platform/iphone/Classes/Rhodes.m +22 -2
  250. data/platform/iphone/Classes/Signature/SignatureDelegate.m +19 -0
  251. data/platform/iphone/Classes/Signature/SignatureViewController.h +0 -0
  252. data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -0
  253. data/platform/iphone/Classes/SimpleMainView.h +0 -0
  254. data/platform/iphone/Classes/SimpleMainView.m +3 -3
  255. data/platform/iphone/ESRI/BluePushpin.png +0 -0
  256. data/platform/iphone/ESRI/BluePushpin@2x.png +0 -0
  257. data/platform/iphone/ESRI/esri.png +0 -0
  258. data/platform/iphone/ESRI/esri@2x.png +0 -0
  259. data/platform/iphone/rbuild/iphone.rake +75 -7
  260. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +13 -4
  261. data/platform/linux/target/compiler/rubylinux +0 -0
  262. data/platform/mac/target/compiler/RubyMac +0 -0
  263. data/platform/osx/Rhodes Launcher/rhorunner.app/rhorunner b/data/platform/osx/Rhodes → Launcher/rhorunner.app/rhorunner +0 -0
  264. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore +0 -0
  265. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Resources/qt_menu.nib/keyedobjects.nib +0 -0
  266. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui +0 -0
  267. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtNetwork.framework/Versions/4/QtNetwork +0 -0
  268. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/QtWebKit.framework/Versions/4/QtWebKit +0 -0
  269. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Info.plist +1 -1
  270. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/MacOS/RhoSimulator +0 -0
  271. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/accessible/libqtaccessiblewidgets.dylib +0 -0
  272. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqcorewlanbearer.dylib +0 -0
  273. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/bearer/libqgenericbearer.dylib +0 -0
  274. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqcncodecs.dylib +0 -0
  275. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqjpcodecs.dylib +0 -0
  276. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqkrcodecs.dylib +0 -0
  277. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/codecs/libqtwcodecs.dylib +0 -0
  278. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/graphicssystems/libqtracegraphicssystem.dylib +0 -0
  279. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqgif.dylib +0 -0
  280. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqico.dylib +0 -0
  281. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqjpeg.dylib +0 -0
  282. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqmng.dylib +0 -0
  283. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtga.dylib +0 -0
  284. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/imageformats/libqtiff.dylib +0 -0
  285. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_inspector.dylib +0 -0
  286. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/qmltooling/libqmldbg_tcp.dylib +0 -0
  287. data/platform/osx/build/osx.rake +6 -8
  288. data/platform/shared/RhoConnectClient/RhoConnectClient.cpp +165 -33
  289. data/platform/shared/RhoConnectClient/RhoConnectClient.h +10 -1
  290. data/platform/shared/common/BundleManager.cpp +27 -16
  291. data/platform/shared/common/ExtManager.h +15 -2
  292. data/platform/shared/common/RhoConf.cpp +17 -2
  293. data/platform/shared/common/RhoConf.h +3 -1
  294. data/platform/shared/common/RhoDefs.h +6 -6
  295. data/platform/shared/common/RhoFatalError.h +1 -1
  296. data/platform/shared/common/RhoFile.cpp +9 -9
  297. data/platform/shared/common/RhoFilePath.h +7 -3
  298. data/platform/shared/common/RhoPort.h +3 -3
  299. data/platform/shared/common/RhoSystem.h +1 -1
  300. data/platform/shared/common/RhodesApp.cpp +426 -26
  301. data/platform/shared/common/RhodesApp.h +11 -3
  302. data/platform/shared/common/RhodesAppBase.cpp +4 -1
  303. data/platform/shared/common/StringConverter.h +3 -3
  304. data/platform/shared/common/app_build_capabilities.h +8 -0
  305. data/platform/shared/common/map/BaseMapEngine.cpp +302 -21
  306. data/platform/shared/common/map/BaseMapEngine.h +132 -6
  307. data/platform/shared/common/map/ESRIMapEngine.cpp +2 -1
  308. data/platform/shared/common/map/GeocodingMapEngine.cpp +22 -4
  309. data/platform/shared/common/map/GeocodingMapEngine.h +40 -0
  310. data/platform/shared/common/map/GoogleMapEngine.cpp +13 -1
  311. data/platform/shared/common/map/MapEngine.h +7 -0
  312. data/platform/shared/common/map/OSMMapEngine.cpp +12 -1
  313. data/platform/shared/json/JSONIterator.cpp +1 -1
  314. data/platform/shared/json/RJSONTokener.c +2 -0
  315. data/platform/shared/json/config.h +3 -3
  316. data/platform/shared/logging/RhoLog.cpp +12 -3
  317. data/platform/shared/logging/RhoLog.h +2 -1
  318. data/platform/shared/logging/RhoLogConf.cpp +147 -11
  319. data/platform/shared/logging/RhoLogConf.h +39 -1
  320. data/platform/shared/logging/RhoLogSink.cpp +1 -1
  321. data/platform/shared/net/HttpServer.cpp +8 -4
  322. data/platform/shared/net/INetRequest.cpp +7 -0
  323. data/platform/shared/net/INetRequest.h +2 -0
  324. data/platform/shared/net/RawSocket.cpp +1 -1
  325. data/platform/shared/qt/pbxproj2pro.pl +0 -0
  326. data/platform/shared/qt/pro_vcproj_diff.pl +0 -0
  327. data/platform/shared/qt/rhodes/QtMainWindow.cpp +1 -1
  328. data/platform/shared/qt/rhodes/impl/RhoClassFactoryImpl.h +2 -2
  329. data/platform/shared/qt/rhodes/impl/RhoThreadImpl.cpp +2 -2
  330. data/platform/shared/qt/rhodes/impl/SystemImpl.cpp +11 -1
  331. data/platform/shared/qt/rhodes/main.cpp +5 -5
  332. data/platform/shared/ruby/ext/alert/alert_wrap.c +8 -8
  333. data/platform/shared/ruby/ext/bluetooth/bluetooth.i +0 -0
  334. data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +16 -9
  335. data/platform/shared/ruby/ext/camera/camera.i +2 -2
  336. data/platform/shared/ruby/ext/camera/camera_wrap.c +18 -3
  337. data/platform/shared/ruby/ext/datetimepicker/datetimepicker_wrap.c +37 -8
  338. data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +8 -8
  339. data/platform/shared/ruby/ext/mapview/mapview_wrap.c +16 -9
  340. data/platform/shared/ruby/ext/nativebar/nativebar_wrap.c +16 -9
  341. data/platform/shared/ruby/ext/nativeviewmanager/nativeviewmanager.i +0 -0
  342. data/platform/shared/ruby/ext/nativeviewmanager/nativeviewmanager_wrap.c +16 -9
  343. data/platform/shared/ruby/ext/phonebook/phonebook_wrap.c +8 -1
  344. data/platform/shared/ruby/ext/rho/rhoruby.c +7 -1
  345. data/platform/shared/ruby/ext/rho/rhoruby.h +1 -0
  346. data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +16 -9
  347. data/platform/shared/ruby/ext/signature/signature.i +0 -0
  348. data/platform/shared/ruby/ext/signature/signature_wrap.c +9 -9
  349. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +16 -9
  350. data/platform/shared/ruby/ext/system/system_wrap.c +16 -9
  351. data/platform/shared/ruby/ext/webview/webview_wrap.c +16 -9
  352. data/platform/shared/ruby/gc.c +1 -0
  353. data/platform/shared/ruby/regint.h +6 -4
  354. data/platform/shared/ruby/vm.c +1 -0
  355. data/platform/shared/ruby/wince/wince.h +1 -1
  356. data/platform/shared/rubyext/System.cpp +1 -1
  357. data/platform/shared/shttpd/src/rdispatcher.c +3 -3
  358. data/platform/shared/shttpd/src/std_includes.h +1 -1
  359. data/platform/shared/sqlite/sqlite3.c +1 -0
  360. data/platform/shared/statistic/test/TestProfiling.cpp +1 -1
  361. data/platform/shared/stlport/build/lib/configure +0 -0
  362. data/platform/shared/stlport/build/lib/configure.bat +0 -0
  363. data/platform/shared/sync/SyncEngine.cpp +9 -12
  364. data/platform/shared/sync/SyncNotify.cpp +36 -3
  365. data/platform/shared/sync/SyncNotify.h +11 -4
  366. data/platform/shared/sync/SyncSource.cpp +32 -16
  367. data/platform/shared/sync/SyncSource.h +2 -3
  368. data/platform/shared/sync/SyncThread.cpp +13 -4
  369. data/platform/shared/sync/SyncThread.h +4 -0
  370. data/platform/shared/tcmalloc/page_heap.h +1 -1
  371. data/platform/shared/tcmalloc/rhomem.h +1 -1
  372. data/platform/shared/tcmalloc/windows/port.cpp +12 -3
  373. data/platform/shared/test/Tests.cpp +4 -4
  374. data/platform/shared/test/test_helper.cpp +4 -4
  375. data/platform/symbian/sqlite3/src/sqlite3.h +1 -1
  376. data/platform/win32/RhoSimulator/Microsoft.VC90.CRT.manifest +6 -0
  377. data/platform/win32/RhoSimulator/Microsoft.VC90.OpenMP.manifest +6 -0
  378. data/platform/win32/RhoSimulator/QtCore4.dll +0 -0
  379. data/platform/win32/RhoSimulator/QtGui4.dll +0 -0
  380. data/platform/win32/RhoSimulator/QtNetwork4.dll +0 -0
  381. data/platform/win32/RhoSimulator/QtWebKit4.dll +0 -0
  382. data/platform/win32/RhoSimulator/RhoSimulator.exe +0 -0
  383. data/platform/win32/RhoSimulator/imageformats/qgif4.dll +0 -0
  384. data/platform/win32/RhoSimulator/imageformats/qico4.dll +0 -0
  385. data/platform/win32/RhoSimulator/imageformats/qjpeg4.dll +0 -0
  386. data/platform/win32/RhoSimulator/imageformats/qmng4.dll +0 -0
  387. data/platform/win32/RhoSimulator/imageformats/qsvg4.dll +0 -0
  388. data/platform/win32/RhoSimulator/imageformats/qtiff4.dll +0 -0
  389. data/platform/win32/RhoSimulator/libeay32.dll +0 -0
  390. data/platform/win32/RhoSimulator/msvcm90.dll +0 -0
  391. data/platform/win32/RhoSimulator/msvcp90.dll +0 -0
  392. data/platform/win32/RhoSimulator/msvcr90.dll +0 -0
  393. data/platform/win32/RhoSimulator/phonon4.dll +0 -0
  394. data/platform/win32/RhoSimulator/ssleay32.dll +0 -0
  395. data/platform/win32/RhoSimulator/vcomp90.dll +0 -0
  396. data/platform/win32/target/replaceicon/replaceicon.exe +0 -0
  397. data/platform/win32/target/updateresstring/updateresstring.exe +0 -0
  398. data/platform/wm/RhoLib/RhoLib.vcproj +394 -69
  399. data/platform/wm/build/build_inf.js +83 -23
  400. data/platform/wm/build/wm.rake +127 -81
  401. data/platform/wm/rhodes.sln +6 -6
  402. data/platform/wm/rhodes/DateTimePicker.h +2 -2
  403. data/platform/wm/rhodes/IBrowserEngine.h +3 -0
  404. data/platform/wm/rhodes/IEBrowserEngine.cpp +34 -2
  405. data/platform/wm/rhodes/IEBrowserEngine.h +4 -1
  406. data/platform/wm/rhodes/LicenseStub.cpp +73 -0
  407. data/platform/{android/Rhodes/src/com/rhomobile/rhodes/webview/ChromeClientNew.java → wm/rhodes/LogMemory.cpp} +32 -20
  408. data/platform/{android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettings.java → wm/rhodes/LogMemory.h} +11 -8
  409. data/platform/wm/rhodes/LogOptionsDlg.h +1 -1
  410. data/platform/wm/rhodes/LogView.cpp +10 -10
  411. data/platform/wm/rhodes/LogView.h +10 -10
  412. data/platform/wm/rhodes/MainWindow.cpp +431 -173
  413. data/platform/wm/rhodes/MainWindow.h +37 -19
  414. data/platform/wm/rhodes/MapView/MapViewManager.h +1 -1
  415. data/platform/wm/rhodes/OkCancelModalDialog.h +1 -1
  416. data/platform/wm/rhodes/Rhodes.cpp +210 -47
  417. data/platform/wm/rhodes/Rhodes.rc +38 -0
  418. data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +2 -2
  419. data/platform/wm/rhodes/bluetooth/Bluetooth.h +3 -3
  420. data/platform/wm/rhodes/camera/Camera.cpp +2 -1
  421. data/platform/wm/rhodes/camera/Camera.h +1 -1
  422. data/platform/wm/rhodes/resource.h +1 -1
  423. data/platform/wm/rhodes/rho/common/ExtManager.cpp +93 -5
  424. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +2 -2
  425. data/platform/wm/rhodes/rho/rubyext/NativeToolbar.cpp +2 -2
  426. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +13 -7
  427. data/platform/wm/rhodes/rhodes.vcproj +1409 -1008
  428. data/platform/wm/rhodes/simulator/MainWindowQt.h +1 -1
  429. data/platform/wm/rhodes/stdafx.h +2 -2
  430. data/platform/wm/rhoelements.sln +7 -9
  431. data/platform/wm/rubylib/rubylib.vcproj +62 -1
  432. data/platform/wm/sqlite3/sqlite3.vcproj +62 -1
  433. data/platform/wm/syncengine/syncengine.vcproj +62 -1
  434. data/platform/wm/tcmalloc/tcmalloc.vcproj +72 -53
  435. data/platform/wm/tools/detool/detool.cpp +1435 -1357
  436. data/platform/wp7/RhoRubyExtGen/GenerateInitializers.cmd +0 -0
  437. data/platform/wp7/RhoRubyLib/common/RhoLicense.cs +105 -0
  438. data/platform/wp7/RhoRubyLib/common/RhodesApp.cs +23 -5
  439. data/platform/wp7/RhoRubyLib/sync/SyncNotify.cs +5 -0
  440. data/platform/wp7/RhoRubyLib/views/RhoView.xaml.cs +22 -3
  441. data/platform/wp7/build/wp.rake +1 -0
  442. data/platform/wp7/rhodes/MainPage.xaml.cs +11 -0
  443. data/rakefile.rb +225 -59
  444. data/res/build-tools/7za.exe +0 -0
  445. data/res/build-tools/RhoAppRunner.exe +0 -0
  446. data/res/build-tools/RhoLogServer.exe +0 -0
  447. data/res/build-tools/RhoRuby.exe +0 -0
  448. data/res/build-tools/RubyMac +0 -0
  449. data/res/build-tools/detool.exe +0 -0
  450. data/res/build-tools/iphonesim/Source/iPhoneSimulator.m +1 -1
  451. data/res/build-tools/iphonesim/build/Release/iphonesim +0 -0
  452. data/res/build-tools/iphonesim/build/Release/iphonesim_43 +0 -0
  453. data/res/build-tools/license_rc.dll +0 -0
  454. data/res/build-tools/make.exe +0 -0
  455. data/res/build-tools/rubylinux +0 -0
  456. data/res/build-tools/swig_patch/Lib/typemaps/fragments.swg +235 -0
  457. data/res/build-tools/wmdc_connect.exe +0 -0
  458. data/res/build-tools/wp7explorer.exe +0 -0
  459. data/res/generators/rhogen.rb +2 -2
  460. data/res/generators/templates/application/app/Settings/controller.rb +1 -1
  461. data/res/generators/templates/application/app/layout.erb +1 -1
  462. data/res/generators/templates/application/app/loading.png +0 -0
  463. data/res/generators/templates/application/public/css/re_webkit.css +736 -0
  464. data/res/generators/templates/application/public/css/windows_mobile.css +0 -0
  465. data/res/generators/templates/application/public/images/listArrow.png +0 -0
  466. data/res/generators/templates/application/public/jqmobile/images/ajax-loader.png +0 -0
  467. data/res/generators/templates/application/public/jqmobile/images/icons-18-black.png +0 -0
  468. data/res/generators/templates/application/public/jqmobile/images/icons-18-white.png +0 -0
  469. data/res/generators/templates/application/public/jqmobile/images/icons-36-black.png +0 -0
  470. data/res/generators/templates/application/public/jqmobile/images/icons-36-white.png +0 -0
  471. data/res/generators/templates/application/public/js/syncengine.js +409 -52
  472. data/res/generators/templates/extension/extensions/montana/ext/build +0 -0
  473. data/res/generators/templates/extension/extensions/montana/ext/build.bat +0 -0
  474. data/res/generators/templates/extension/extensions/montana/ext/montana/platform/android/Rakefile +10 -10
  475. data/res/generators/templates/spec/app/SpecRunner/controller.rb +2 -0
  476. data/res/libs/motorolalicence/android/MotorolaLicence.h +13 -0
  477. data/res/libs/motorolalicence/android/libMotorolaLicence.a +0 -0
  478. data/res/libs/motorolalicence/iphone/MotorolaLicence.h +13 -0
  479. data/res/libs/motorolalicence/iphone/libMotorolaLicence.a +0 -0
  480. data/rhodes.gemspec +1 -1
  481. data/spec/framework_spec/app/SpecRunner/controller.rb +2 -0
  482. data/spec/phone_spec/app/SpecRunner/controller.rb +2 -0
  483. data/version +1 -1
  484. metadata +487 -412
  485. data/Manifest.txt +0 -7960
  486. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivityStartupListeners.java +0 -12
  487. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsNew.java +0 -52
  488. data/platform/android/Rhodes/src/com/rhomobile/rhodes/webview/RhoWebSettingsOld.java +0 -62
  489. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/Frameworks/phonon.framework/Versions/4/phonon +0 -0
  490. data/platform/osx/bin/RhoSimulator/RhoSimulator.app/Contents/PlugIns/phonon_backend/libphonon_qt7.dylib +0 -0
  491. data/platform/win32/RhoSimulator/Microsoft.VC80.CRT.manifest +0 -8
  492. data/platform/win32/RhoSimulator/Microsoft.VC80.OpenMP.manifest +0 -7
  493. data/platform/win32/RhoSimulator/msvcm80.dll +0 -0
  494. data/platform/win32/RhoSimulator/msvcp80.dll +0 -0
  495. data/platform/win32/RhoSimulator/msvcr80.dll +0 -0
  496. data/platform/win32/RhoSimulator/vcomp.dll +0 -0
  497. data/rhomobile-debug-1.0.6.gem +0 -0
@@ -35,7 +35,7 @@
35
35
  #include <string>
36
36
  #include <hash_map>
37
37
 
38
- #if defined(OS_WINDOWS)
38
+ #if defined(OS_WINDOWS_DESKTOP)
39
39
  #pragma warning(disable : 4995)
40
40
  #include <strsafe.h>
41
41
  #endif
@@ -57,6 +57,7 @@
57
57
  #endif
58
58
 
59
59
  IMPLEMENT_LOGCLASS(CMainWindow,"MainWindow");
60
+ UINT WM_LICENSE_SCREEN = ::RegisterWindowMessage(L"RHODES_WM_LICENSE_SCREEN");
60
61
 
61
62
  #include "DateTimePicker.h"
62
63
 
@@ -75,6 +76,8 @@ using namespace stdext;
75
76
  #if !defined(_WIN32_WCE)
76
77
  int CMainWindow::m_screenWidth;
77
78
  int CMainWindow::m_screenHeight;
79
+ #else
80
+ extern "C" bool rho_wmimpl_get_resize_on_sip();
78
81
  #endif
79
82
 
80
83
  CMainWindow::CMainWindow()
@@ -83,6 +86,11 @@ CMainWindow::CMainWindow()
83
86
  mNativeView = NULL;
84
87
  mNativeViewFactory = NULL;
85
88
  mNativeViewType = "";
89
+ g_hWndCommandBar = 0;
90
+ m_pBrowserEng = NULL;
91
+ #if defined(OS_WINCE)
92
+ m_bFullScreen = false;
93
+ #endif
86
94
 
87
95
  mIsOpenedByURL = false;
88
96
 
@@ -94,6 +102,8 @@ CMainWindow::CMainWindow()
94
102
  #endif
95
103
  m_pageCounter = 0;
96
104
  m_menuBarHeight = 0;
105
+
106
+ m_alertDialog = 0;
97
107
  }
98
108
 
99
109
  CMainWindow::~CMainWindow()
@@ -108,7 +118,7 @@ CMainWindow::~CMainWindow()
108
118
  void CMainWindow::Navigate2(BSTR URL)
109
119
  {
110
120
  String cleared_url = processForNativeView(convertToStringA(OLE2CT(URL)));
111
- if (!cleared_url.empty())
121
+ if ( m_pBrowserEng && !cleared_url.empty())
112
122
  {
113
123
  StringW cw = convertToStringW(cleared_url);
114
124
  //BSTR cleared_url_bstr = SysAllocString(cw.c_str());
@@ -120,7 +130,7 @@ void CMainWindow::Navigate2(BSTR URL)
120
130
  void CMainWindow::Navigate(BSTR URL)
121
131
  {
122
132
  String cleared_url = processForNativeView(convertToStringA(OLE2CT(URL)));
123
- if (!cleared_url.empty())
133
+ if (m_pBrowserEng && !cleared_url.empty())
124
134
  {
125
135
  StringW cw = convertToStringW(cleared_url);
126
136
  //BSTR cleared_url_bstr = SysAllocString(cw.c_str());
@@ -134,46 +144,54 @@ void CMainWindow::Navigate(BSTR URL)
134
144
  // WM_xxx handlers
135
145
  //
136
146
  // **************************************************************************
147
+ #if defined(OS_WINCE)
137
148
 
138
- LRESULT CMainWindow::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
149
+ void hideSIPButton()
139
150
  {
140
- return S_OK;
151
+ HWND hg_sipbut = FindWindow(L"MS_SIPBUTTON", NULL);
152
+ if (hg_sipbut)
153
+ ::ShowWindow(hg_sipbut, SW_HIDE);
141
154
  }
142
155
 
143
- #if defined( OS_PLATFORM_MOTCE )
144
- void CMainWindow::SetFullScreen(bool bFull)
156
+ void CMainWindow::RhoSetFullScreen(bool bFull, bool bDestroy /*=false*/)
145
157
  {
146
- HWND hTaskBar = FindWindow(_T("HHTaskBar"), NULL);
147
- if(!hTaskBar)
148
- return;
149
- ::ShowWindow(hTaskBar, !bFull ? SW_SHOW : SW_HIDE);
158
+ LOG(INFO) + "RhoSetFullScreen: " + (bFull ? 1 : 0);
159
+
160
+ HWND hTaskBar = FindWindow(_T("HHTaskBar"), NULL);
161
+ if ( hTaskBar )
162
+ {
163
+ ::EnableWindow(hTaskBar, bFull ? FALSE : TRUE );
164
+ ::ShowWindow(hTaskBar, bFull ? SW_HIDE : SW_SHOW );
165
+ }
166
+
167
+ #if defined( OS_PLATFORM_MOTCE )
150
168
 
151
169
  if(g_hWndCommandBar)
152
170
  ::ShowWindow(g_hWndCommandBar, !bFull ? SW_SHOW : SW_HIDE);
171
+ #endif
153
172
 
154
- RECT rect = { 0 };
155
- SystemParametersInfo(SPI_GETWORKAREA, NULL, &rect, FALSE);
156
-
157
- if(bFull)
158
- rect.bottom = GetSystemMetrics(SM_CYSCREEN);
159
-
160
- MoveWindow(&rect);
173
+ if (!bDestroy)
174
+ {
175
+ #if !defined( OS_PLATFORM_MOTCE )
176
+ SetFullScreen(bFull);
177
+ #endif
161
178
 
162
- m_bFullScreen = bFull;
163
- }
179
+ if ( bFull )
180
+ hideSIPButton();
181
+
182
+ #if defined( OS_PLATFORM_MOTCE )
183
+ CRect rcMainWindow;
184
+ calculateMainWindowRect(rcMainWindow);
185
+ MoveWindow(&rcMainWindow);
164
186
  #endif
187
+ }
165
188
 
166
- LRESULT CMainWindow::InitMainWindow()
189
+ }
190
+ #endif //OS_WINCE
191
+
192
+ LRESULT CMainWindow::OnCreate(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& /*bHandled*/)
167
193
  {
168
- HRESULT hr = S_OK;
169
- #if defined(_WIN32_WCE)
170
- SHMENUBARINFO mbi = { sizeof(mbi), 0 };
171
- SIPINFO si = { sizeof(si), 0 };
172
- RECT rcMenuBar = { 0 };
173
- #else
174
- NONCLIENTMETRICS ncm = { sizeof(NONCLIENTMETRICS) };
175
- int nSpiBorder = 0;
176
- #endif
194
+ m_pBrowserEng = 0;
177
195
  int xScreenSize = GetSystemMetrics(SM_CXSCREEN);
178
196
  int yScreenSize = GetSystemMetrics(SM_CYSCREEN);
179
197
 
@@ -181,12 +199,8 @@ LRESULT CMainWindow::InitMainWindow()
181
199
 
182
200
  RECT rcMainWindow = { 0,0,320,470 };
183
201
 
184
- // In one step, create an "AtlAxWin" window for the PIEWebBrowser control,
185
- // and also create the control itself. (AtlAxWin is a window class that
186
- // ATL uses to support containment of controls in windows.)
187
- #if defined(_WIN32_WCE)
188
- m_pBrowserEng = rho_wmimpl_createBrowserEngine(m_hWnd);
189
- #else
202
+ #if defined(OS_WINDOWS_DESKTOP)
203
+
190
204
  LOGCONF().setLogView(&m_logView);
191
205
 
192
206
  rcMainWindow.left = getIniInt(_T("main_view_left"),0);
@@ -205,100 +219,122 @@ LRESULT CMainWindow::InitMainWindow()
205
219
  height = rcMainWindow.bottom;
206
220
  rcMainWindow.bottom = rcMainWindow.top+height;
207
221
 
208
- m_pBrowserEng = rho_wmimpl_createBrowserEngine(m_hWnd);
222
+ //m_pBrowserEng = rho_wmimpl_createBrowserEngine(m_hWnd);
209
223
 
210
224
  m_menuBar.Create(m_hWnd,CWindow::rcDefault);
211
225
 
226
+ NONCLIENTMETRICS ncm = { sizeof(NONCLIENTMETRICS) };
212
227
  SystemParametersInfo ( SPI_GETNONCLIENTMETRICS, 0, &ncm, false );
213
228
  m_menuBarHeight = ncm.iMenuHeight+ncm.iBorderWidth*4+2;
214
229
  rcMainWindow.bottom += ncm.iCaptionHeight+ncm.iBorderWidth*8+m_menuBarHeight;
215
230
  rcMainWindow.right += ncm.iScrollWidth;
216
231
  rcMainWindow.right += ncm.iBorderWidth*6;
217
- #endif
218
232
 
219
- #ifndef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
220
- // set up connection point
221
- hr = AtlAdviseSinkMap(this, true);
222
- #endif
233
+ m_screenWidth = rcMainWindow.right - rcMainWindow.left;
234
+ m_screenHeight = rcMainWindow.bottom - rcMainWindow.top;
223
235
 
224
- #if defined(_WIN32_WCE) && !defined( OS_PLATFORM_MOTCE )
236
+ MoveWindow(&rcMainWindow);
237
+ #elif defined(OS_WINCE) && !defined( OS_PLATFORM_MOTCE )
225
238
  // Create a menubar
226
- // (mbi was initialized above)
239
+ SHMENUBARINFO mbi = { sizeof(mbi), 0 };
240
+
227
241
  mbi.hwndParent = m_hWnd;
228
242
  mbi.nToolBarId = IDR_MAIN_MENUBAR; // ID of toolbar resource
229
243
  mbi.hInstRes = _AtlBaseModule.GetResourceInstance();
230
244
  SHCreateMenuBar(&mbi);
231
245
  m_hWndCECommandBar = mbi.hwndMB;
232
246
  m_menuBar = m_hWndCECommandBar;
247
+ SetToolbarButtonEnabled(IDM_SK1_EXIT, FALSE);
248
+
249
+ #elif defined( OS_PLATFORM_MOTCE )
250
+ g_hWndCommandBar = CommandBar_Create(_AtlBaseModule.GetResourceInstance(), m_hWnd, 1);
251
+
252
+ TBBUTTON oBtn = {0};
253
+ oBtn.iBitmap = -1;
254
+ oBtn.idCommand = IDM_POPUP_MENU;
255
+ oBtn.fsState = TBSTATE_ENABLED;
256
+ oBtn.iString = (int)L"File";
257
+
258
+ CommandBar_InsertButton(g_hWndCommandBar, 0, &oBtn);
233
259
 
260
+ CommandBar_AddAdornments(g_hWndCommandBar, 0, 0);
261
+ CommandBar_Show(g_hWndCommandBar, TRUE);
262
+
263
+ #endif
264
+
265
+ #if defined(OS_WINCE)
266
+ //Set fullscreen after window resizing
267
+ m_bFullScreen = RHOCONF().getBool("full_screen");
268
+ RhoSetFullScreen(m_bFullScreen);
269
+
270
+ //calculateMainWindowRect(rcMainWindow);
271
+ //MoveWindow(&rcMainWindow);
272
+
273
+ #endif //OS_WINCE
274
+
275
+ rho_rhodesapp_callUiCreatedCallback();
276
+
277
+ return 0;
278
+ }
279
+
280
+ void CMainWindow::calculateMainWindowRect(RECT& rcMainWindow)
281
+ {
234
282
  // Compute RECT for initial size and position.
235
283
  // The following code should compute RECT appropriately
236
284
  // on both Pocket PC and Smartphone. It should function correctly
237
285
  // whether SIP is on or off, and
238
286
  // whether device is in portrait or landscape mode.
239
287
  // (rcMainWindow was initialized above)
240
- RHO_ASSERT(SystemParametersInfo(SPI_GETWORKAREA, 0, &rcMainWindow, 0));
241
288
 
289
+ SystemParametersInfo(SPI_GETWORKAREA, 0, &rcMainWindow, 0);
242
290
  LOG(INFO) + "SPI_GETWORKAREA: x=" + rcMainWindow.right + ";y=" + rcMainWindow.bottom;
243
291
 
292
+ #if defined(OS_WINCE) && !defined( OS_PLATFORM_MOTCE )
293
+
294
+ RECT rcMenuBar = { 0 };
244
295
  // (rcMenuBar was initialized above)
245
296
  m_menuBar.GetWindowRect(&rcMenuBar);
246
297
  rcMainWindow.bottom = rcMenuBar.top;
247
298
 
299
+ SIPINFO si = { sizeof(si), 0 };
248
300
  // SIP state
249
301
  // (si was initialized above)
250
- if (SHSipInfo(SPI_GETSIPINFO, 0, &si, 0) &&
302
+ if (rho_wmimpl_get_resize_on_sip() && SHSipInfo(SPI_GETSIPINFO, 0, &si, 0) &&
251
303
  (si.fdwFlags & SIPF_ON) && (si.fdwFlags & SIPF_DOCKED))
252
304
  {
253
305
  rcMainWindow.bottom = si.rcVisibleDesktop.bottom;
254
306
  }
255
307
 
256
- SetToolbarButtonEnabled(IDM_SK1_EXIT, FALSE);
257
- #endif
308
+ #elif defined( OS_PLATFORM_MOTCE )
309
+ if (m_bFullScreen)
310
+ rcMainWindow.bottom = GetSystemMetrics(SM_CYSCREEN);
258
311
 
259
- #if !defined(_WIN32_WCE)
260
- m_screenWidth = rcMainWindow.right - rcMainWindow.left;
261
- m_screenHeight = rcMainWindow.bottom - rcMainWindow.top;
262
312
  #endif
263
313
 
264
- #if !defined( OS_PLATFORM_MOTCE )
265
- MoveWindow(&rcMainWindow);
266
- #else
267
- g_hWndCommandBar = CommandBar_Create(_AtlBaseModule.GetResourceInstance(), m_hWnd, 1);
268
-
269
- TBBUTTON oBtn = {0};
270
- oBtn.iBitmap = -1;
271
- oBtn.idCommand = IDM_POPUP_MENU;
272
- oBtn.fsState = TBSTATE_ENABLED;
273
- oBtn.iString = (int)L"File";
274
-
275
- CommandBar_InsertButton(g_hWndCommandBar, 0, &oBtn);
314
+ }
276
315
 
277
- CommandBar_AddAdornments(g_hWndCommandBar, 0, 0);
278
- CommandBar_Show(g_hWndCommandBar, TRUE);
316
+ void CMainWindow::initBrowserWindow()
317
+ {
318
+ m_pBrowserEng = rho_wmimpl_createBrowserEngine(m_hWnd);
279
319
 
280
- #endif
320
+ CRect rect;
321
+ GetWindowRect(&rect);
322
+ resizeWindow(rect.Width(), rect.Height());
323
+ //m_pBrowserEng->ResizeOnTab(0, rect);
281
324
 
282
- #if defined(_WIN32_WCE)
283
- //Set fullscreen after window resizing
284
- #if defined( OS_PLATFORM_MOTCE )
285
- m_bFullScreen = RHOCONF().getBool("full_screen");
286
- #endif
287
- if (RHOCONF().getBool("full_screen"))
288
- SetFullScreen(true);
325
+ HRESULT hr = S_OK;
326
+ #ifndef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
327
+ // set up connection point
328
+ hr = AtlAdviseSinkMap(this, true);
289
329
  #endif
290
330
 
291
- RHO_ASSERT(SUCCEEDED(hr));
292
-
293
- rho_rhodesapp_callUiCreatedCallback();
294
-
295
- return SUCCEEDED(hr) ? 0 : -1;
296
331
  }
297
332
 
298
333
  void CMainWindow::performOnUiThread(rho::common::IRhoRunnable* pTask)
299
334
  {
300
335
  PostMessage(WM_EXECUTE_RUNNABLE, 0, (LPARAM)pTask);
301
336
  }
337
+
302
338
  LRESULT CMainWindow::OnExecuteRunnable(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
303
339
  {
304
340
  rho::common::IRhoRunnable* pTask = (rho::common::IRhoRunnable*)lParam;
@@ -308,11 +344,13 @@ LRESULT CMainWindow::OnExecuteRunnable(UINT /*uMsg*/, WPARAM wParam, LPARAM lPar
308
344
  delete pTask;
309
345
  }
310
346
  return 0;
311
- }
347
+ }
348
+
312
349
  LRESULT CMainWindow::OnSetText(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
313
350
  {
314
351
  return TRUE;
315
352
  }
353
+
316
354
  LRESULT CMainWindow::OnNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
317
355
  {
318
356
  LPNMHDR pnmh = (LPNMHDR) lParam;
@@ -332,32 +370,42 @@ LRESULT CMainWindow::OnNotify(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, B
332
370
 
333
371
  HWND CMainWindow::getWebViewHWND()
334
372
  {
373
+ if (!m_pBrowserEng)
374
+ return 0;
375
+
335
376
  return m_pBrowserEng->GetHTMLWND();
336
377
  }
337
378
 
338
379
  void CMainWindow::hideWebView()
339
380
  {
340
- ::ShowWindow( m_pBrowserEng->GetHTMLWND(), SW_HIDE );
341
- mIsBrowserViewHided = true;
381
+ if ( m_pBrowserEng )
382
+ {
383
+ ::ShowWindow( m_pBrowserEng->GetHTMLWND(), SW_HIDE );
384
+ mIsBrowserViewHided = true;
385
+ }
342
386
  }
343
387
 
344
388
  void CMainWindow::showWebView()
345
389
  {
346
- ::ShowWindow( m_pBrowserEng->GetHTMLWND(), SW_SHOW );
347
- mIsBrowserViewHided = false;
390
+ if ( m_pBrowserEng )
391
+ {
392
+ ::ShowWindow( m_pBrowserEng->GetHTMLWND(), SW_SHOW );
393
+ mIsBrowserViewHided = false;
394
+ }
348
395
  }
349
396
 
350
397
  LRESULT CMainWindow::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
351
398
  {
352
399
  rho_rhodesapp_callUiDestroyedCallback();
353
400
 
354
- #if defined (_WIN32_WCE) && !defined(OS_PLATFORM_MOTCE)
401
+ #if defined (_WIN32_WCE)// && !defined(OS_PLATFORM_MOTCE)
355
402
  m_menuBar = NULL;
356
- ShowTaskBar(true, false);
357
- //SetFullScreen(false);
403
+ RhoSetFullScreen(false, true);
404
+
358
405
  #endif
406
+
359
407
 
360
- #if defined(OS_WINDOWS)
408
+ #if defined(OS_WINDOWS_DESKTOP)
361
409
  if(m_logView.IsWindow()) {
362
410
  m_logView.DestroyWindow();
363
411
  }
@@ -369,7 +417,9 @@ LRESULT CMainWindow::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam
369
417
  RHO_ASSERT(SUCCEEDED(AtlAdviseSinkMap(this, false)));
370
418
  #endif
371
419
 
372
- delete m_pBrowserEng;
420
+ if ( m_pBrowserEng )
421
+ delete m_pBrowserEng;
422
+
373
423
  m_pBrowserEng = NULL;
374
424
 
375
425
  PostQuitMessage(0);
@@ -380,26 +430,49 @@ LRESULT CMainWindow::OnDestroy(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam
380
430
 
381
431
  LRESULT CMainWindow::OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
382
432
  {
383
- if ( (!m_pBrowserEng) || (!m_pBrowserEng->GetHTMLWND()) )
384
- return 0;
433
+ resizeWindow(LOWORD(lParam), HIWORD(lParam));
434
+ return 0;
435
+ }
436
+
437
+ #if defined(_WIN32_WCE)
438
+ int getSIPVisibleTop() {
439
+ SIPINFO pSipInfo;
440
+ memset(&pSipInfo, 0, sizeof(SIPINFO));
441
+ pSipInfo.cbSize = sizeof(SIPINFO);
442
+ pSipInfo.dwImDataSize = 0;
443
+ if (SipGetInfo(&pSipInfo))
444
+ return (pSipInfo.fdwFlags & SIPF_ON) ? pSipInfo.rcSipRect.top : -1;
445
+ return -1;
446
+ }
447
+ #endif
385
448
 
386
- #if defined(OS_WINDOWS)
449
+ void CMainWindow::resizeWindow( int xSize, int ySize)
450
+ {
451
+ LOG(INFO) + "resizeWindow: xSize=" + xSize + ";ySize=" + ySize;
452
+
453
+ #if defined(OS_WINDOWS_DESKTOP)
387
454
  USES_CONVERSION;
388
- LOG(TRACE) + "Seting browser client area size to: " + (int)LOWORD(lParam) + " x " + (int)(HIWORD(lParam)-m_menuBarHeight-m_toolbar.getHeight());
389
- //m_browser.MoveWindow(0, 0, LOWORD(lParam), HIWORD(lParam)-m_menuBarHeight-m_toolbar.getHeight());
390
- RECT rect = {0, 0, LOWORD(lParam), HIWORD(lParam)-m_menuBarHeight-m_toolbar.getHeight()};
391
- m_pBrowserEng->ResizeOnTab(0, rect);
455
+ LOG(TRACE) + "Seting browser client area size to: " + xSize + " x " + (ySize-m_menuBarHeight-m_toolbar.getHeight());
456
+ //m_browser.MoveWindow(0, 0, xSize, ySize-m_menuBarHeight-m_toolbar.getHeight());
457
+ RECT rect = {0, 0, xSize, ySize-m_menuBarHeight-m_toolbar.getHeight()};
458
+
459
+ if ( m_pBrowserEng && m_pBrowserEng->GetHTMLWND() )
460
+ m_pBrowserEng->ResizeOnTab(0, rect);
392
461
 
393
462
  if (m_menuBar.m_hWnd) {
394
- m_menuBar.MoveWindow(0, HIWORD(lParam)-m_menuBarHeight, LOWORD(lParam), m_menuBarHeight);
463
+ m_menuBar.MoveWindow(0, ySize-m_menuBarHeight, xSize, m_menuBarHeight);
395
464
  }
396
465
  if ( m_toolbar.m_hWnd )
397
- m_toolbar.MoveWindow(0, HIWORD(lParam)-m_menuBarHeight-m_toolbar.getHeight(), LOWORD(lParam), m_toolbar.getHeight());
466
+ m_toolbar.MoveWindow(0, ySize-m_menuBarHeight-m_toolbar.getHeight(), xSize, m_toolbar.getHeight());
398
467
  #else
399
- LOG(INFO) + "OnSize: x=" + (int)(LOWORD(lParam)) + ";y=" + (int)(HIWORD(lParam));
400
468
 
401
- //m_browser.MoveWindow(0, 0, LOWORD(lParam), HIWORD(lParam)- m_toolbar.getHeight());
402
- RECT rect = {0, 0, LOWORD(lParam), HIWORD(lParam) };//- m_toolbar.getHeight()};
469
+ //#if defined(_WIN32_WCE)
470
+ // int SIPtop = getSIPVisibleTop();
471
+ // if (m_bFullScreen && (SIPtop>=0))
472
+ // ySize = SIPtop;
473
+ //#endif
474
+
475
+ RECT rect = {0, 0, xSize, ySize };//- m_toolbar.getHeight()};
403
476
 
404
477
  if ( m_toolbar.m_hWnd )
405
478
  rect.bottom -= m_toolbar.getHeight();
@@ -412,16 +485,21 @@ LRESULT CMainWindow::OnSize(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOO
412
485
  m_menuBarHeight = rcCmdBar.Height();
413
486
 
414
487
  rect.top += m_menuBarHeight;
488
+
489
+ rcCmdBar.right = rcCmdBar.left + ySize;
490
+
491
+ ::SetWindowPos(g_hWndCommandBar, NULL, 0,0, rcCmdBar.Width(), rcCmdBar.Height(), SWP_FRAMECHANGED|SWP_NOMOVE|SWP_NOOWNERZORDER|SWP_NOZORDER);
492
+ //::MoveWindow( g_hWndCommandBar, rcCmdBar.left, rcCmdBar.top, rcCmdBar.Width(), rcCmdBar.Height(), TRUE );
415
493
  }
416
494
  #endif
417
495
 
418
- m_pBrowserEng->ResizeOnTab(0, rect);
496
+ if ( m_pBrowserEng && m_pBrowserEng->GetHTMLWND() )
497
+ m_pBrowserEng->ResizeOnTab(0, rect);
419
498
 
420
499
  if ( m_toolbar.m_hWnd )
421
- m_toolbar.MoveWindow(0, HIWORD(lParam)-m_toolbar.getHeight(), LOWORD(lParam), m_toolbar.getHeight());
500
+ m_toolbar.MoveWindow(0, ySize-m_toolbar.getHeight(), xSize, m_toolbar.getHeight());
422
501
  #endif
423
502
 
424
- return 0;
425
503
  }
426
504
 
427
505
  LRESULT CMainWindow::OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/, BOOL& bHandled)
@@ -433,6 +511,14 @@ LRESULT CMainWindow::OnPaint(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lParam*/
433
511
  return 0;
434
512
  }
435
513
 
514
+ LRESULT CMainWindow::OnWebKitMessages(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
515
+ {
516
+ if ( !m_pBrowserEng )
517
+ return 0;
518
+
519
+ return m_pBrowserEng->OnWebKitMessages(uMsg, wParam, lParam, bHandled);
520
+ }
521
+
436
522
  #ifdef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
437
523
  LRESULT CMainWindow::OnBrowserDocumentComplete (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
438
524
  {
@@ -452,11 +538,6 @@ LRESULT CMainWindow::OnTitleChange (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lPa
452
538
  return 0;
453
539
  }
454
540
 
455
- LRESULT CMainWindow::OnWebKitMessages(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
456
- {
457
- return m_pBrowserEng->OnWebKitMessages(uMsg, wParam, lParam, bHandled);
458
- }
459
-
460
541
  LRESULT CMainWindow::OnBeforeNavigate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
461
542
  {
462
543
  Rhodes_WM_ProcessBeforeNavigate((LPCTSTR)lParam);
@@ -483,17 +564,38 @@ LRESULT CMainWindow::OnAlertPopup (UINT /*uMsg*/, WPARAM wParam, LPARAM lParam,
483
564
  return RHODESAPP().getExtManager().OnAlertPopup(wParam, (void*)lParam);
484
565
  }
485
566
 
567
+ LRESULT CMainWindow::OnAuthenticationRequest (UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
568
+ {
569
+ return RHODESAPP().getExtManager().OnAuthenticationRequest(wParam, (void*)lParam);
570
+ }
571
+
572
+ //LRESULT CMainWindow::OnGeolocationData (UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
573
+ //{
574
+ // return RHODESAPP().getExtManager().OnGeolocationData(wParam, (void*)lParam);
575
+ //}
576
+
486
577
  #endif //APP_BUILD_CAPABILITY_WEBKIT_BROWSER
487
578
 
488
579
  LRESULT CMainWindow::OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
489
580
  {
581
+ int fActive = LOWORD(wParam);
582
+ LOG(INFO) + "ACTIVATE: " + fActive;
583
+
490
584
  if (lParam) //We get activate from some internal window
585
+ {
586
+ #if defined(_WIN32_WCE)
587
+ if (m_bFullScreen && fActive && (getSIPVisibleTop()<0))
588
+ RhoSetFullScreen(true);
589
+ #endif
491
590
  return 0;
591
+ }
492
592
 
493
- int fActive = LOWORD(wParam);
593
+ #if defined(_WIN32_WCE)
594
+ if (m_bFullScreen)
595
+ RhoSetFullScreen(fActive!=0);
596
+ #endif
494
597
  rho_rhodesapp_callAppActiveCallback(fActive);
495
598
  RHODESAPP().getExtManager().OnAppActivate(fActive!=0);
496
-
497
599
  #if defined(_WIN32_WCE) && !defined (OS_PLATFORM_MOTCE)
498
600
  // Notify shell of our WM_ACTIVATE message
499
601
  SHHandleWMActivate(m_hWnd, wParam, lParam, &m_sai, 0);
@@ -514,7 +616,6 @@ LRESULT CMainWindow::OnActivate(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOO
514
616
 
515
617
  if (!fActive)
516
618
  rho_geoimpl_turngpsoff();
517
-
518
619
  return 0;
519
620
  }
520
621
 
@@ -522,7 +623,7 @@ LRESULT CMainWindow::OnSetCookieCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND
522
623
  {
523
624
  TCookieData* cd = (TCookieData*)hWndCtl;
524
625
  if (cd) {
525
- if (cd->url && cd->cookie) {
626
+ if (m_pBrowserEng && cd->url && cd->cookie) {
526
627
  m_pBrowserEng->SetCookie(cd->url, cd->cookie);
527
628
  if (cd->url) free(cd->url);
528
629
  if (cd->cookie) free(cd->cookie);
@@ -649,8 +750,9 @@ void CMainWindow::restoreWebView() {
649
750
  }
650
751
 
651
752
 
652
- LRESULT CMainWindow::OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
753
+ LRESULT CMainWindow::OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& bHandled )
653
754
  {
755
+ LOG(INFO) + "OnSettingChange: " + wParam;
654
756
  #if defined(_WIN32_WCE)
655
757
 
656
758
  //handle sreen rotation
@@ -658,18 +760,132 @@ LRESULT CMainWindow::OnSettingChange(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam
658
760
  int height = GetSystemMetrics(SM_CYSCREEN);
659
761
 
660
762
  if (wParam == SETTINGCHANGE_RESET) {
661
- rho_rhodesapp_callScreenRotationCallback(width, height, 90);
763
+
764
+ rho_rhodesapp_callScreenRotationCallback(width, height, (m_bFullScreen ? 0 : 90) );
765
+
766
+ // if (m_pBrowserEng)
767
+ // m_pBrowserEng->OnWebKitMessages(PB_SCREEN_ORIENTATION_CHANGED, wParam, lParam, bHandled);
768
+
769
+ #if defined (OS_PLATFORM_MOTCE)
770
+
771
+ RECT rcMain;
772
+ calculateMainWindowRect(rcMain);
773
+ MoveWindow( rcMain.left, rcMain.top, rcMain.right-rcMain.left, rcMain.bottom-rcMain.top, TRUE );
774
+ #endif
775
+
776
+ //} else if (wParam == SPI_SIPMOVE) {
777
+ } else if (rho_wmimpl_get_resize_on_sip() && (wParam == SPI_SETSIPINFO)) {
778
+ SIPINFO pSipInfo;
779
+ memset(&pSipInfo, 0, sizeof(SIPINFO));
780
+ pSipInfo.cbSize = sizeof(SIPINFO);
781
+ pSipInfo.dwImDataSize = 0;
782
+ if (SipGetInfo(&pSipInfo)) {
783
+ bool isHiding = (pSipInfo.fdwFlags & SIPF_ON) == 0;
784
+
785
+ if ( isHiding && !m_bFullScreen )
786
+ {
787
+ RECT rcMain;
788
+ calculateMainWindowRect(rcMain);
789
+ MoveWindow( rcMain.left, rcMain.top, rcMain.right-rcMain.left, rcMain.bottom-rcMain.top, TRUE );
790
+ return 0;
791
+ }
792
+
793
+ if (m_bFullScreen)
794
+ pSipInfo.rcVisibleDesktop.top = 0;
795
+
796
+ int bottom = height - ( m_bFullScreen ? 0 : GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYFIXEDFRAME) );
797
+
798
+ bool doSIPmove = false;
799
+ if (isHiding) {
800
+ // when hiding SIP, main window is expanded to cover an entire screen
801
+ pSipInfo.rcVisibleDesktop.bottom = bottom;
802
+ } else {
803
+ LONG deltaY = bottom - pSipInfo.rcSipRect.bottom;
804
+ if (deltaY != 0) {
805
+ pSipInfo.rcSipRect.top += deltaY;
806
+ pSipInfo.rcSipRect.bottom += deltaY;
807
+ doSIPmove = true;
808
+ }
809
+ #if defined (OS_PLATFORM_MOTCE)
810
+ if ((pSipInfo.rcSipRect.left != 0) || (pSipInfo.rcSipRect.right != width)) {
811
+ pSipInfo.rcSipRect.left = 0;
812
+ pSipInfo.rcSipRect.right = width;
813
+ doSIPmove = true;
814
+ }
815
+ #endif
816
+ pSipInfo.rcVisibleDesktop.bottom = pSipInfo.rcSipRect.top;
817
+ }
818
+ CRect cRect;
819
+ this->GetClientRect(&cRect);
820
+ if ((cRect.bottom != pSipInfo.rcVisibleDesktop.bottom) ||
821
+ (cRect.top != pSipInfo.rcVisibleDesktop.top) ||
822
+ (cRect.left != pSipInfo.rcVisibleDesktop.left) ||
823
+ (cRect.right != pSipInfo.rcVisibleDesktop.right))
824
+ {
825
+ MoveWindow(&pSipInfo.rcVisibleDesktop, TRUE);
826
+ }
827
+ if (doSIPmove && (!isHiding)) {
828
+ HWND sipHWND = FindWindow(L"SipWndClass", NULL);
829
+ if (sipHWND) {
830
+ ::SetWindowPos(sipHWND, 0, pSipInfo.rcSipRect.left, pSipInfo.rcSipRect.top,
831
+ pSipInfo.rcSipRect.right-pSipInfo.rcSipRect.left, pSipInfo.rcSipRect.bottom-pSipInfo.rcSipRect.top,
832
+ SWP_SHOWWINDOW);
833
+ }
834
+ }
835
+ #if defined (OS_PLATFORM_MOTCE)
836
+ if (m_toolbar.m_hWnd)
837
+ #else
838
+ if (m_bFullScreen && m_toolbar.m_hWnd)
839
+ #endif
840
+ m_toolbar.MoveWindow(0, (isHiding ? bottom : pSipInfo.rcSipRect.top) - m_toolbar.getHeight(), width, m_toolbar.getHeight());
841
+
842
+ if ( m_bFullScreen && isHiding )
843
+ hideSIPButton();
844
+ }
662
845
  }
663
846
 
664
847
  #if !defined (OS_PLATFORM_MOTCE)
665
848
  // Notify shell of our WM_SETTINGCHANGE message
666
- SHHandleWMSettingChange(m_hWnd, wParam, lParam, &m_sai);
849
+ //SHHandleWMSettingChange(m_hWnd, wParam, lParam, &m_sai);
667
850
  #endif
668
851
 
669
852
  #endif
670
853
  return 0;
671
854
  }
672
855
 
856
+ LRESULT CMainWindow::OnHotKey (UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
857
+ {
858
+ LOG(INFO) + "OnHotKey : " + wParam;
859
+ bHandled = TRUE;
860
+
861
+ return 1;
862
+ }
863
+
864
+ LRESULT CMainWindow::OnSetFocus (UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
865
+ {
866
+ HWND hBrowserWnd = m_pBrowserEng ? m_pBrowserEng->GetHTMLWND() : NULL;
867
+
868
+ if (hBrowserWnd && !::IsIconic(m_hWnd))
869
+ {
870
+ HWND hWndLostFocus = (HWND)wParam;
871
+ if (hWndLostFocus == hBrowserWnd)
872
+ return 0;
873
+
874
+ WCHAR wWindowName[30];
875
+ if (hWndLostFocus && GetClassName(hWndLostFocus, wWindowName, 30))
876
+ {
877
+ // Allow the following windows to remain having focus, avoids
878
+ // the bug where we're unable to select anything from a combo
879
+ // box
880
+ if (wcscmp(wWindowName, L"PopupWindowClass") == 0)
881
+ return 0;
882
+ }
883
+ ::SetFocus(hBrowserWnd);
884
+ }
885
+
886
+ return 0;
887
+ }
888
+
673
889
  // **************************************************************************
674
890
  //
675
891
  // WM_COMMAND handlers
@@ -685,14 +901,19 @@ LRESULT CMainWindow::OnExitCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hW
685
901
  LRESULT CMainWindow::OnNavigateBackCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
686
902
  {
687
903
  restoreWebView();
688
- m_pBrowserEng->BackOnTab(0, 1);
904
+
905
+ if ( m_pBrowserEng )
906
+ m_pBrowserEng->BackOnTab(0, 1);
907
+
689
908
  return 0;
690
909
  }
691
910
 
692
911
  LRESULT CMainWindow::OnNavigateForwardCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
693
912
  {
694
913
  restoreWebView();
695
- m_pBrowserEng->ForwardOnTab(0);
914
+
915
+ if ( m_pBrowserEng )
916
+ m_pBrowserEng->ForwardOnTab(0);
696
917
 
697
918
  return 0;
698
919
  }
@@ -705,7 +926,7 @@ LRESULT CMainWindow::OnBackCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hW
705
926
 
706
927
  LRESULT CMainWindow::OnLogCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
707
928
  {
708
- #if defined(OS_WINDOWS)
929
+ #if defined(OS_WINDOWS_DESKTOP)
709
930
  if ( !m_logView.IsWindow() ) {
710
931
  LoadLibrary(_T("riched20.dll"));
711
932
  m_logView.Create(NULL);
@@ -721,15 +942,18 @@ LRESULT CMainWindow::OnLogCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWn
721
942
 
722
943
  LRESULT CMainWindow::OnFullscreenCommand (WORD /*wNotifyCode*/, WORD /*wID*/, HWND hwnd, BOOL& /*bHandled*/)
723
944
  {
945
+ LOG(INFO) + "OnFullscreenCommand";
724
946
  #if defined (_WIN32_WCE)
725
- SetFullScreen( hwnd != 0 ? true : false);
947
+ RhoSetFullScreen(m_bFullScreen = (hwnd != 0 ? true : false));
726
948
  #endif
727
949
  return 0;
728
950
  };
729
951
 
730
952
  LRESULT CMainWindow::OnRefreshCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
731
953
  {
732
- m_pBrowserEng->ReloadOnTab(false, 0);
954
+ if ( m_pBrowserEng )
955
+ m_pBrowserEng->ReloadOnTab(false, 0);
956
+
733
957
  return 0;
734
958
  }
735
959
 
@@ -749,7 +973,9 @@ LRESULT CMainWindow::OnExecuteJSCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND
749
973
  LPTSTR wcurl = (LPTSTR)hWndCtl;
750
974
  if (wcurl)
751
975
  {
752
- m_pBrowserEng->executeJavascript(wcurl,0);
976
+ if ( m_pBrowserEng )
977
+ m_pBrowserEng->executeJavascript(wcurl,0);
978
+
753
979
  free(wcurl);
754
980
  }
755
981
  return 0;
@@ -757,25 +983,30 @@ LRESULT CMainWindow::OnExecuteJSCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND
757
983
 
758
984
  LRESULT CMainWindow::OnStopNavigate(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
759
985
  {
760
- m_pBrowserEng->StopOnTab((UINT)hWndCtl);
986
+ if ( m_pBrowserEng )
987
+ m_pBrowserEng->StopOnTab((UINT)hWndCtl);
988
+
761
989
  return 0;
762
990
  }
763
991
 
764
992
  LRESULT CMainWindow::OnZoomPage(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
765
993
  {
766
994
  float fZoom = (float)(long)(hWndCtl);
767
- m_pBrowserEng->ZoomPageOnTab(fZoom, rho_webview_active_tab());
995
+ if ( m_pBrowserEng )
996
+ m_pBrowserEng->ZoomPageOnTab(fZoom, rho_webview_active_tab());
997
+
768
998
  return 0;
769
999
  }
770
1000
 
771
1001
  LRESULT CMainWindow::OnZoomText(WORD /*wNotifyCode*/, WORD /*wID*/, HWND hWndCtl, BOOL& /*bHandled*/)
772
1002
  {
773
1003
  int nZoom = (int)hWndCtl;
774
- m_pBrowserEng->ZoomTextOnTab(nZoom, rho_webview_active_tab());
1004
+ if ( m_pBrowserEng )
1005
+ m_pBrowserEng->ZoomTextOnTab(nZoom, rho_webview_active_tab());
775
1006
  return 0;
776
1007
  }
777
1008
 
778
- #if defined(OS_WINDOWS) || defined( OS_PLATFORM_MOTCE )
1009
+ #if defined (OS_WINDOWS_DESKTOP) || defined( OS_PLATFORM_MOTCE )
779
1010
  LRESULT CMainWindow::OnPopupMenuCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
780
1011
  {
781
1012
  createCustomMenu();
@@ -783,7 +1014,7 @@ LRESULT CMainWindow::OnPopupMenuCommand(WORD /*wNotifyCode*/, WORD /*wID*/, HWND
783
1014
  }
784
1015
  #endif
785
1016
 
786
- #if defined(OS_WINDOWS)
1017
+ #if defined(OS_WINDOWS_DESKTOP)
787
1018
  LRESULT CMainWindow::OnPosChanged(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& bHandled)
788
1019
  {
789
1020
  LPWINDOWPOS lp = (LPWINDOWPOS)lParam;
@@ -800,7 +1031,13 @@ LRESULT CMainWindow::OnTakePicture(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lPar
800
1031
  HRESULT status;
801
1032
  #if defined (_WIN32_WCE)
802
1033
  Camera camera;
1034
+ #ifdef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
1035
+ RHODESAPP().m_cameraOpened = true;
1036
+ #endif
803
1037
  status = camera.takePicture(this->m_hWnd,image_uri);
1038
+ #ifdef APP_BUILD_CAPABILITY_WEBKIT_BROWSER
1039
+ RHODESAPP().m_cameraOpened = false;
1040
+ #endif
804
1041
  #else
805
1042
  //TODO: show browse file dialog
806
1043
  wsprintf( image_uri, L"%s", L"dashboard.PNG");
@@ -940,7 +1177,7 @@ LRESULT CMainWindow::OnBluetoothDiscover (UINT /*uMsg*/, WPARAM /*wParam*/, LPAR
940
1177
  #if defined( OS_WINCE) && !defined( OS_PLATFORM_MOTCE )
941
1178
  RhoDiscoverDlg* dlg = RhoBluetoothManager::getInstance()->getDiscoverDlg();
942
1179
  dlg->openDialog(RhoBluetoothManager::getInstance());
943
- #endif // OS_WINDOWS
1180
+ #endif //
944
1181
  return 0;
945
1182
  }
946
1183
 
@@ -948,7 +1185,7 @@ LRESULT CMainWindow::OnBluetoothDiscovered (UINT /*uMsg*/, WPARAM /*wParam*/, LP
948
1185
  #if defined( OS_WINCE) && !defined( OS_PLATFORM_MOTCE )
949
1186
  RhoDiscoveredDlg* dlg = RhoBluetoothManager::getInstance()->getDiscoveredDlg();
950
1187
  dlg->openDialog(RhoBluetoothManager::getInstance());
951
- #endif // OS_WINDOWS
1188
+ #endif //
952
1189
  return 0;
953
1190
  }
954
1191
 
@@ -960,6 +1197,24 @@ LRESULT CMainWindow::OnExecuteCommand(UINT /*uMsg*/, WPARAM wParam, LPARAM lPara
960
1197
  return 0;
961
1198
  }
962
1199
 
1200
+
1201
+ LRESULT CMainWindow::OnLicenseScreen(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
1202
+ {
1203
+ LOG(INFO) + "OnLicenseScreen";
1204
+ #if defined( OS_WINCE )
1205
+ if (!m_bFullScreen) {
1206
+ RhoSetFullScreen(wParam != 0);
1207
+ /* HWND hTaskBar = FindWindow(_T("HHTaskBar"), NULL);
1208
+ if(hTaskBar) {
1209
+ bool bEnableTaskBar = (wParam == 0);
1210
+ ::ShowWindow(hTaskBar, (bEnableTaskBar ? SW_SHOW : SW_HIDE));
1211
+ ::EnableWindow(hTaskBar, bEnableTaskBar);
1212
+ }*/
1213
+ }
1214
+ #endif
1215
+ return 0;
1216
+ }
1217
+
963
1218
  LRESULT CMainWindow::OnBluetoothCallback(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/) {
964
1219
  char* callback_url = (char*)wParam;
965
1220
  char* body = (char*)lParam;
@@ -1077,7 +1332,7 @@ void __stdcall CMainWindow::OnNavigateComplete2(IDispatch* pDisp, VARIANT * pvtU
1077
1332
 
1078
1333
  void CMainWindow::ProcessNavigateComplete(LPCTSTR url)
1079
1334
  {
1080
- if ( !m_bLoading && !mIsBrowserViewHided )
1335
+ if ( !m_bLoading && !mIsBrowserViewHided && m_pBrowserEng )
1081
1336
  ::ShowWindow(m_pBrowserEng->GetHTMLWND(), SW_SHOW);
1082
1337
 
1083
1338
 
@@ -1104,12 +1359,13 @@ void CMainWindow::ShowLoadingPage()
1104
1359
  strTextW = L"<html><head><title>Loading...</title></head><body><h1>Loading...</h1></body></html>";
1105
1360
  }
1106
1361
 
1107
- m_pBrowserEng->NavigateToHtml(strTextW.c_str());
1362
+ if ( m_pBrowserEng )
1363
+ m_pBrowserEng->NavigateToHtml(strTextW.c_str());
1108
1364
  }
1109
1365
 
1110
1366
  void __stdcall CMainWindow::OnDocumentComplete(IDispatch* pDisp, VARIANT * pvtURL)
1111
1367
  {
1112
- USES_CONVERSION;
1368
+ USES_CONVERSION;
1113
1369
 
1114
1370
  ProcessDocumentComplete( OLE2CT(V_BSTR(pvtURL)) );
1115
1371
  }
@@ -1135,10 +1391,14 @@ void CMainWindow::ProcessDocumentComplete(LPCTSTR url)
1135
1391
  if (m_pageCounter > 2) //"loading" page + first page
1136
1392
  SetToolbarButtonEnabled(IDM_SK1_EXIT, TRUE);
1137
1393
  #endif
1138
-
1394
+
1139
1395
  //CMetaHandler oHandler(m_spIWebBrowser2);
1140
1396
 
1397
+ if ( m_pBrowserEng )
1398
+ m_pBrowserEng->OnDocumentComplete(url);
1399
+
1141
1400
  RHODESAPP().getExtManager().onDocumentComplete(url);
1401
+
1142
1402
  }
1143
1403
 
1144
1404
  void __stdcall CMainWindow::OnCommandStateChange(long lCommand, BOOL bEnable)
@@ -1192,19 +1452,12 @@ BOOL CMainWindow::TranslateAccelerator(MSG* pMsg)
1192
1452
  {
1193
1453
  #if defined( OS_WINCE) && !defined( OS_PLATFORM_MOTCE )
1194
1454
  if (pMsg->message == WM_CONTEXTMENU){
1195
- /*
1196
- CMenuHandle menu;
1197
- menu.LoadMenu(IDR_MAIN_MENU);
1198
- menu = menu.GetSubMenu(0);
1199
- return menu.TrackPopupMenu( TPM_CENTERALIGN | TPM_VERTICAL, LOWORD(pMsg->lParam), HIWORD(pMsg->lParam), m_hWnd);
1200
- */
1201
-
1202
1455
  return TRUE;
1203
1456
  }
1204
1457
 
1205
1458
  if (m_bFullScreen && pMsg->message == WM_KEYUP &&
1206
1459
  (pMsg->wParam == VK_F1 || pMsg->wParam == VK_F2))
1207
- SetFullScreen(false);
1460
+ RhoSetFullScreen(false);
1208
1461
  #endif
1209
1462
 
1210
1463
  // Accelerators are only keyboard or mouse messages
@@ -1260,14 +1513,14 @@ BOOL CMainWindow::TranslateAccelerator(MSG* pMsg)
1260
1513
  return FALSE;
1261
1514
  }
1262
1515
 
1263
- #if defined (OS_WINDOWS) || defined( OS_PLATFORM_MOTCE )
1516
+ #if defined (OS_WINDOWS_DESKTOP) || defined( OS_PLATFORM_MOTCE )
1264
1517
  void CMainWindow::createCustomMenu()
1265
1518
  {
1266
1519
  CMenu menu;
1267
1520
  CMenu sub;
1268
1521
  CMenu popup;
1269
1522
 
1270
- if (!m_pBrowserEng->GetHTMLWND())
1523
+ if (!m_pBrowserEng || !m_pBrowserEng->GetHTMLWND())
1271
1524
  return;
1272
1525
 
1273
1526
  VERIFY(menu.CreateMenu());
@@ -1383,43 +1636,48 @@ LRESULT CMainWindow::OnCustomToolbarItemCommand (WORD /*wNotifyCode*/, WORD wID
1383
1636
 
1384
1637
  extern "C" LRESULT rho_wmimpl_draw_splash_screen(HWND hWnd)
1385
1638
  {
1639
+ LOG(INFO) + "PAINT";
1386
1640
  CSplashScreen& splash = RHODESAPP().getSplashScreen();
1387
1641
  splash.start();
1388
- StringW pathW = convertToStringW(RHODESAPP().getLoadingPngPath());
1389
-
1390
- HBITMAP hbitmap = SHLoadImageFile(pathW.c_str());
1391
-
1392
- if (!hbitmap)
1393
- return 0;
1394
1642
 
1395
1643
  PAINTSTRUCT ps;
1396
1644
  HDC hDC = BeginPaint(hWnd, &ps);
1397
1645
 
1398
- BITMAP bmp;
1399
- GetObject(hbitmap, sizeof(bmp), &bmp);
1400
-
1401
- HDC hdcMem = CreateCompatibleDC(hDC);
1402
- HGDIOBJ resObj = SelectObject(hdcMem, hbitmap);
1403
-
1404
- RECT rcClient;
1405
- GetClientRect(hWnd, &rcClient);
1406
- int nLeft = rcClient.left, nTop=rcClient.top, nWidth = bmp.bmWidth, nHeight=bmp.bmHeight, Width = rcClient.right - rcClient.left, Height = rcClient.bottom - rcClient.top;
1407
- if (splash.isFlag(CSplashScreen::HCENTER) )
1408
- nLeft = (Width-nWidth)/2;
1409
- if (splash.isFlag(CSplashScreen::VCENTER) )
1410
- nTop = (Height-nHeight)/2;
1411
- if (splash.isFlag(CSplashScreen::VZOOM) )
1412
- nHeight = Height;
1413
- if (splash.isFlag(CSplashScreen::HZOOM) )
1414
- nWidth = Width;
1415
-
1416
- StretchBlt(hDC, nLeft, nTop, nWidth, nHeight,
1417
- hdcMem, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
1418
- //BitBlt(hDC, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), hdcMem, 0, 0, SRCCOPY);
1419
-
1420
- SelectObject(hdcMem, resObj);
1421
- DeleteObject(hbitmap);
1422
- DeleteObject(hdcMem);
1646
+ StringW pathW = convertToStringW(RHODESAPP().getLoadingPngPath());
1647
+
1648
+ HBITMAP hbitmap = SHLoadImageFile(pathW.c_str());
1649
+
1650
+ if (hbitmap)
1651
+ {
1652
+ BITMAP bmp;
1653
+ GetObject(hbitmap, sizeof(bmp), &bmp);
1654
+
1655
+ RECT rcClient;
1656
+ GetClientRect(hWnd, &rcClient);
1657
+
1658
+ CDC hdcMem = CreateCompatibleDC(hDC);
1659
+ hdcMem.FillSolidRect(&rcClient, RGB(255,255,255));
1660
+
1661
+ HGDIOBJ resObj = SelectObject(hdcMem, hbitmap);
1662
+
1663
+ int nLeft = rcClient.left, nTop=rcClient.top, nWidth = bmp.bmWidth, nHeight=bmp.bmHeight, Width = rcClient.right - rcClient.left, Height = rcClient.bottom - rcClient.top;
1664
+ if (splash.isFlag(CSplashScreen::HCENTER) )
1665
+ nLeft = (Width-nWidth)/2;
1666
+ if (splash.isFlag(CSplashScreen::VCENTER) )
1667
+ nTop = (Height-nHeight)/2;
1668
+ if (splash.isFlag(CSplashScreen::VZOOM) )
1669
+ nHeight = Height;
1670
+ if (splash.isFlag(CSplashScreen::HZOOM) )
1671
+ nWidth = Width;
1672
+
1673
+ StretchBlt(hDC, nLeft, nTop, nWidth, nHeight,
1674
+ hdcMem, 0, 0, bmp.bmWidth, bmp.bmHeight, SRCCOPY);
1675
+ //BitBlt(hDC, 0, 0, GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), hdcMem, 0, 0, SRCCOPY);
1676
+
1677
+ SelectObject(hdcMem, resObj);
1678
+ DeleteObject(hbitmap);
1679
+ //DeleteObject(hdcMem);
1680
+ }
1423
1681
 
1424
1682
  EndPaint(hWnd, &ps);
1425
1683
  return 1;