rhodes 1.5.5 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (529) hide show
  1. data/CHANGELOG +5 -0
  2. data/Manifest.txt +214 -32
  3. data/Rakefile +33 -10
  4. data/bin/upgrade-rhodes-app +0 -1
  5. data/lib/build/compileERB/bb.rb +2 -2
  6. data/lib/build/compileERB/default.rb +7 -5
  7. data/lib/build/jake.rb +1 -1
  8. data/lib/extensions/digest-md5/ext.yml +1 -1
  9. data/lib/extensions/digest-md5/ext/Rakefile +35 -36
  10. data/lib/extensions/digest-md5/ext/build.bat +1 -0
  11. data/lib/extensions/digest-md5/ext/digest-md5.vcproj +203 -0
  12. data/lib/extensions/digest-sha1/ext.yml +1 -1
  13. data/lib/extensions/digest/ext.yml +1 -1
  14. data/lib/extensions/digest/ext/Rakefile +35 -39
  15. data/lib/extensions/digest/ext/build.bat +1 -2
  16. data/lib/extensions/digest/ext/digest.vcproj +203 -0
  17. data/lib/framework/rho/render.rb +79 -22
  18. data/lib/framework/rho/rho.rb +294 -56
  19. data/lib/framework/rho/rhoapplication.rb +10 -0
  20. data/lib/framework/rho/rhofsconnector.rb +2 -6
  21. data/lib/framework/rho/rhoutils.rb +56 -14
  22. data/lib/framework/rho/rhoviewhelpers.rb +2 -0
  23. data/lib/framework/rhodes.rb +2 -2
  24. data/lib/framework/rhom/rhom.rb +42 -15
  25. data/lib/framework/rhom/rhom_db_adapter.rb +165 -159
  26. data/lib/framework/rhom/rhom_object.rb +0 -1
  27. data/lib/framework/rhom/rhom_object_factory.rb +343 -166
  28. data/lib/framework/rhom/rhom_source.rb +28 -15
  29. data/lib/framework/version.rb +2 -2
  30. data/lib/rhodes.rb +2 -2
  31. data/platform/android/Rhodes/AndroidManifest.xml +2 -2
  32. data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +39 -44
  33. data/platform/android/Rhodes/jni/include/JNIRhodes.h +1 -1
  34. data/platform/android/Rhodes/jni/include/details/rhojava.inc +23 -20
  35. data/platform/android/Rhodes/jni/include/jni/com_rhomobile_rhodes_RhoMenu.h +61 -0
  36. data/platform/android/Rhodes/jni/include/jni/com_rhomobile_rhodes_Rhodes.h +16 -0
  37. data/platform/android/Rhodes/jni/include/jni/com_rhomobile_rhodes_alert_Alert.h +21 -0
  38. data/platform/android/Rhodes/jni/include/sslimpl.h +1 -1
  39. data/platform/android/Rhodes/jni/src/alert.cpp +32 -5
  40. data/platform/android/Rhodes/jni/src/callbacks.cpp +51 -21
  41. data/platform/android/Rhodes/jni/src/mapview.cpp +3 -8
  42. data/platform/android/Rhodes/jni/src/menu.cpp +70 -0
  43. data/platform/android/Rhodes/jni/src/navbar.cpp +16 -0
  44. data/platform/android/Rhodes/jni/src/rhodes.cpp +37 -0
  45. data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -3
  46. data/platform/android/Rhodes/jni/src/webview.cpp +21 -7
  47. data/platform/android/Rhodes/res/drawable/alert_alert.png +0 -0
  48. data/platform/android/Rhodes/res/drawable/alert_info.png +0 -0
  49. data/platform/android/Rhodes/res/drawable/alert_question.png +0 -0
  50. data/platform/android/Rhodes/res/drawable/camera.png +0 -0
  51. data/platform/android/Rhodes/res/layout/camera.xml +18 -3
  52. data/platform/android/Rhodes/res/menu/options.xml +0 -10
  53. data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +5 -10
  54. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +12 -0
  55. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhoMenu.java +105 -0
  56. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +157 -122
  57. data/platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java +7 -58
  58. data/platform/android/Rhodes/src/com/rhomobile/rhodes/WebView.java +16 -0
  59. data/platform/android/Rhodes/src/com/rhomobile/rhodes/alert/Alert.java +220 -17
  60. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +22 -4
  61. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +44 -25
  62. data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +10 -0
  63. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java +3 -0
  64. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +10 -21
  65. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +15 -12
  66. data/platform/android/Rhodes/src/com/rhomobile/rhodes/phonebook/Phonebook.java +44 -0
  67. data/platform/android/Rhodes/src/com/rhomobile/rhodes/socket/SSLImpl.java +47 -3
  68. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +13 -6
  69. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/TelUriHandler.java +11 -5
  70. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/UriHandler.java +1 -4
  71. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/VideoUriHandler.java +61 -0
  72. data/platform/android/build/RhodesSRC_build.files +3 -0
  73. data/platform/android/build/android.rake +173 -60
  74. data/platform/android/build/androidcommon.rb +1 -2
  75. data/platform/android/build/librhocommon_build.files +5 -0
  76. data/platform/android/build/librhodes_build.files +2 -0
  77. data/platform/android/build/libruby_build.files +2 -1
  78. data/platform/bb/Hsqldb/Hsqldb.jdp +0 -3
  79. data/platform/bb/Hsqldb/src/com/rho/db/FileUtilBB.java +1 -1
  80. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +16 -1
  81. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +5 -0
  82. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBStorage.java +25 -4
  83. data/platform/bb/Hsqldb/src/com/rho/db/Journal.java +1 -1
  84. data/platform/bb/Hsqldb/src/com/rho/file/FileAccessBB.java +0 -1
  85. data/platform/bb/Hsqldb/src/j2me/math/Number.java +6 -3
  86. data/platform/bb/Hsqldb/src/org/hsqldb/CompiledStatementExecutor.java +2 -1
  87. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +1 -0
  88. data/platform/bb/Hsqldb/src/org/hsqldb/Parser.java +1 -0
  89. data/platform/bb/Hsqldb/src/org/hsqldb/Result.java +2 -0
  90. data/platform/bb/Hsqldb/src/org/hsqldb/Select.java +12 -6
  91. data/platform/bb/Hsqldb/src/org/hsqldb/Session.java +19 -12
  92. data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +10 -4
  93. data/platform/bb/Hsqldb/src/org/hsqldb/Token.java +10 -2
  94. data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +3 -3
  95. data/platform/bb/Hsqldb/src/org/hsqldb/lib/java/JavaSystem.java +1 -1
  96. data/platform/bb/Hsqldb/src/org/hsqldb/persist/HsqlProperties.java +2 -1
  97. data/platform/bb/Hsqldb/src/org/hsqldb/persist/ScaledRAFile.java +1 -1
  98. data/platform/bb/Hsqldb/src/org/hsqldb/scriptio/ScriptReaderText.java +1 -1
  99. data/platform/bb/Hsqldb/src/org/hsqldb/scriptio/ScriptWriterBase.java +1 -1
  100. data/platform/bb/RubyVM/RubyVM.jdp +9 -10
  101. data/platform/bb/build/RubyVM_build.files +9 -7
  102. data/platform/bb/build/bb.rake +13 -3
  103. data/platform/bb/build/hsqldb_build.files +0 -2
  104. data/platform/bb/build/rhodes_build.files +5 -2
  105. data/platform/bb/rhodes/platform/4.7/com/rho/RhoMainScreen.java +8 -0
  106. data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +154 -0
  107. data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +8 -0
  108. data/platform/bb/rhodes/platform/common/com/rho/BrowserAdapter5.java +28 -0
  109. data/platform/bb/rhodes/rhodes.jdp +12 -7
  110. data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +331 -0
  111. data/platform/bb/rhodes/src/com/rho/BrowserAdapter5.java +28 -0
  112. data/platform/bb/rhodes/src/com/rho/IBrowserAdapter.java +10 -0
  113. data/platform/bb/rhodes/src/com/rho/RhoMainScreen.java +4 -0
  114. data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +2 -4
  115. data/platform/bb/rhodes/src/com/rho/{Jsr75File.java → file/Jsr75File.java} +83 -36
  116. data/platform/bb/{Hsqldb → rhodes}/src/com/rho/file/Jsr75RAFileImpl.java +0 -1
  117. data/platform/bb/{Hsqldb → rhodes}/src/com/rho/file/PersistRAFileImpl.java +0 -2
  118. data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +8 -10
  119. data/platform/bb/rhodes/src/com/rho/rubyext/Alert.java +1 -1
  120. data/platform/bb/rhodes/src/com/rho/rubyext/GeoLocation.java +39 -0
  121. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +63 -2
  122. data/platform/bb/rhodes/src/com/rho/rubyext/WebView.java +100 -0
  123. data/platform/bb/rhodes/src/rhomobile/LogScreen.java +1 -1
  124. data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +13 -1
  125. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +138 -492
  126. data/platform/bb/rhodes/src/rhomobile/SecondaryResourceFetchThread.java +11 -2
  127. data/platform/bb/rhodes/src/rhomobile/Utilities.java +14 -10
  128. data/platform/bb/rhodes/src/rhomobile/camera/CameraScreen.java +5 -14
  129. data/platform/bb/rhodes/src/rhomobile/camera/ImageBrowserScreen.java +1 -1
  130. data/platform/bb/rhodes/src/rhomobile/mapview/GoogleMapField.java +2 -2
  131. data/platform/iphone/Classes/AppManager/AppManager.m +37 -14
  132. data/platform/iphone/Classes/Camera/PickImageDelegate.h +15 -4
  133. data/platform/iphone/Classes/Camera/PickImageDelegate.m +53 -50
  134. data/platform/iphone/Classes/DateTimePicker.h +17 -0
  135. data/platform/iphone/Classes/DateTimePicker.m +35 -0
  136. data/platform/iphone/Classes/GeoLocation/LocationController.m +2 -3
  137. data/platform/iphone/Classes/LogOptionsController.m +3 -2
  138. data/platform/iphone/Classes/LogViewController.m +4 -2
  139. data/platform/iphone/Classes/MapView/GoogleGeocoder.m +12 -20
  140. data/platform/iphone/Classes/MapView/MapAnnotation.h +9 -13
  141. data/platform/iphone/Classes/MapView/MapAnnotation.m +17 -65
  142. data/platform/iphone/Classes/MapView/MapViewController.h +1 -7
  143. data/platform/iphone/Classes/MapView/MapViewController.m +51 -25
  144. data/platform/iphone/Classes/NativeBar.h +0 -12
  145. data/platform/iphone/Classes/NativeBar.m +121 -2
  146. data/platform/iphone/Classes/NavBar.h +16 -0
  147. data/platform/iphone/Classes/NavBar.m +115 -0
  148. data/platform/iphone/Classes/RhoAlert.h +19 -0
  149. data/platform/iphone/Classes/RhoAlert.m +258 -0
  150. data/platform/iphone/Classes/RhoDelegate.m +1 -0
  151. data/platform/iphone/Classes/RhoMainView.h +33 -0
  152. data/platform/iphone/Classes/Rhodes.h +56 -0
  153. data/platform/iphone/Classes/Rhodes.m +533 -0
  154. data/platform/iphone/Classes/RingtoneManager.h +17 -0
  155. data/platform/iphone/Classes/RingtoneManager.m +73 -0
  156. data/platform/iphone/Classes/SimpleMainView.h +30 -0
  157. data/platform/iphone/Classes/SimpleMainView.m +380 -0
  158. data/platform/iphone/Classes/TabbedMainView.h +24 -0
  159. data/platform/iphone/Classes/TabbedMainView.m +202 -0
  160. data/platform/iphone/Classes/WebView.m +123 -0
  161. data/platform/iphone/Classes/rho/net/NetRequestImpl.m +2 -2
  162. data/platform/iphone/Classes/rho/net/sslimpl.cpp +13 -1
  163. data/platform/iphone/Classes/rho/net/sslimpl.h +1 -1
  164. data/platform/iphone/Info.plist +1 -1
  165. data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +44 -0
  166. data/platform/iphone/main.m +1 -2
  167. data/platform/iphone/rbuild/iphone.rake +8 -16
  168. data/platform/iphone/rhoextlib/dosyscall.c +1 -1
  169. data/platform/iphone/rhoextlib/rhoextlib.xcodeproj/project.pbxproj +6 -4
  170. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +12 -0
  171. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +97 -62
  172. data/platform/iphone/rhosynclib/rhosynclib.xcodeproj/project.pbxproj +12 -0
  173. data/platform/osx/Rhodes Launcher/launch.rb +14 -21
  174. data/platform/shared/common/AppMenu.cpp +122 -0
  175. data/platform/shared/common/AppMenu.h +46 -0
  176. data/platform/shared/common/PosixThreadImpl.cpp +1 -1
  177. data/platform/shared/common/RhoConf.cpp +27 -2
  178. data/platform/shared/common/RhoConf.h +5 -0
  179. data/platform/shared/common/RhoFilePath.h +21 -0
  180. data/platform/shared/common/RhoStd.h +44 -5
  181. data/platform/shared/common/RhoTime.h +20 -7
  182. data/platform/shared/common/RhodesApp.cpp +236 -177
  183. data/platform/shared/common/RhodesApp.h +36 -13
  184. data/platform/shared/common/SplashScreen.cpp +2 -2
  185. data/platform/shared/common/StringConverter.h +10 -11
  186. data/platform/shared/common/rhoparams.c +0 -6
  187. data/platform/shared/curl/lib/rhossl.c +3 -2
  188. data/platform/shared/curl/lib/url.c +0 -5
  189. data/platform/shared/db/DBAdapter.cpp +304 -81
  190. data/platform/shared/db/DBAdapter.h +24 -7
  191. data/platform/shared/db/DBAttrManager.cpp +83 -30
  192. data/platform/shared/db/DBAttrManager.h +6 -0
  193. data/platform/shared/db/DBResult.h +15 -4
  194. data/platform/shared/json/JSONIterator.cpp +100 -3
  195. data/platform/shared/json/JSONIterator.h +28 -3
  196. data/platform/shared/net/AsyncHttp.cpp +25 -22
  197. data/platform/shared/net/AsyncHttp.h +10 -6
  198. data/platform/shared/net/CURLNetRequest.cpp +115 -36
  199. data/platform/shared/net/CURLNetRequest.h +6 -0
  200. data/platform/shared/net/HttpServer.cpp +6 -4
  201. data/platform/shared/net/HttpServer.h +0 -1
  202. data/platform/shared/net/INetRequest.h +19 -3
  203. data/platform/shared/net/URI.cpp +2 -2
  204. data/platform/shared/net/ssl.cpp +2 -2
  205. data/platform/shared/net/ssl.h +2 -2
  206. data/platform/shared/ruby/ext/alert/alert.i +14 -2
  207. data/platform/shared/ruby/ext/alert/alert_wrap.c +40 -20
  208. data/platform/shared/ruby/ext/asynchttp/asynchttp.i +8 -8
  209. data/platform/shared/ruby/ext/asynchttp/asynchttp_wrap.c +112 -16
  210. data/platform/shared/ruby/ext/geolocation/geolocation.i +16 -12
  211. data/platform/shared/ruby/ext/geolocation/geolocation_wrap.c +481 -125
  212. data/platform/shared/ruby/ext/navbar/navbar.i +20 -0
  213. data/platform/shared/ruby/ext/navbar/navbar_wrap.c +1859 -0
  214. data/platform/shared/ruby/ext/rho/extensions.c +1 -1
  215. data/platform/shared/ruby/ext/rho/rhoruby.c +32 -2
  216. data/platform/shared/ruby/ext/rho/rhoruby.h +7 -2
  217. data/platform/shared/ruby/ext/rhoconf/rhoconf.i +4 -0
  218. data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +31 -0
  219. data/platform/shared/ruby/ext/sqlite3_api/sqlite3_api_wrap.c +188 -3226
  220. data/platform/shared/ruby/ext/syncengine/syncengine.i +14 -25
  221. data/platform/shared/ruby/ext/syncengine/syncengine_wrap.c +96 -104
  222. data/platform/shared/ruby/ext/system/system.i +12 -0
  223. data/platform/shared/ruby/ext/system/system_wrap.c +101 -7
  224. data/platform/shared/ruby/ext/webview/webview.i +20 -15
  225. data/platform/shared/ruby/ext/webview/webview_wrap.c +42 -16
  226. data/platform/shared/ruby/thread_pthread.c +4 -4
  227. data/platform/shared/ruby/thread_win32.c +4 -4
  228. data/platform/shared/ruby/wince/io_wce.c +0 -1
  229. data/platform/shared/rubyJVM/src/com/rho/FilePath.java +18 -2
  230. data/platform/shared/rubyJVM/src/com/rho/IRhoRubyHelper.java +1 -0
  231. data/platform/shared/rubyJVM/src/com/rho/Properties.java +9 -0
  232. data/platform/shared/rubyJVM/src/com/rho/RhoClassFactory.java +2 -3
  233. data/platform/shared/rubyJVM/src/com/rho/RhoConf.java +47 -8
  234. data/platform/shared/rubyJVM/src/com/rho/RhoLogConf.java +1 -0
  235. data/platform/shared/rubyJVM/src/com/rho/RhoLogFileSink.java +1 -0
  236. data/platform/shared/rubyJVM/src/com/rho/RhoRuby.java +43 -5
  237. data/platform/shared/rubyJVM/src/com/rho/RhodesApp.java +98 -3
  238. data/platform/shared/rubyJVM/src/com/rho/db/DBAdapter.java +460 -175
  239. data/platform/shared/rubyJVM/src/com/rho/db/DBAttrManager.java +81 -33
  240. data/platform/shared/rubyJVM/src/com/rho/db/IDBCallback.java +3 -5
  241. data/platform/shared/rubyJVM/src/com/rho/db/IDBResult.java +2 -0
  242. data/platform/shared/rubyJVM/src/com/rho/db/IDBStorage.java +2 -0
  243. data/platform/shared/rubyJVM/src/com/rho/{IFile.java → file/IFile.java} +1 -1
  244. data/platform/shared/rubyJVM/src/com/rho/{IFileAccess.java → file/IFileAccess.java} +1 -1
  245. data/platform/shared/rubyJVM/src/com/rho/{IRAFile.java → file/IRAFile.java} +1 -1
  246. data/platform/{bb/Hsqldb/src/com/rho/db → shared/rubyJVM/src/com/rho/file}/RandomAccessFile.java +1 -2
  247. data/platform/shared/rubyJVM/src/com/rho/{SimpleFile.java → file/SimpleFile.java} +5 -1
  248. data/platform/shared/rubyJVM/src/com/rho/net/AsyncHttp.java +23 -18
  249. data/platform/shared/rubyJVM/src/com/rho/net/NetRequest.java +167 -250
  250. data/platform/shared/rubyJVM/src/com/rho/net/RhoConnection.java +100 -30
  251. data/platform/shared/rubyJVM/src/com/rho/net/URI.java +0 -1
  252. data/platform/shared/rubyJVM/src/com/rho/sync/ClientRegister.java +30 -33
  253. data/platform/shared/rubyJVM/src/com/rho/sync/ISyncProtocol.java +20 -0
  254. data/platform/shared/rubyJVM/src/com/rho/sync/JSONEntry.java +5 -0
  255. data/platform/shared/rubyJVM/src/com/rho/sync/JSONStructIterator.java +74 -0
  256. data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +486 -257
  257. data/platform/shared/rubyJVM/src/com/rho/sync/SyncNotify.java +89 -58
  258. data/platform/shared/rubyJVM/src/com/rho/sync/SyncProtocol_3.java +79 -0
  259. data/platform/shared/rubyJVM/src/com/rho/sync/SyncSource.java +634 -495
  260. data/platform/shared/rubyJVM/src/com/rho/sync/SyncThread.java +74 -90
  261. data/platform/shared/rubyJVM/src/com/xruby/GeneratedMethods/RubySymbol_Methods.java +1 -0
  262. data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyThread.java +6 -0
  263. data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RubyRuntime.java +6 -2
  264. data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RubySymbol.java +17 -1
  265. data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RubyValue.java +1 -0
  266. data/platform/shared/rubyJVM/src/org/json/me/JSONObject.java +3 -0
  267. data/platform/shared/rubyext/GeoLocation.cpp +23 -0
  268. data/platform/shared/rubyext/GeoLocation.h +2 -0
  269. data/platform/shared/rubyext/RhoRuby.cpp +31 -0
  270. data/platform/shared/rubyext/RhoRuby.h +32 -0
  271. data/platform/shared/rubyext/System.cpp +14 -3
  272. data/platform/shared/rubyext/WebView.h +21 -0
  273. data/platform/shared/sync/ClientRegister.cpp +23 -28
  274. data/platform/shared/sync/ClientRegister.h +6 -2
  275. data/platform/shared/sync/ISyncProtocol.h +29 -0
  276. data/platform/shared/sync/SyncEngine.cpp +450 -190
  277. data/platform/shared/sync/SyncEngine.h +28 -38
  278. data/platform/shared/sync/SyncNotify.cpp +43 -41
  279. data/platform/shared/sync/SyncNotify.h +7 -7
  280. data/platform/shared/sync/SyncProtocol_3.h +86 -0
  281. data/platform/shared/sync/SyncSource.cpp +535 -371
  282. data/platform/shared/sync/SyncSource.h +48 -55
  283. data/platform/shared/sync/SyncThread.cpp +59 -103
  284. data/platform/shared/sync/SyncThread.h +10 -23
  285. data/platform/shared/unzip/unzip.cpp +3 -2
  286. data/platform/shared/unzip/unzip.h +5 -1
  287. data/platform/shared/wtl80/include/atlapp.h +10 -10
  288. data/platform/wm/RhoLib/RhoLib.vcproj +32 -0
  289. data/platform/wm/build/build_inf.js +40 -3
  290. data/platform/wm/build/wm.rake +95 -9
  291. data/platform/wm/rhodes/Alert.cpp +4 -0
  292. data/platform/wm/rhodes/DateTimePicker.cpp +183 -0
  293. data/platform/wm/rhodes/DateTimePicker.h +100 -0
  294. data/platform/wm/rhodes/MainWindow.cpp +222 -209
  295. data/platform/wm/rhodes/MainWindow.h +28 -35
  296. data/platform/wm/rhodes/Rhodes.cpp +20 -60
  297. data/platform/wm/rhodes/Rhodes.rc +41 -7
  298. data/platform/wm/rhodes/Utils.cpp +65 -0
  299. data/platform/wm/rhodes/Utils.h +9 -0
  300. data/platform/wm/rhodes/camera/Camera.cpp +2 -2
  301. data/platform/wm/rhodes/menubar.cpp +2 -33
  302. data/platform/wm/rhodes/menubar.h +0 -14
  303. data/platform/wm/rhodes/resource.h +13 -11
  304. data/platform/wm/rhodes/rho/net/NetRequest.cpp +16 -35
  305. data/platform/wm/rhodes/rho/net/NetRequest.h +8 -2
  306. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +264 -46
  307. data/platform/wm/rhodes/rho/net/NetRequestImpl.h +14 -4
  308. data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.cpp +1 -1
  309. data/platform/wm/rhodes/rho/rubyext/GeoLocationImpl.h +1 -1
  310. data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +77 -4
  311. data/platform/wm/rhodes/rho/rubyext/WebView.cpp +63 -0
  312. data/platform/wm/rhodes/rhodes.vcproj +20 -66
  313. data/platform/wm/rhodes/stdafx.h +22 -0
  314. data/platform/wm/rubylib/rubylib.vcproj +4 -0
  315. data/platform/wm/syncengine/syncengine.vcproj +8 -0
  316. data/platform/wm/tools/detool.sln +66 -0
  317. data/platform/wm/tools/detool/DEMComInterface.tlb +0 -0
  318. data/platform/wm/tools/detool/ReadMe.txt +33 -0
  319. data/platform/wm/tools/detool/detool.cpp +559 -0
  320. data/platform/wm/tools/detool/detool.h +5 -0
  321. data/platform/wm/tools/detool/detool.vcproj +233 -0
  322. data/platform/wm/tools/detool/stdafx.cpp +8 -0
  323. data/platform/wm/tools/detool/stdafx.h +15 -0
  324. data/platform/wm/tools/detool/targetver.h +24 -0
  325. data/platform/wm/tools/rhosetup/ReadMe.txt +41 -0
  326. data/platform/wm/tools/rhosetup/rhosetup.cpp +52 -0
  327. data/platform/wm/tools/rhosetup/rhosetup.vcproj +641 -0
  328. data/platform/wm/tools/rhosetup/stdafx.cpp +8 -0
  329. data/platform/wm/tools/rhosetup/stdafx.h +59 -0
  330. data/rakefile.rb +33 -10
  331. data/res/build-tools/db/syncdb.schema +25 -23
  332. data/res/build-tools/db/syncdb.triggers +1 -1
  333. data/res/build-tools/detool.exe +0 -0
  334. data/res/build-tools/rhosetup.dll +0 -0
  335. data/res/generators/rhogen.rb +27 -22
  336. data/res/generators/templates/application/app/Settings/controller.rb +3 -1
  337. data/res/generators/templates/application/app/Settings/home.bb.erb +17 -0
  338. data/res/generators/templates/application/app/Settings/home.erb +21 -12
  339. data/res/generators/templates/application/app/Settings/index.bb.erb +32 -0
  340. data/res/generators/templates/application/app/Settings/index.erb +44 -15
  341. data/res/generators/templates/application/app/Settings/login.bb.erb +35 -0
  342. data/res/generators/templates/application/app/Settings/login.erb +29 -30
  343. data/res/generators/templates/application/app/Settings/reset.bb.erb +15 -0
  344. data/res/generators/templates/application/app/Settings/reset.erb +16 -13
  345. data/res/generators/templates/application/app/Settings/wait.bb.erb +3 -0
  346. data/res/generators/templates/application/app/Settings/wait.erb +4 -4
  347. data/res/generators/templates/application/app/application.rb +8 -0
  348. data/res/generators/templates/application/app/helpers/browser_helper.rb +13 -0
  349. data/res/generators/templates/application/app/index.bb.erb +26 -0
  350. data/res/generators/templates/application/app/index.erb +21 -12
  351. data/res/generators/templates/application/app/layout.erb +9 -11
  352. data/res/generators/templates/application/public/css/android.css +285 -0
  353. data/res/generators/templates/application/public/css/blackberry.css +85 -78
  354. data/res/generators/templates/application/public/css/iphone.css +286 -296
  355. data/res/generators/templates/application/public/css/webkit.css +34 -0
  356. data/res/generators/templates/application/public/css/windows_mobile.css +208 -0
  357. data/res/generators/templates/application/public/icons/Read me first - license.txt +14 -0
  358. data/res/generators/templates/application/public/icons/about.png +0 -0
  359. data/res/generators/templates/application/public/icons/airplane.png +0 -0
  360. data/res/generators/templates/application/public/icons/baby.png +0 -0
  361. data/res/generators/templates/application/public/icons/badge.png +0 -0
  362. data/res/generators/templates/application/public/icons/bandaid.png +0 -0
  363. data/res/generators/templates/application/public/icons/bar-chart.png +0 -0
  364. data/res/generators/templates/application/public/icons/battery.png +0 -0
  365. data/res/generators/templates/application/public/icons/beaker.png +0 -0
  366. data/res/generators/templates/application/public/icons/beaker2.png +0 -0
  367. data/res/generators/templates/application/public/icons/beermug.png +0 -0
  368. data/res/generators/templates/application/public/icons/bird.png +0 -0
  369. data/res/generators/templates/application/public/icons/book.png +0 -0
  370. data/res/generators/templates/application/public/icons/bookmark.png +0 -0
  371. data/res/generators/templates/application/public/icons/brightness.png +0 -0
  372. data/res/generators/templates/application/public/icons/bug.png +0 -0
  373. data/res/generators/templates/application/public/icons/cabinet.png +0 -0
  374. data/res/generators/templates/application/public/icons/calendar.png +0 -0
  375. data/res/generators/templates/application/public/icons/camera.png +0 -0
  376. data/res/generators/templates/application/public/icons/changeName.rb +22 -0
  377. data/res/generators/templates/application/public/icons/chat2.png +0 -0
  378. data/res/generators/templates/application/public/icons/chicken.png +0 -0
  379. data/res/generators/templates/application/public/icons/clock.png +0 -0
  380. data/res/generators/templates/application/public/icons/cloud.png +0 -0
  381. data/res/generators/templates/application/public/icons/coffee.png +0 -0
  382. data/res/generators/templates/application/public/icons/compass.png +0 -0
  383. data/res/generators/templates/application/public/icons/contrast.png +0 -0
  384. data/res/generators/templates/application/public/icons/dashboard.png +0 -0
  385. data/res/generators/templates/application/public/icons/display.png +0 -0
  386. data/res/generators/templates/application/public/icons/dogpaw.png +0 -0
  387. data/res/generators/templates/application/public/icons/download.png +0 -0
  388. data/res/generators/templates/application/public/icons/dumbbell.png +0 -0
  389. data/res/generators/templates/application/public/icons/ekg.png +0 -0
  390. data/res/generators/templates/application/public/icons/envelope.png +0 -0
  391. data/res/generators/templates/application/public/icons/equalizer.png +0 -0
  392. data/res/generators/templates/application/public/icons/eye.png +0 -0
  393. data/res/generators/templates/application/public/icons/film-roll.png +0 -0
  394. data/res/generators/templates/application/public/icons/flag.png +0 -0
  395. data/res/generators/templates/application/public/icons/fork-and-knife.png +0 -0
  396. data/res/generators/templates/application/public/icons/fuel.png +0 -0
  397. data/res/generators/templates/application/public/icons/gameplan.png +0 -0
  398. data/res/generators/templates/application/public/icons/gear.png +0 -0
  399. data/res/generators/templates/application/public/icons/gear2.png +0 -0
  400. data/res/generators/templates/application/public/icons/gift.png +0 -0
  401. data/res/generators/templates/application/public/icons/heart.png +0 -0
  402. data/res/generators/templates/application/public/icons/house.png +0 -0
  403. data/res/generators/templates/application/public/icons/inbox.png +0 -0
  404. data/res/generators/templates/application/public/icons/index-cards.png +0 -0
  405. data/res/generators/templates/application/public/icons/iphone.png +0 -0
  406. data/res/generators/templates/application/public/icons/ipod.png +0 -0
  407. data/res/generators/templates/application/public/icons/key.png +0 -0
  408. data/res/generators/templates/application/public/icons/lifebuoy.png +0 -0
  409. data/res/generators/templates/application/public/icons/lightbulb.png +0 -0
  410. data/res/generators/templates/application/public/icons/line-chart.png +0 -0
  411. data/res/generators/templates/application/public/icons/location.png +0 -0
  412. data/res/generators/templates/application/public/icons/lock.png +0 -0
  413. data/res/generators/templates/application/public/icons/loopback.png +0 -0
  414. data/res/generators/templates/application/public/icons/magnifying-glass.png +0 -0
  415. data/res/generators/templates/application/public/icons/map-marker.png +0 -0
  416. data/res/generators/templates/application/public/icons/map.png +0 -0
  417. data/res/generators/templates/application/public/icons/medical-bag.png +0 -0
  418. data/res/generators/templates/application/public/icons/medical.png +0 -0
  419. data/res/generators/templates/application/public/icons/microphone.png +0 -0
  420. data/res/generators/templates/application/public/icons/movie1.png +0 -0
  421. data/res/generators/templates/application/public/icons/movie2.png +0 -0
  422. data/res/generators/templates/application/public/icons/network.png +0 -0
  423. data/res/generators/templates/application/public/icons/note.png +0 -0
  424. data/res/generators/templates/application/public/icons/outlet.png +0 -0
  425. data/res/generators/templates/application/public/icons/palette.png +0 -0
  426. data/res/generators/templates/application/public/icons/paperclip.png +0 -0
  427. data/res/generators/templates/application/public/icons/phone.png +0 -0
  428. data/res/generators/templates/application/public/icons/photos.png +0 -0
  429. data/res/generators/templates/application/public/icons/piano.png +0 -0
  430. data/res/generators/templates/application/public/icons/picture-frame.png +0 -0
  431. data/res/generators/templates/application/public/icons/pill.png +0 -0
  432. data/res/generators/templates/application/public/icons/pin.png +0 -0
  433. data/res/generators/templates/application/public/icons/pinetree.png +0 -0
  434. data/res/generators/templates/application/public/icons/planet.png +0 -0
  435. data/res/generators/templates/application/public/icons/puzzle.png +0 -0
  436. data/res/generators/templates/application/public/icons/radar.png +0 -0
  437. data/res/generators/templates/application/public/icons/redo.png +0 -0
  438. data/res/generators/templates/application/public/icons/refresh.png +0 -0
  439. data/res/generators/templates/application/public/icons/runner.png +0 -0
  440. data/res/generators/templates/application/public/icons/shoebox.png +0 -0
  441. data/res/generators/templates/application/public/icons/shopping-bag.png +0 -0
  442. data/res/generators/templates/application/public/icons/shopping-cart.png +0 -0
  443. data/res/generators/templates/application/public/icons/shuffle.png +0 -0
  444. data/res/generators/templates/application/public/icons/signpost.png +0 -0
  445. data/res/generators/templates/application/public/icons/skull-n-crossbones.png +0 -0
  446. data/res/generators/templates/application/public/icons/skull.png +0 -0
  447. data/res/generators/templates/application/public/icons/sliders.png +0 -0
  448. data/res/generators/templates/application/public/icons/spraycan.png +0 -0
  449. data/res/generators/templates/application/public/icons/squiggle.png +0 -0
  450. data/res/generators/templates/application/public/icons/star.png +0 -0
  451. data/res/generators/templates/application/public/icons/stopwatch.png +0 -0
  452. data/res/generators/templates/application/public/icons/suitcase.png +0 -0
  453. data/res/generators/templates/application/public/icons/tag.png +0 -0
  454. data/res/generators/templates/application/public/icons/tags.png +0 -0
  455. data/res/generators/templates/application/public/icons/target.png +0 -0
  456. data/res/generators/templates/application/public/icons/testtube.png +0 -0
  457. data/res/generators/templates/application/public/icons/thermometer.png +0 -0
  458. data/res/generators/templates/application/public/icons/toolbox.png +0 -0
  459. data/res/generators/templates/application/public/icons/trophy.png +0 -0
  460. data/res/generators/templates/application/public/icons/tshirt.png +0 -0
  461. data/res/generators/templates/application/public/icons/tv.png +0 -0
  462. data/res/generators/templates/application/public/icons/umbrella.png +0 -0
  463. data/res/generators/templates/application/public/icons/walk.png +0 -0
  464. data/res/generators/templates/application/public/icons/weather.png +0 -0
  465. data/res/generators/templates/application/public/icons/widescreen.png +0 -0
  466. data/res/generators/templates/application/public/icons/wineglass.png +0 -0
  467. data/res/generators/templates/application/public/icons/zap.png +0 -0
  468. data/res/generators/templates/application/public/images/android/btn_check_off.png +0 -0
  469. data/res/generators/templates/application/public/images/android/btn_check_on.png +0 -0
  470. data/res/generators/templates/application/public/images/android/btn_radio_off.png +0 -0
  471. data/res/generators/templates/application/public/images/android/btn_radio_on.png +0 -0
  472. data/res/generators/templates/application/public/images/android/ic_menu_more.png +0 -0
  473. data/res/generators/templates/application/public/images/iphone/disclosure.png +0 -0
  474. data/res/generators/templates/application/public/images/iphone/disclosure_detail.png +0 -0
  475. data/res/generators/templates/application/public/images/iphone/radiobutton.png +0 -0
  476. data/res/generators/templates/application/public/images/iphone/select.png +0 -0
  477. data/res/generators/templates/application/public/images/iphone/switch.png +0 -0
  478. data/res/generators/templates/application/public/images/listArrow.png +0 -0
  479. data/res/generators/templates/application/public/images/listArrowDown.png +0 -0
  480. data/res/generators/templates/model/controller.rb +2 -0
  481. data/res/generators/templates/model/edit.bb.erb +24 -0
  482. data/res/generators/templates/model/edit.erb +21 -25
  483. data/res/generators/templates/model/index.bb.erb +21 -0
  484. data/res/generators/templates/model/index.erb +28 -14
  485. data/res/generators/templates/model/new.bb.erb +24 -0
  486. data/res/generators/templates/model/new.erb +20 -20
  487. data/res/generators/templates/model/show.bb.erb +21 -0
  488. data/res/generators/templates/model/show.erb +15 -15
  489. data/rhobuild.yml +37 -0
  490. data/rhodes.gemspec +1 -1
  491. data/spec/framework_spec/app/Account/config.rb +57 -1
  492. data/spec/framework_spec/app/Case/config.rb +1 -1
  493. data/spec/framework_spec/app/Customer/config.rb +1 -1
  494. data/spec/framework_spec/app/Product/config.rb +15 -1
  495. data/spec/framework_spec/app/spec/fixtures/object_values.txt +90 -90
  496. data/spec/framework_spec/app/spec/pagination/fixtures/object_values.txt +91 -91
  497. data/spec/framework_spec/app/spec/rho_spec.rb +1 -1
  498. data/spec/framework_spec/app/spec/rhom_object_spec.rb +47 -28
  499. data/spec/framework_spec/app/spec/rhom_spec.rb +8 -8
  500. data/spec/framework_spec/app/spec/spec_helper.rb +13 -5
  501. data/spec/framework_spec/app/spec_runner.rb +5 -4
  502. data/spec/framework_spec/public/css/base.css +0 -1
  503. data/spec/framework_spec/public/css/iphone.css +0 -1
  504. data/spec/framework_spec/rhoconfig.txt +3 -1
  505. metadata +220 -37
  506. data/platform/bb/rhodes/src/rhomobile/WebView.java +0 -90
  507. data/platform/iphone/Classes/BarItem.h +0 -27
  508. data/platform/iphone/Classes/BarItem.m +0 -32
  509. data/platform/iphone/Classes/JSString.h +0 -12
  510. data/platform/iphone/Classes/JSString.m +0 -7
  511. data/platform/iphone/Classes/RhoRunnerAppDelegate.h +0 -48
  512. data/platform/iphone/Classes/RhoRunnerAppDelegate.m +0 -617
  513. data/platform/iphone/Classes/Server/ServerHost.h +0 -81
  514. data/platform/iphone/Classes/Server/ServerHost.m +0 -597
  515. data/platform/iphone/Classes/Server/WebViewUrl.h +0 -13
  516. data/platform/iphone/Classes/Server/WebViewUrl.m +0 -8
  517. data/platform/iphone/Classes/TabBarDelegate.h +0 -39
  518. data/platform/iphone/Classes/TabBarDelegate.m +0 -151
  519. data/platform/iphone/Classes/Utils/unzip.cpp +0 -4328
  520. data/platform/iphone/Classes/Utils/unzip.h +0 -234
  521. data/platform/iphone/Classes/WebViewController.h +0 -59
  522. data/platform/iphone/Classes/WebViewController.m +0 -472
  523. data/platform/wm/rhodes/GetURLDialog.cpp +0 -64
  524. data/platform/wm/rhodes/GetURLDialog.h +0 -39
  525. data/res/generators/templates/application/public/css/base.css +0 -39
  526. data/res/generators/templates/application/public/css/rho.css +0 -3
  527. data/res/generators/templates/application/public/css/xhtml.css +0 -114
  528. data/spec/framework_spec/app/Question/config.rb +0 -3
  529. data/spec/generator_spec/source_generator_spec.rb +0 -27
@@ -1,90 +0,0 @@
1
- package rhomobile;
2
-
3
- import com.rho.RhoEmptyLogger;
4
- import com.rho.RhoLogger;
5
- import com.xruby.runtime.builtin.ObjectFactory;
6
- import com.xruby.runtime.builtin.RubyArray;
7
- import com.xruby.runtime.builtin.RubyHash;
8
- import com.xruby.runtime.lang.RubyBasic;
9
- import com.xruby.runtime.lang.RubyBlock;
10
- import com.xruby.runtime.lang.RubyClass;
11
- import com.xruby.runtime.lang.RubyConstant;
12
- import com.xruby.runtime.lang.RubyNoArgMethod;
13
- import com.xruby.runtime.lang.RubyOneArgMethod;
14
- import com.xruby.runtime.lang.RubyValue;
15
- import com.xruby.runtime.lang.RubyVarArgMethod;
16
-
17
- public class WebView extends RubyBasic {
18
- private static final RhoLogger LOG = RhoLogger.RHO_STRIP_LOG ? new RhoEmptyLogger() :
19
- new RhoLogger("WebView");
20
-
21
- public WebView(RubyClass arg0) {
22
- super(arg0);
23
- // TODO Auto-generated constructor stub
24
- }
25
-
26
- public static RubyValue refresh() {
27
- RhodesApplication.getInstance().refreshCurrentPage();
28
- return RubyConstant.QNIL;
29
- }
30
-
31
- public static RubyValue navigate(RubyValue arg0) {
32
- String url = arg0.toString();
33
- RhodesApplication.getInstance().addToHistory(url, null);
34
- RhodesApplication.getInstance().navigateUrl(url);
35
- return RubyConstant.QNIL;
36
- }
37
-
38
- public static RubyValue current_location() {
39
- String url = RhodesApplication.getInstance().getCurrentPageUrl();
40
- return ObjectFactory.createString(url);
41
- }
42
-
43
- public static RubyValue set_menu_items(RubyValue arg0) {
44
- RhodesApplication.getInstance().resetMenuItems();
45
- RubyHash items = (RubyHash)arg0;
46
- RubyArray keys = items.keys();
47
- RubyArray values = items.values();
48
- for( int i = 0; i < keys.size(); i++ ){
49
- String label = keys.get(i).toString();
50
- String value = values.get(i).toString();
51
- RhodesApplication.getInstance().addMenuItem(label, value);
52
- }
53
- LOG.INFO("set_menu_items end");
54
- return RubyConstant.QTRUE;
55
- }
56
-
57
- public static void initMethods(RubyClass klass) {
58
- klass.getSingletonClass().defineMethod("refresh", new RubyNoArgMethod() {
59
- protected RubyValue run(RubyValue receiver, RubyBlock block) {
60
- return WebView.refresh();
61
- }
62
- });
63
- klass.getSingletonClass().defineMethod("navigate", new RubyVarArgMethod() {
64
- protected RubyValue run(RubyValue receiver, RubyArray args, RubyBlock block ){
65
- return WebView.navigate(args.get(0));
66
- }
67
- });
68
- klass.getSingletonClass().defineMethod("current_location", new RubyNoArgMethod() {
69
- protected RubyValue run(RubyValue receiver, RubyBlock block) {
70
- return WebView.current_location();
71
- }
72
- });
73
- klass.getSingletonClass().defineMethod("set_menu_items", new RubyOneArgMethod() {
74
- protected RubyValue run(RubyValue receiver, RubyValue arg0, RubyBlock block) {
75
- return WebView.set_menu_items(arg0);
76
- }
77
- });
78
- klass.getSingletonClass().defineMethod("execute_js", new RubyOneArgMethod() {
79
- protected RubyValue run(RubyValue receiver, RubyValue arg0, RubyBlock block) {
80
- return RubyConstant.QNIL;
81
- }
82
- });
83
- klass.getSingletonClass().defineMethod("active_tab", new RubyNoArgMethod() {
84
- protected RubyValue run(RubyValue receiver, RubyBlock block) {
85
- return ObjectFactory.createInteger(0);
86
- }
87
- });
88
- }
89
-
90
- }
@@ -1,27 +0,0 @@
1
- //
2
- // BarItem.h
3
- // rhorunner
4
- //
5
- // Created by lars on 8/25/09.
6
- // Copyright 2009 Home. All rights reserved.
7
- //
8
-
9
- #import <Foundation/Foundation.h>
10
- #import "WebViewController.h"
11
-
12
-
13
- @interface BarItem : NSObject {
14
- @private
15
- BOOL loaded,reload;
16
- NSString* label,*location,*icon;
17
- WebViewController* viewController;
18
- }
19
-
20
- @property(nonatomic,assign) BOOL loaded;
21
- @property(nonatomic,assign) BOOL reload;
22
- @property(nonatomic,retain) NSString* label;
23
- @property(nonatomic,retain) NSString* location;
24
- @property(nonatomic,retain) NSString* icon;
25
- @property(nonatomic,retain) WebViewController* viewController;
26
-
27
- @end
@@ -1,32 +0,0 @@
1
- //
2
- // BarItem.m
3
- // rhorunner
4
- //
5
- // Created by lars on 8/25/09.
6
- // Copyright 2009 Home. All rights reserved.
7
- //
8
-
9
- #import "BarItem.h"
10
-
11
-
12
- @implementation BarItem
13
-
14
- @synthesize loaded, reload, label, location, icon, viewController;
15
-
16
- - (id) init {
17
- if ( self = [super init] ) {
18
- self.loaded = NO;
19
- self.reload = NO;
20
- }
21
- return self;
22
- }
23
-
24
- -(void)dealloc {
25
- [self.label release];
26
- [self.location release];
27
- [self.icon release];
28
- [self.viewController release];
29
- [super dealloc];
30
- }
31
-
32
- @end
@@ -1,12 +0,0 @@
1
- #import <Foundation/Foundation.h>
2
-
3
- @interface JSString : NSObject {
4
- NSString *inputJs;
5
- NSString *outputJs;
6
- @public
7
- int index;
8
- }
9
-
10
- @property(copy) NSString *inputJs;
11
- @property(copy) NSString *outputJs;
12
- @end
@@ -1,7 +0,0 @@
1
- #import "JSString.h"
2
-
3
- @implementation JSString
4
-
5
- @synthesize inputJs, outputJs;
6
-
7
- @end
@@ -1,48 +0,0 @@
1
- //
2
- // BrowserAppDelegate.h
3
- // Browser
4
- //
5
- // Created by adam blum on 9/4/08.
6
- // Copyright __MyCompanyName__ 2008. All rights reserved.
7
- //
8
-
9
- #import <UIKit/UIKit.h>
10
- #import <AVFoundation/AVFoundation.h>
11
- #import "ServerHost.h"
12
- #import "SplashViewController.h"
13
- #import "PickImageDelegate.h"
14
- #import "DateTimePickerDelegate.h"
15
- #import "TabBarDelegate.h"
16
- #import "LogViewController.h"
17
- #import "LogOptionsController.h"
18
- #import "NativeBar.h"
19
-
20
- @class WebViewController;
21
-
22
- @interface RhoRunnerAppDelegate : NSObject <UIApplicationDelegate, AVAudioPlayerDelegate> {
23
- UIWindow *window;
24
- SplashViewController *splashViewController;
25
- WebViewController *webViewController;
26
- LogViewController* logViewController;
27
- LogOptionsController* logOptionsController;
28
- ServerHost * serverHost;
29
- PickImageDelegate* pickImageDelegate;
30
- DateTimePickerDelegate* dateTimePickerDelegate;
31
- TabBarDelegate* tabBarDelegate;
32
- NativeBar* nativeBar;
33
- AVAudioPlayer *player;
34
- bool appStarted;
35
- bool splashDisplayed;
36
- }
37
-
38
- @property (nonatomic, retain) UIWindow *window;
39
- @property (nonatomic, retain) SplashViewController *splashViewController;
40
- @property (nonatomic, retain) WebViewController *webViewController;
41
- @property (nonatomic, retain) AVAudioPlayer *player;
42
- @property (nonatomic, retain) NativeBar* nativeBar;
43
-
44
- + (RhoRunnerAppDelegate*)sharedDelegate;
45
- - (void)fixFrame;
46
-
47
- @end
48
-
@@ -1,617 +0,0 @@
1
- //
2
- // BrowserAppDelegate.m
3
- // Browser
4
- //
5
- // Created by adam blum on 9/4/08.
6
- // Copyright __MyCompanyName__ 2008. All rights reserved.
7
- //
8
- #import <AudioToolbox/AudioToolbox.h>
9
-
10
- #include "common/RhoPort.h"
11
- #import "RhoRunnerAppDelegate.h"
12
- #import "WebViewController.h"
13
- //#import "AppManager.h"
14
- //#import "common/RhoConf.h"
15
- #import "logging/RhoLog.h"
16
- #include "sync/ClientRegister.h"
17
- #include "sync/syncthread.h"
18
- #include "common/RhodesApp.h"
19
- #import "ParamsWrapper.h"
20
- #import "DateTime.h"
21
- #import "NativeBar.h"
22
- #import "BarItem.h"
23
- #import "WebViewUrl.h"
24
- #import "RhoDelegate.h"
25
- #ifdef __IPHONE_3_0
26
- #import "MapViewController.h"
27
- #endif
28
-
29
- #undef DEFAULT_LOGCATEGORY
30
- #define DEFAULT_LOGCATEGORY "RhoRunnerAppDelegate"
31
-
32
- @implementation RhoRunnerAppDelegate
33
-
34
- @synthesize window;
35
- @synthesize splashViewController;
36
- @synthesize webViewController;
37
- @synthesize player;
38
- @synthesize nativeBar;
39
- /*
40
- - (NSString*)normalizeUrl:(NSString*)url
41
- {
42
- // if([url hasPrefix:@"http://"]) {
43
- // return url;
44
- // }
45
- // NSString* location = [@"http://localhost:8080" stringByAppendingString:[@"/" stringByAppendingPathComponent:url]];
46
- // return location;
47
- char* szNormUrl = rho_http_normalizeurl([url cStringUsingEncoding:[NSString defaultCStringEncoding]]);
48
- NSString* strRes = [NSString stringWithCString:szNormUrl encoding:[NSString defaultCStringEncoding]];
49
- rho_http_free(szNormUrl);
50
-
51
- return strRes;
52
- }*/
53
-
54
- + (RhoRunnerAppDelegate*)sharedDelegate {
55
- UIApplication *app = [UIApplication sharedApplication];
56
- return (RhoRunnerAppDelegate*)app.delegate;
57
- }
58
-
59
- - (void)fixFrame {
60
- UIApplication *app = [UIApplication sharedApplication];
61
- CGRect frame = [[UIScreen mainScreen] applicationFrame];
62
- if (!app.statusBarHidden) {
63
- int newY = 10;
64
- frame.size.height += frame.origin.y - newY;
65
- frame.origin.y = newY;
66
- }
67
- [window setFrame:frame];
68
- }
69
-
70
- - (void)hideSplash {
71
- [splashViewController hideSplash];
72
- splashDisplayed = false;
73
- }
74
-
75
- - (void)loadStartPath:(NSString*)location {
76
- if (nativeBar.barType == TOOLBAR_TYPE || nativeBar.barType == NOBAR_TYPE) {
77
- [webViewController navigateRedirect:location];
78
- } else {
79
- // Load tab #0 on app load
80
- BarItem *item = (BarItem*)[tabBarDelegate.barItems objectAtIndex:0];
81
- [tabBarDelegate loadTabBarItemFirstPage:item];
82
- }
83
- }
84
-
85
- - (void)onServerStarted:(NSString*)data {
86
- RAWLOG_INFO("Server Started notification is recived");
87
- NSString* location = [NSString stringWithCString:rho_rhodesapp_getfirststarturl() encoding:[NSString defaultCStringEncoding]];
88
- /*
89
- //try to restore previous location
90
- if ( rho_conf_getBool("KeepTrackOfLastVisitedPage") ) {
91
- char* lastVisitedPage = rho_conf_getString("LastVisitedPage");
92
- if (lastVisitedPage && strlen(lastVisitedPage)>0) {
93
- location = [NSString stringWithCString:lastVisitedPage
94
- encoding:[NSString defaultCStringEncoding]];
95
- }
96
- rho_conf_freeString(lastVisitedPage);
97
- }
98
-
99
- //if there is no previous location navigate to the default start page
100
- if (!location) {
101
- location = [self normalizeUrl:(NSString*)data];
102
- }*/
103
-
104
- appStarted = true;
105
- [self loadStartPath:location];
106
- }
107
-
108
- - (void)onRefreshView:(int)index {
109
- if (self.nativeBar.barType == TABBAR_TYPE) {
110
- BarItem *item = (BarItem*)[tabBarDelegate.barItems objectAtIndex:index];
111
- [tabBarDelegate refresh:item];
112
- }
113
- else {
114
- [webViewController refresh];
115
- }
116
- }
117
-
118
- - (void)onNavigateTo:(WebViewUrl*) wvUrl {
119
- if (self.nativeBar.barType == TABBAR_TYPE) {
120
- int size = [tabBarDelegate.barItems count];
121
- if (wvUrl.webViewIndex >= size) {
122
- RAWLOG_ERROR2("Web view index out of bound: %d (%d tabs)", wvUrl.webViewIndex, size);
123
- return;
124
- }
125
- BarItem* bItem = (BarItem*)[tabBarDelegate.barItems objectAtIndex:wvUrl.webViewIndex];
126
- [tabBarDelegate loadTabBarItemLocation:bItem url:wvUrl.url];
127
- } else {
128
- [webViewController navigateRedirect:wvUrl.url];
129
- }
130
- }
131
-
132
- - (void)onExecuteJs:(JSString *)js {
133
- if (self.nativeBar.barType == TABBAR_TYPE) {
134
- BarItem *item = (BarItem *)[tabBarDelegate.barItems objectAtIndex:js->index];
135
- [tabBarDelegate executeJs:item js:js];
136
- }
137
- else {
138
- [webViewController executeJs:js];
139
- }
140
- }
141
- /*
142
- - (void)onSetViewHomeUrl:(NSString *)url {
143
- [webViewController setViewHomeUrl:url];
144
- }*/
145
-
146
- #ifdef __IPHONE_3_0
147
- -(void) onCreateMap:(NSValue*)value {
148
- MapViewController* map = [[MapViewController alloc] init];
149
- [map setParams:[value pointerValue]];
150
- map.actionTarget = self;
151
- map.onNavigate = @selector(onNavigateTo:);
152
- [window addSubview:map.view];
153
- [map.view setFrame:[window frame]];
154
- }
155
- #endif
156
-
157
- -(BOOL)startCameraPickerFromViewController:(UIViewController*)controller
158
- usingDelegate:(id<UINavigationControllerDelegate, UIImagePickerControllerDelegate>)delegateObject
159
- sourceType:(UIImagePickerControllerSourceType)type
160
- {
161
- #if !defined __IPHONE_3_0
162
- if ( (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) ||
163
- (![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) ||
164
- (delegateObject == nil) || (controller == nil)) {
165
- return NO;
166
- }
167
- #endif
168
-
169
- @try {
170
- [[UIApplication sharedApplication] setStatusBarHidden:YES];
171
- [self fixFrame];
172
- UIImagePickerController* picker = [[UIImagePickerController alloc] init];
173
- picker.sourceType = type;
174
- picker.delegate = delegateObject;
175
- picker.allowsImageEditing = YES;
176
-
177
- //[picker.view setFrame:frame];
178
- [window addSubview:picker.view];
179
- } @catch(NSException* theException) {
180
- RAWLOG_ERROR2("startCameraPickerFromViewController failed(%s): %s", [[theException name] UTF8String], [[theException reason] UTF8String] );
181
- //NSLog(@"%@", theException);
182
- [[UIApplication sharedApplication] setStatusBarHidden:NO];
183
- [self fixFrame];
184
- return NO;
185
- }
186
-
187
- return YES;
188
- }
189
-
190
- -(BOOL)startDateTimePickerFromViewController:(UIViewController*)controller
191
- usingDelegate:(DateTimePickerDelegate*)delegateObject
192
- {
193
- @try {
194
- [delegateObject createPicker:window];
195
- } @catch (NSException* theException) {
196
- RAWLOG_ERROR2("startDateTimePickerFromViewController failed(%s): %s", [[theException name] UTF8String], [[theException reason] UTF8String] );
197
- return NO;
198
- }
199
- return YES;
200
- }
201
-
202
- -(BOOL)startNativeBarFromViewController:(UIViewController*)controller
203
- usingDelegate:(TabBarDelegate*)delegateObject
204
- {
205
- @try {
206
- [delegateObject createTabBar:window];
207
- } @catch (NSException* theException) {
208
- RAWLOG_ERROR2("startNativeBarFromViewController failed(%s): %s", [[theException name] UTF8String], [[theException reason] UTF8String] );
209
- return NO;
210
- }
211
- return YES;
212
- }
213
-
214
- - (void)onTakePicture:(NSString*) url {
215
- [pickImageDelegate setPostUrl:url];//[self normalizeUrl:url]];
216
- [self startCameraPickerFromViewController:webViewController
217
- usingDelegate:pickImageDelegate
218
- sourceType:UIImagePickerControllerSourceTypeCamera];
219
- }
220
-
221
- - (void)onChoosePicture:(NSString*) url {
222
- [pickImageDelegate setPostUrl:url];//[self normalizeUrl:url]];
223
- [self startCameraPickerFromViewController:webViewController
224
- usingDelegate:pickImageDelegate
225
- sourceType:UIImagePickerControllerSourceTypePhotoLibrary];
226
- }
227
-
228
- - (void)onChooseDateTime:(DateTime*)dateTime {
229
- dateTimePickerDelegate.dateTime = dateTime;
230
- [dateTimePickerDelegate setPostUrl:dateTime.url];//[self normalizeUrl:dateTime.url]];
231
- [self startDateTimePickerFromViewController:webViewController
232
- usingDelegate:dateTimePickerDelegate];
233
- }
234
-
235
- - (void)onRemoveNativeBar {
236
- if (self.nativeBar == nil)
237
- return;
238
-
239
- if (self.nativeBar.barType == TABBAR_TYPE) {
240
- [tabBarDelegate deleteTabBar];
241
- }
242
- else {
243
- [webViewController showToolbar:NO];
244
- }
245
- self.nativeBar = nil;
246
- }
247
-
248
- - (void)onCreateNativeBar:(NativeBar*)bar {
249
- if (self.nativeBar != nil) {
250
- RAWLOG_INFO("Native bar already exists, remove it");
251
- [self onRemoveNativeBar];
252
- }
253
-
254
- // retain the nativebar so it doesn't get deleted
255
- [bar retain];
256
- int type = bar.barType;
257
- if (type == TABBAR_TYPE) {
258
- tabBarDelegate.tabBar = bar;
259
- [self startNativeBarFromViewController:webViewController usingDelegate:tabBarDelegate];
260
- }
261
- else if (type == TOOLBAR_TYPE) {
262
- [webViewController createNewToolbar:bar.barItemDataArray];
263
- [webViewController showToolbar:YES];
264
- }
265
- else if (type == NOBAR_TYPE) {
266
- [webViewController showToolbar:NO];
267
- }
268
- self.nativeBar = bar;
269
- if (splashDisplayed)
270
- [splashViewController bringToFront];
271
- }
272
-
273
- - (void)onSwitchTab:(NSValue*)value {
274
- int* pIndex = value.pointerValue;
275
- if (self.nativeBar == nil)
276
- return;
277
-
278
- if (self.nativeBar.barType == TABBAR_TYPE) {
279
- [tabBarDelegate switchTab:*pIndex];
280
- }
281
- }
282
-
283
- /*
284
- - (void)onSetViewOptionsUrl:(NSString *)url {
285
- [webViewController setViewOptionsUrl:url];
286
- }*/
287
-
288
- - (void)onShowLog {
289
- if (logViewController!=NULL) {
290
- [window addSubview:logViewController.view];
291
- logViewController.view.hidden = NO;
292
- }
293
- }
294
-
295
- - (void)onShowLogOptions {
296
- if (logOptionsController!=NULL) {
297
- [window addSubview:logOptionsController.view];
298
- logOptionsController.view.hidden = NO;
299
- }
300
- }
301
-
302
- - (void)onShowPopup:(NSString *)message {
303
- UIAlertView *alert = [[UIAlertView alloc]
304
- initWithTitle: @"Alert"
305
- message: message
306
- delegate:nil
307
- cancelButtonTitle:@"OK"
308
- otherButtonTitles:nil];
309
- [alert show];
310
- [alert release];
311
- }
312
-
313
- - (void)onVibrate:(int)duration {
314
- AudioServicesPlaySystemSound (kSystemSoundID_Vibrate);
315
- }
316
-
317
- - (void)onPlayFile:(NSString *)fileName {
318
- NSString *soundFilePath;
319
- //hack to work around iphone limitation when it will play push alerts only from the main bundle root
320
- if ([fileName hasPrefix:@"/public/alerts/"] || [fileName hasPrefix:@"/apps/public/alerts/"]) {
321
- NSString *file = [fileName lastPathComponent];
322
- soundFilePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:file];
323
- } else {
324
- soundFilePath = [[AppManager getApplicationsRootPath] stringByAppendingPathComponent:fileName];
325
- }
326
- NSLog(@"Playing %@: ", soundFilePath);
327
-
328
- NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: soundFilePath];
329
- NSError* err = nil;
330
- AVAudioPlayer *newPlayer = [AVAudioPlayer alloc];
331
- [newPlayer initWithContentsOfURL:fileURL error:&err];
332
- NSLog(@"Init media player returns: %@", err);
333
-
334
- [fileURL release];
335
- self.player = newPlayer;
336
- [newPlayer release];
337
-
338
- [player prepareToPlay];
339
- [player setDelegate: self];
340
- [self.player play];
341
- }
342
-
343
- - (void)onStopPlaying {
344
- if (!self.player)
345
- return;
346
-
347
- [self.player stop];
348
- self.player = nil;
349
- }
350
-
351
- - (void) audioPlayerDidFinishPlaying: (AVAudioPlayer *) player successfully: (BOOL) flag {
352
- if (flag == YES) {
353
- //[self.button setTitle: @"Play" forState: UIControlStateNormal];
354
- NSLog(@"Audio player finished playing...");
355
- }
356
- }
357
-
358
- - (void)audioPlayerDecodeErrorDidOccur:(AVAudioPlayer *)player error:(NSError *)error {
359
- NSLog(@"Audio player decoding error %@", error);
360
- }
361
-
362
- - (void)onSysCall:(ParamsWrapper*)params {
363
- PARAMS_WRAPPER pw;
364
- do_syscall([params unwrap:&pw]);
365
- [params release];
366
- }
367
-
368
- - (void)onMapLocation:(NSString*)query {
369
- NSURL* url = [NSURL URLWithString:[@"http://maps.google.com/?" stringByAppendingString:query]];
370
- [[UIApplication sharedApplication] openURL:url];
371
- }
372
-
373
- - (void)onActiveTab:(NSValue*)val {
374
- //TODO: This is a bit weird, but saves us creating another wrapper class
375
- int* res = val.pointerValue;
376
- if (tabBarDelegate && tabBarDelegate.tabBar) {
377
- *res = tabBarDelegate.activeTab;
378
- } else {
379
- *res = 0;
380
- }
381
- }
382
-
383
- #ifdef __IPHONE_3_0
384
- - (void)processDoSync:(NSDictionary *)userInfo
385
- {
386
- NSArray *do_sync = [userInfo objectForKey:@"do_sync"];
387
- if (do_sync) {
388
- NSEnumerator *enumerator = [do_sync objectEnumerator];
389
- id url;
390
-
391
- NSLog(@"do_sync array: ");
392
- bool sync_all = false;
393
- while ( url = [enumerator nextObject] ) {
394
- NSLog( @"url = %@", url );
395
- if ([@"all" caseInsensitiveCompare:url] == NSOrderedSame) {
396
- sync_all = true;
397
- } else {
398
- //do sync of individual source
399
- NSString* srcUrl = [url stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@" \t\r\n"]];
400
- rho_sync_doSyncSourceByUrl([srcUrl cStringUsingEncoding:[NSString defaultCStringEncoding]]);
401
- }
402
- }
403
-
404
- if (sync_all) {
405
- rho_sync_doSyncAllSources(TRUE);
406
- }
407
- }
408
- }
409
- - (void)processPushMessage:(NSDictionary *)userInfo
410
- {
411
- RAWLOG_INFO("Processing PUSH message...");
412
- NSDictionary *aps = [userInfo objectForKey:@"aps"];
413
- if (aps) {
414
- NSString *alert = [aps objectForKey:@"alert"];
415
- if (alert && [alert length] > 0) {
416
- NSLog(@"Push Alert: %@", alert);
417
- [self onShowPopup:alert];
418
- }
419
- NSString *sound = [aps objectForKey:@"sound"];
420
- if (sound && [sound length] > 0) {
421
- NSLog(@"Sound file name: %@", sound);
422
- [self onPlayFile:[@"/public/alerts/" stringByAppendingPathComponent:sound]];
423
- }
424
- NSString *vibrate = [aps objectForKey:@"vibrate"];
425
- if (vibrate && [vibrate length] > 0) {
426
- NSLog(@"Do vibrate...");
427
- [self onVibrate:1];
428
- }
429
- }
430
- [self processDoSync:userInfo];
431
- }
432
- #endif
433
-
434
- - (void) showLoadingPage
435
- {
436
- NSFileManager *fileManager = [NSFileManager defaultManager];
437
-
438
- NSString *resourcePath = [[NSBundle mainBundle] resourcePath];
439
- NSString *pngPath = [NSString stringWithFormat:@"%@/apps/app/loading.png", resourcePath];
440
- NSString *htmPath = [NSString stringWithFormat:@"%@/apps/app/loading.html", resourcePath];
441
-
442
- if ([fileManager fileExistsAtPath:pngPath]) {
443
- [splashViewController showSplash:pngPath];
444
- splashDisplayed = true;
445
- }
446
- else if ([fileManager fileExistsAtPath:htmPath]) {
447
- NSData *data = [fileManager contentsAtPath:htmPath];
448
- [webViewController loadData:data mimeType:@"text/html"];
449
- }
450
- }
451
-
452
- - (void) doStartUp {
453
- appStarted = false;
454
- splashDisplayed = false;
455
-
456
- [NSThread setThreadPriority:1.0];
457
-
458
- //Create local server and start it
459
- //serverHost = [[ServerHost alloc] init];
460
- serverHost = [ServerHost sharedInstance];
461
- [serverHost create];
462
-
463
- //UIApplication *app = [UIApplication sharedApplication];
464
- //[app setStatusBarStyle:UIStatusBarStyleBlackTranslucent];
465
- //[app setStatusBarHidden:YES];
466
-
467
- //[[UIApplication sharedApplication]
468
- // setStatusBarStyle:UIStatusBarStyleBlackTranslucent animated:YES];
469
-
470
- window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
471
- window.contentMode = UIViewContentModeScaleToFill;
472
- window.autoresizesSubviews = YES;
473
- window.userInteractionEnabled = YES;
474
- [window makeKeyAndVisible];
475
-
476
- [self fixFrame];
477
-
478
- webViewController = [[WebViewController alloc] initWithParentWindow:window];
479
- webViewController->actionTarget = self;
480
- webViewController->onShowLog = @selector(onShowLog);
481
-
482
- splashViewController = [[SplashViewController alloc] initWithParentView:window];
483
-
484
- [self showLoadingPage];
485
-
486
- // Log View
487
- logViewController = [[LogViewController alloc] init];
488
- logViewController->actionTarget = self;
489
- logViewController->onShowLogOptions = @selector(onShowLogOptions);
490
-
491
- logOptionsController = [[LogOptionsController alloc] init];
492
-
493
- //TabBar delegate
494
- tabBarDelegate = [[TabBarDelegate alloc] init];
495
-
496
- //Camera delegate
497
- pickImageDelegate = [[PickImageDelegate alloc] init];
498
-
499
- //DateTime delegate
500
- dateTimePickerDelegate = [[DateTimePickerDelegate alloc] init];
501
-
502
- serverHost->actionTarget = self;
503
- serverHost->onStartSuccess = @selector(onServerStarted:);
504
- serverHost->onRefreshView = @selector(onRefreshView);
505
- serverHost->onNavigateTo = @selector(onNavigateTo:);
506
- serverHost->onExecuteJs = @selector(onExecuteJs:);
507
- //serverHost->onSetViewHomeUrl = @selector(onSetViewHomeUrl:);
508
- serverHost->onTakePicture = @selector(onTakePicture:);
509
- serverHost->onChoosePicture = @selector(onChoosePicture:);
510
- serverHost->onChooseDateTime = @selector(onChooseDateTime:);
511
- serverHost->onCreateNativeBar = @selector(onCreateNativeBar:);
512
- serverHost->onRemoveNativeBar = @selector(onRemoveNativeBar);
513
- serverHost->onSwitchTab = @selector(onSwitchTab:);
514
- //serverHost->onSetViewOptionsUrl = @selector(onSetViewOptionsUrl:);
515
- serverHost->onShowPopup = @selector(onShowPopup:);
516
- serverHost->onVibrate = @selector(onVibrate:);
517
- serverHost->onPlayFile = @selector(onPlayFile:);
518
- serverHost->onStopPlaying = @selector(onStopPlaying);
519
- serverHost->onSysCall = @selector(onSysCall:);
520
- serverHost->onMapLocation = @selector(onMapLocation:);
521
- serverHost->onCreateMap = @selector(onCreateMap:);
522
- serverHost->onActiveTab = @selector(onActiveTab:);
523
- serverHost->onShowLog = @selector(onShowLog);
524
- [serverHost start];
525
-
526
- #ifdef __IPHONE_3_0
527
- [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge
528
- | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
529
- #endif
530
- }
531
-
532
- #ifdef __IPHONE_3_0
533
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
534
- [self doStartUp];
535
- [self processDoSync:launchOptions];
536
- return NO;
537
- }
538
- #endif
539
-
540
- - (void)applicationDidFinishLaunching:(UIApplication *)application {
541
- [self doStartUp];
542
- }
543
-
544
- #ifdef __IPHONE_3_0
545
- - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
546
- {
547
- NSLog(@"Device token is %@", deviceToken);
548
-
549
- NSMutableString *stringBuffer = [NSMutableString stringWithCapacity:([deviceToken length] * 2)];
550
- const unsigned char *dataBuffer = [deviceToken bytes];
551
- for (int i = 0; i < [deviceToken length]; ++i)
552
- [stringBuffer appendFormat:@"%02x", (unsigned long)dataBuffer[ i ]];
553
-
554
- char* szpin = strdup([stringBuffer cStringUsingEncoding:[NSString defaultCStringEncoding]]);
555
- RAWLOG_INFO1("device pin: %s\n", szpin);
556
-
557
- rho_clientregister_create(szpin);
558
- free(szpin);
559
- }
560
-
561
- - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
562
- {
563
- NSLog(@"Push Notification Error: %@", [error localizedDescription]);
564
- }
565
-
566
- - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
567
- {
568
- [self processPushMessage:userInfo];
569
- }
570
- #endif
571
-
572
- - (void)applicationDidBecomeActive:(UIApplication *)application {
573
- if (appStarted) {
574
- //rho_rhodesapp_callAppActiveCallback();
575
- /* RhoDelegate* callback = [[RhoDelegate alloc] init];
576
- char* callbackUrl = rho_conf_getString("app_did_become_active_callback");
577
- if (callbackUrl && strlen(callbackUrl) > 0) {
578
- callback.postUrl = [self normalizeUrl:[NSString stringWithCString:callbackUrl
579
- encoding:[NSString defaultCStringEncoding]]];
580
- [callback doCallback:@""];
581
- }
582
- [callback release];*/
583
- }
584
- }
585
-
586
-
587
- - (void) saveLastUsedTime
588
- {
589
- /* int now = [[NSDate date] timeIntervalSince1970];
590
- rho_conf_setInt("last_time_used",now);
591
- rho_conf_save();*/
592
- }
593
-
594
- - (void)applicationWillResignActive:(UIApplication *)application {
595
- RAWLOG_INFO("Runner will resign active");
596
- [self saveLastUsedTime];
597
- }
598
-
599
- - (void)applicationWillTerminate:(UIApplication *)application {
600
- RAWLOG_INFO("Runner will terminate");
601
- [self saveLastUsedTime];
602
- //Stop HTTP server host
603
- [serverHost stop];
604
- }
605
-
606
- - (void)dealloc {
607
- [serverHost release];
608
- [webViewController release];
609
- [window release];
610
- [pickImageDelegate release];
611
- [dateTimePickerDelegate release];
612
- [tabBarDelegate release];
613
- [nativeBar release];
614
- [super dealloc];
615
- }
616
-
617
- @end