rhodes 2.1.0 → 2.2.0.beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. data/CHANGELOG +7 -0
  2. data/README.textile +4 -5
  3. data/Rakefile +8 -1
  4. data/lib/build/jake.rb +22 -16
  5. data/lib/extensions/rhoxml/rexml/cdata.rb +67 -0
  6. data/lib/extensions/rhoxml/rexml/document.rb +2 -116
  7. data/lib/extensions/rhoxml/rexml/element.rb +1 -1
  8. data/lib/extensions/rhoxml/rexml/text.rb +117 -0
  9. data/lib/framework/rho/render.rb +19 -11
  10. data/lib/framework/rho/rho.rb +17 -10
  11. data/lib/framework/rho/rhobluetooth.rb +103 -0
  12. data/lib/framework/rho/rhocontroller.rb +2 -0
  13. data/lib/framework/rho/rhoevent.rb +43 -0
  14. data/lib/framework/rho/rhoevent_bb.rb +80 -0
  15. data/lib/framework/rho/rhoevent_c.rb +47 -0
  16. data/lib/framework/rhodes.rb +2 -2
  17. data/lib/framework/rhom/rhom_db_adapter.rb +2 -1
  18. data/lib/framework/rhom/rhom_model.rb +9 -3
  19. data/lib/framework/rhom/rhom_object_factory.rb +46 -22
  20. data/lib/framework/rhom/rhom_source.rb +12 -10
  21. data/lib/framework/version.rb +2 -2
  22. data/lib/rhodes.rb +2 -2
  23. data/platform/android/Rhodes/AndroidManifest.xml +23 -2
  24. data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +54 -38
  25. data/platform/android/Rhodes/jni/include/rhodes.h +3 -0
  26. data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +2 -2
  27. data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +4 -0
  28. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +16 -0
  29. data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_bluetooth_RhoBluetoothManager.h +21 -0
  30. data/platform/android/Rhodes/jni/src/bluetooth.cpp +169 -0
  31. data/platform/android/Rhodes/jni/src/callbacks.cpp +10 -0
  32. data/platform/android/Rhodes/jni/src/event.cpp +429 -0
  33. data/platform/android/Rhodes/jni/src/fileapi.cpp +51 -1
  34. data/platform/android/Rhodes/jni/src/rhodes.cpp +16 -0
  35. data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -0
  36. data/platform/android/Rhodes/res/layout/bt_device_list.xml +42 -0
  37. data/platform/android/Rhodes/res/layout/bt_device_name.xml +7 -0
  38. data/platform/android/Rhodes/res/values/strings.xml +8 -0
  39. data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +14 -0
  40. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +2 -0
  41. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Push.java +7 -0
  42. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +58 -0
  43. data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +53 -0
  44. data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -0
  45. data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +144 -3
  46. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +66 -0
  47. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +201 -0
  48. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +139 -0
  49. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +401 -0
  50. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +136 -0
  51. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +457 -0
  52. data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java +71 -0
  53. data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +12 -7
  54. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +19 -0
  55. data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +261 -0
  56. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -2
  57. data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +2 -2
  58. data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +10 -2
  59. data/platform/android/build/RhodesSRC_build.files +33 -22
  60. data/platform/android/build/android.rake +198 -27
  61. data/platform/android/build/librhodes_build.files +3 -1
  62. data/platform/android/build/libruby_build.files +4 -1
  63. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +2 -2
  64. data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +1 -1
  65. data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +7 -4
  66. data/platform/bb/Hsqldb/src/org/hsqldb/Like.java +3 -3
  67. data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +3 -1
  68. data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +1 -1
  69. data/platform/bb/RubyVM/RubyVM.jdp +1 -0
  70. data/platform/bb/RubyVM/src/com/rho/RhoConf.java +108 -1
  71. data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +7 -1
  72. data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +7 -4
  73. data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +7 -1
  74. data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +1 -1
  75. data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +21 -23
  76. data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +19 -10
  77. data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +8 -0
  78. data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +3 -0
  79. data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +14 -17
  80. data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFile.java +7 -5
  81. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +2 -0
  82. data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +10 -1
  83. data/platform/bb/RubyVM/src/j2me/io/File.java +7 -6
  84. data/platform/bb/build/RubyVM_build.files +412 -412
  85. data/platform/bb/build/bb.rake +42 -18
  86. data/platform/bb/build/hsqldb_build.files +151 -151
  87. data/platform/bb/build/rhodes_build.files +44 -40
  88. data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -0
  89. data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +237 -0
  90. data/platform/bb/rhodes/platform/common/com/rho/RhodesApplicationPlatform.java +14 -0
  91. data/platform/bb/rhodes/rhodes.jdp +6 -1
  92. data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +7 -1
  93. data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +14 -0
  94. data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +62 -76
  95. data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +660 -0
  96. data/platform/bb/rhodes/src/{rhomobile → com/rho/rubyext}/RhoPhonebook.java +95 -38
  97. data/platform/bb/rhodes/src/com/rho/rubyext/System.java +22 -1
  98. data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +26 -6
  99. data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -7
  100. data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothManager.java +528 -0
  101. data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothPort.java +281 -0
  102. data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothScreen.java +119 -0
  103. data/platform/bb/rhodes/src/rhomobile/camera/CameraFilesListener.java +2 -2
  104. data/platform/iphone/Classes/AppManager/AppManager.m +70 -7
  105. data/platform/iphone/Classes/Bluetooth/Bluetooth.h +72 -0
  106. data/platform/iphone/Classes/Bluetooth/Bluetooth.m +414 -0
  107. data/platform/iphone/Classes/Event/Event.h +12 -0
  108. data/platform/iphone/Classes/Event/Event.m +300 -0
  109. data/platform/iphone/Classes/LogOptionsController.h +2 -1
  110. data/platform/iphone/Classes/LogOptionsController.m +1 -1
  111. data/platform/iphone/Classes/LogViewController.h +2 -1
  112. data/platform/iphone/Classes/MapView/MapViewController.h +2 -1
  113. data/platform/iphone/Classes/RhoViewController.h +16 -0
  114. data/platform/iphone/Classes/RhoViewController.m +20 -0
  115. data/platform/iphone/Classes/Rhodes.h +12 -0
  116. data/platform/iphone/Classes/Rhodes.m +34 -6
  117. data/platform/iphone/Classes/Signature/SignatureViewController.h +2 -2
  118. data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -10
  119. data/platform/iphone/Classes/SimpleMainView.h +2 -2
  120. data/platform/iphone/Classes/SimpleMainView.m +5 -14
  121. data/platform/iphone/Classes/SplashViewController.h +2 -2
  122. data/platform/iphone/Classes/TabbedMainView.h +2 -2
  123. data/platform/iphone/Classes/TabbedMainView.m +5 -10
  124. data/platform/iphone/Info.plist +5 -5
  125. data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +39 -0
  126. data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +47 -4
  127. data/platform/osx/Rhodes Debugger/NoodleLineNumberView.m +3 -2
  128. data/platform/shared/common/AutoPointer.h +3 -0
  129. data/platform/shared/common/RhoConf.cpp +2 -1
  130. data/platform/shared/common/RhoThread.h +1 -1
  131. data/platform/shared/common/RhoTime.h +3 -3
  132. data/platform/shared/common/RhodesApp.cpp +75 -23
  133. data/platform/shared/common/RhodesApp.h +4 -0
  134. data/platform/shared/common/RhodesAppBase.h +2 -0
  135. data/platform/shared/common/ThreadQueue.cpp +23 -18
  136. data/platform/shared/common/ThreadQueue.h +2 -0
  137. data/platform/shared/db/res/db/syncdb.schema +39 -39
  138. data/platform/shared/logging/RhoLogConf.cpp +58 -3
  139. data/platform/shared/logging/RhoLogConf.h +3 -1
  140. data/platform/shared/net/CURLNetRequest.cpp +17 -6
  141. data/platform/shared/net/HttpServer.cpp +125 -25
  142. data/platform/shared/net/HttpServer.h +4 -3
  143. data/platform/shared/ruby/ext/bluetooth/bluetooth.i +56 -0
  144. data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +2563 -0
  145. data/platform/shared/ruby/ext/calendar/calendar.i +28 -0
  146. data/platform/shared/ruby/ext/calendar/calendar_wrap.c +2251 -0
  147. data/platform/shared/ruby/ext/calendar/event.h +41 -0
  148. data/platform/shared/ruby/ext/calendar/event.i +28 -0
  149. data/platform/shared/ruby/ext/calendar/event_wrap.c +2151 -0
  150. data/platform/shared/ruby/ext/rho/rhoruby.c +103 -3
  151. data/platform/shared/ruby/ext/rho/rhoruby.h +16 -2
  152. data/platform/shared/ruby/ext/rhoconf/rhoconf.i +12 -0
  153. data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +101 -0
  154. data/platform/shared/ruby/ext/system/system.i +14 -0
  155. data/platform/shared/ruby/ext/system/system_wrap.c +2568 -2208
  156. data/platform/shared/ruby/main.c +8 -0
  157. data/platform/shared/rubyext/GeoLocation.cpp +6 -3
  158. data/platform/shared/rubyext/System.cpp +14 -0
  159. data/platform/shared/sync/SyncEngine.cpp +9 -1
  160. data/platform/shared/sync/SyncNotify.cpp +16 -8
  161. data/platform/shared/sync/SyncNotify.h +1 -0
  162. data/platform/shared/sync/SyncThread.cpp +7 -12
  163. data/platform/shared/sync/SyncThread.h +5 -3
  164. data/platform/wm/build/wm.rake +7 -1
  165. data/platform/wm/rhodes/Alert.cpp +1 -1
  166. data/platform/wm/rhodes/MainWindow.cpp +28 -0
  167. data/platform/wm/rhodes/MainWindow.h +9 -0
  168. data/platform/wm/rhodes/OutlookApp.cpp +72 -0
  169. data/platform/wm/rhodes/OutlookApp.h +22 -0
  170. data/platform/wm/rhodes/Rhodes.cpp +8 -0
  171. data/platform/wm/rhodes/Rhodes.rc +31 -0
  172. data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1274 -0
  173. data/platform/wm/rhodes/bluetooth/Bluetooth.h +321 -0
  174. data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +37 -70
  175. data/platform/wm/rhodes/phonebook/NativeAddressBook.h +0 -4
  176. data/platform/wm/rhodes/resource.h +8 -1
  177. data/platform/wm/rhodes/rho/net/NetRequest.cpp +4 -0
  178. data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -4
  179. data/platform/wm/rhodes/rho/rubyext/calendar.cpp +487 -0
  180. data/platform/wm/rhodes/rhodes.vcproj +28 -11
  181. data/platform/wm/rhodes/stdafx.h +1 -0
  182. data/platform/wm/rubylib/rubylib.vcproj +32 -0
  183. data/rakefile.rb +8 -1
  184. data/res/generators/templates/application/Rakefile +1 -1
  185. data/res/generators/templates/application/app/layout.erb +4 -1
  186. data/res/generators/templates/application/build.yml +0 -1
  187. data/res/generators/templates/application/public/css/iphone.css +2 -2
  188. data/res/generators/templates/application/public/jqtouch/jqtouch-iphone.css +9 -0
  189. data/res/generators/templates/application/public/jqtouch/jqtouch.css +1 -5
  190. data/res/generators/templates/application/public/jqtouch/jqtouch.js +3 -2
  191. data/rhodes.gemspec +1 -1
  192. data/spec/perfomance_spec/app/Benchmark/benchmark.rb +4 -0
  193. data/spec/perfomance_spec/app/Benchmark/bulk_results.erb +13 -0
  194. data/spec/perfomance_spec/app/Benchmark/controller.rb +178 -0
  195. data/spec/perfomance_spec/app/Benchmark/create_results.erb +13 -0
  196. data/spec/perfomance_spec/app/Benchmark/customers.erb +35 -0
  197. data/spec/perfomance_spec/app/Benchmark/index.erb +9 -0
  198. data/spec/perfomance_spec/app/Benchmark/products.erb +25 -0
  199. data/spec/perfomance_spec/app/Benchmark/search_results.erb +13 -0
  200. data/spec/perfomance_spec/app/Customer/customer.rb +6 -0
  201. data/spec/perfomance_spec/app/Perftest/index.erb +5 -0
  202. data/spec/perfomance_spec/app/Product/index.erb +25 -0
  203. data/spec/perfomance_spec/app/Product/product.rb +6 -0
  204. data/spec/perfomance_spec/app/helpers/application_helper.rb +126 -0
  205. data/spec/perfomance_spec/app/helpers/browser_helper.rb +18 -0
  206. data/spec/perfomance_spec/rhoconfig.txt +1 -1
  207. data/spec/phone_spec/app/Account_s/account_s.rb +5 -2
  208. data/spec/phone_spec/app/Case/case.rb +1 -0
  209. data/spec/phone_spec/app/Case_s/case_s.rb +2 -0
  210. data/spec/phone_spec/app/Data/perftest.json +35 -0
  211. data/spec/phone_spec/app/Data/testCDATA.xml +11 -0
  212. data/spec/phone_spec/app/Product/product.rb +1 -1
  213. data/spec/phone_spec/app/{Spec → spec}/asynchttp_spec.rb +66 -17
  214. data/spec/phone_spec/app/{Spec → spec}/barcode_spec.rb +0 -0
  215. data/spec/phone_spec/app/{Spec → spec}/blobsync_spec.rb +0 -0
  216. data/spec/phone_spec/app/{Spec → spec}/bsearch_spec.rb +0 -0
  217. data/spec/phone_spec/app/{Spec → spec}/bulksync_spec.rb +0 -0
  218. data/spec/phone_spec/app/{Spec → spec}/contacts_spec.rb +0 -0
  219. data/spec/phone_spec/app/{Spec → spec}/crypt_spec.rb +0 -0
  220. data/spec/phone_spec/app/{Spec → spec}/date_spec.rb +0 -0
  221. data/spec/phone_spec/app/spec/events_spec.rb +199 -0
  222. data/spec/phone_spec/app/{Spec → spec}/fixtures/client_info.txt +0 -0
  223. data/spec/phone_spec/app/{Spec → spec}/fixtures/object_values.txt +0 -0
  224. data/spec/phone_spec/app/{Spec → spec}/json_spec.rb +11 -2
  225. data/spec/phone_spec/app/{Spec → spec}/mapview_spec.rb +0 -0
  226. data/spec/phone_spec/app/{Spec → spec}/nativebar_spec.rb +0 -0
  227. data/spec/phone_spec/app/{Spec → spec}/navbar_spec.rb +0 -0
  228. data/spec/phone_spec/app/{Spec → spec}/pagination/fixtures/object_values.txt +0 -0
  229. data/spec/phone_spec/app/{Spec → spec}/rho_controller_spec.rb +5 -0
  230. data/spec/phone_spec/app/{Spec → spec}/rho_spec.rb +48 -0
  231. data/spec/phone_spec/app/{Spec → spec}/rhofile_spec.rb +9 -6
  232. data/spec/phone_spec/app/{Spec → spec}/rhom_object_spec.rb +188 -9
  233. data/spec/phone_spec/app/{Spec → spec}/syncengine_spec.rb +0 -0
  234. data/spec/phone_spec/app/{Spec → spec}/xml_spec.rb +15 -0
  235. data/spec/phone_spec/app/{Spec → spec}/xruby_spec.rb +0 -0
  236. data/spec/phone_spec/app/spec_runner.rb +4 -1
  237. data/spec/phone_spec/build.yml +2 -1
  238. metadata +95 -31
  239. data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +0 -36
  240. data/platform/bb/rhodes/platform/6.0/com/rho/BrowserAdapter5.java +0 -155
  241. data/platform/bb/rhodes/platform/6.0/com/rho/RhoMainScreen.java +0 -36
@@ -194,6 +194,14 @@ void Init_NativeBar()
194
194
  {
195
195
  }
196
196
 
197
+ void Init_RhoEvent()
198
+ {
199
+ }
200
+
201
+ void Init_Calendar()
202
+ {
203
+ }
204
+
197
205
  void Init_MapView()
198
206
  {
199
207
  }
@@ -91,10 +91,13 @@ void CGeoLocation::setGeoCallback(const char *url, char* params, int timeout_sec
91
91
  else
92
92
  m_Notify = CGeoNotification(url?url:"",params?params:"");
93
93
 
94
- setPingTimeoutSec(timeout_sec);
94
+ if ( url && *url )
95
+ {
96
+ setPingTimeoutSec(timeout_sec);
95
97
 
96
- if ( !rho_geo_is_available() )
97
- callGeoCallback(true, true);
98
+ if ( !rho_geo_is_available() )
99
+ callGeoCallback(true, true);
100
+ }
98
101
  }
99
102
 
100
103
  int CGeoLocation::getDefaultPingTimeoutSec()
@@ -65,4 +65,18 @@ void rho_sys_set_screen_rotation_notification(const char *url, const char* param
65
65
  RHODESAPP().setScreenRotationNotification(url, params);
66
66
  }
67
67
 
68
+ void rho_sys_unzip_file(const char *url)
69
+ {
70
+ rho_unzip_file(url);
71
+ }
72
+
73
+ #if defined(OS_MACOSX) || defined(OS_ANDROID)
74
+ // implemented in platform code
75
+ #else
76
+ int rho_sys_set_sleeping(int sleeping)
77
+ {
78
+ return 1;
79
+ }
80
+ #endif //defined(OS_MACOSX) || defined(OS_ANDROID)
81
+
68
82
  } //extern "C"
@@ -717,6 +717,7 @@ void CSyncEngine::login(String name, String password, const CSyncNotification& o
717
717
  " \"belongs_to\":{\"brand\":\"Customer\"}}}}");//, \"schema_version\":\"1.0\"
718
718
  */
719
719
  PROF_START("Login");
720
+ m_bStopByUser = false;
720
721
  //try {
721
722
 
722
723
  NetResponse( resp, getNet().pullCookies( getProtocol().getLoginUrl(), getProtocol().getLoginBody(name, password), this ) );
@@ -734,7 +735,10 @@ void CSyncEngine::login(String name, String password, const CSyncNotification& o
734
735
  getNotify().callLoginCallback(oNotify, RhoAppAdapter.ERR_UNEXPECTEDSERVERRESPONSE, "" );
735
736
  return;
736
737
  }
737
-
738
+
739
+ if ( isStoppedByUser() )
740
+ return;
741
+
738
742
  {
739
743
  DBResult( res , getUserDB().executeSQL("SELECT * FROM client_info") );
740
744
  if ( !res.isEnd() )
@@ -780,6 +784,10 @@ String CSyncEngine::loadSession()
780
784
 
781
785
  void CSyncEngine::logout()
782
786
  {
787
+ m_bStopByUser = true;
788
+ if(m_NetRequest)
789
+ m_NetRequest->cancel();
790
+
783
791
  getUserDB().executeSQL( "UPDATE client_info SET session=NULL" );
784
792
  m_strSession = "";
785
793
 
@@ -251,6 +251,12 @@ CSyncNotification::CSyncNotification(String strUrl, String strParams, boolean bR
251
251
  m_strUrl = RHODESAPPBASE().canonicalizeRhoUrl(strUrl);
252
252
  }
253
253
 
254
+ CSyncNotification::~CSyncNotification()
255
+ {
256
+ if ( m_cCallbackData )
257
+ rho_free_callbackdata(m_cCallbackData);
258
+ }
259
+
254
260
  String CSyncNotification::toString()const
255
261
  {
256
262
  if ( m_cCallback )
@@ -366,16 +372,15 @@ void CSyncNotify::doFireSyncNotification( CSyncSource* src, boolean bFinish, int
366
372
  if ( getSync().isStoppedByUser() )
367
373
  return;
368
374
 
369
- CSyncNotification oSN;
375
+ CSyncNotification* pSN;
370
376
  String strBody;
371
377
  boolean bRemoveAfterFire = bFinish;
372
378
  {
373
379
  synchronized(m_mxSyncNotifications)
374
380
  {
375
- CSyncNotification* pSN = getSyncNotifyBySrc(src);
381
+ pSN = getSyncNotifyBySrc(src);
376
382
  if ( pSN == null )
377
383
  return;
378
- oSN = *pSN;
379
384
 
380
385
  strBody = "";
381
386
 
@@ -420,15 +425,15 @@ void CSyncNotify::doFireSyncNotification( CSyncSource* src, boolean bFinish, int
420
425
  strBody += "in_progress";
421
426
 
422
427
  strBody += "&rho_callback=1";
423
- if ( oSN.m_strParams.length() > 0 )
424
- strBody += "&" + oSN.m_strParams;
428
+ if ( pSN->m_strParams.length() > 0 )
429
+ strBody += "&" + pSN->m_strParams;
425
430
 
426
- bRemoveAfterFire = bRemoveAfterFire && oSN.m_bRemoveAfterFire;
431
+ bRemoveAfterFire = bRemoveAfterFire && pSN->m_bRemoveAfterFire;
427
432
  }
428
433
  }
429
- LOG(INFO) + "Fire notification. Source : " + (src != null ? (*src).getName():"") + "; " + oSN.toString();
434
+ LOG(INFO) + "Fire notification. Source : " + (src != null ? (*src).getName():"") + "; " + pSN->toString();
430
435
 
431
- if ( callNotify(oSN, strBody) || bRemoveAfterFire)
436
+ if ( callNotify(*pSN, strBody) || bRemoveAfterFire)
432
437
  clearNotification(src);
433
438
  }
434
439
 
@@ -518,6 +523,9 @@ int CSyncNotify::getLastSyncObjectCount(int nSrcID)
518
523
 
519
524
  void CSyncNotify::callLoginCallback(const CSyncNotification& oNotify, int nErrCode, String strMessage)
520
525
  {
526
+ if ( getSync().isStoppedByUser() )
527
+ return;
528
+
521
529
  //try{
522
530
  String strBody = "error_code=" + convertToStringA(nErrCode);
523
531
  strBody += "&error_message=";
@@ -34,6 +34,7 @@ struct CSyncNotification
34
34
 
35
35
  String toString()const;
36
36
 
37
+ ~CSyncNotification();
37
38
  };
38
39
 
39
40
  class CSyncNotify
@@ -99,8 +99,8 @@ int CSyncThread::getLastPollInterval()
99
99
 
100
100
  void CSyncThread::processCommands()//throws Exception
101
101
  {
102
- if ( isNoCommands() )
103
- addQueueCommand(new CSyncCommand(scNone,false));
102
+ if ( isNoCommands() && getPollInterval()>0 )
103
+ addQueueCommandInt(new CSyncCommand(scSyncAll,false));
104
104
 
105
105
  CThreadQueue::processCommands();
106
106
  }
@@ -118,13 +118,6 @@ void CSyncThread::processCommand(IQueueCommand* pCmd)
118
118
  CSyncCommand& oSyncCmd = *((CSyncCommand*)pCmd);
119
119
  switch(oSyncCmd.m_nCmdCode)
120
120
  {
121
- case scNone:
122
- if ( getPollInterval() )
123
- {
124
- checkShowStatus(oSyncCmd);
125
- m_oSyncEngine.doSyncAllSources();
126
- }
127
- break;
128
121
  case scSyncAll:
129
122
  checkShowStatus(oSyncCmd);
130
123
  m_oSyncEngine.doSyncAllSources();
@@ -148,7 +141,7 @@ void CSyncThread::processCommand(IQueueCommand* pCmd)
148
141
  CSyncLoginCommand& oLoginCmd = (CSyncLoginCommand&)oSyncCmd;
149
142
 
150
143
  checkShowStatus(oSyncCmd);
151
- m_oSyncEngine.login(oLoginCmd.m_strName, oLoginCmd.m_strPassword, oLoginCmd.m_oNotify );
144
+ m_oSyncEngine.login(oLoginCmd.m_strName, oLoginCmd.m_strPassword, *oLoginCmd.m_pNotify );
152
145
  }
153
146
  break;
154
147
  }
@@ -297,7 +290,8 @@ void rho_sync_set_syncserver(const char* syncserver)
297
290
  unsigned long rho_sync_login(const char *name, const char *password, const char* callback)
298
291
  {
299
292
  rho_sync_stop();
300
- CSyncThread::getInstance()->addQueueCommand(new CSyncThread::CSyncLoginCommand(name, password, CSyncNotification(callback, "", false) ) );
293
+ CSyncThread::getInstance()->addQueueCommand(new CSyncThread::CSyncLoginCommand(name, password,
294
+ new CSyncNotification(callback, "", false) ) );
301
295
 
302
296
  return CSyncThread::getInstance()->getRetValue();
303
297
  }
@@ -305,7 +299,8 @@ unsigned long rho_sync_login(const char *name, const char *password, const char*
305
299
  unsigned long rho_sync_login_c(const char *name, const char *password, /*RHOC_CALLBACK*/void* callback, void* callback_data)
306
300
  {
307
301
  rho_sync_stop();
308
- CSyncThread::getInstance()->addQueueCommand(new CSyncThread::CSyncLoginCommand(name, password, CSyncNotification((RHOC_CALLBACK)callback,callback_data,false)) );
302
+ CSyncThread::getInstance()->addQueueCommand(new CSyncThread::CSyncLoginCommand(name, password,
303
+ new CSyncNotification((RHOC_CALLBACK)callback,callback_data,false)) );
309
304
 
310
305
  return CSyncThread::getInstance()->getRetValue();
311
306
  }
@@ -72,14 +72,16 @@ public:
72
72
  {
73
73
  public:
74
74
  String m_strName, m_strPassword;
75
- CSyncNotification m_oNotify;
76
- CSyncLoginCommand(String name, String password, const CSyncNotification& oNotify) :
77
- CSyncCommand(CSyncThread::scLogin,"",false), m_oNotify(oNotify)
75
+ common::CAutoPtr<CSyncNotification> m_pNotify;
76
+ CSyncLoginCommand(String name, String password, CSyncNotification* pNotify) :
77
+ CSyncCommand(CSyncThread::scLogin,"",false)
78
78
  {
79
79
  m_strName = name;
80
80
  m_strPassword = password;
81
+ m_pNotify = pNotify;
81
82
  }
82
83
  };
84
+
83
85
  class CSyncSearchCommand : public CSyncCommand
84
86
  {
85
87
  public:
@@ -327,7 +327,13 @@ namespace "run" do
327
327
  end
328
328
 
329
329
  task :phone_spec do
330
- Jake.run_spec_app('win32', 'phone_spec')
330
+ exit 1 if Jake.run_spec_app('win32','phone_spec')
331
+ exit 0
332
+ end
333
+
334
+ task :framework_spec do
335
+ exit 1 if Jake.run_spec_app('win32','framework_spec')
336
+ exit 0
331
337
  end
332
338
 
333
339
  end
@@ -157,7 +157,7 @@ LRESULT CAlertDialog::OnInitDialog(UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM /*lP
157
157
  if (desiredDlgWidth > (dlgRect.right - dlgRect.left)) {
158
158
  // if desired width is bigger than maximum width
159
159
  // - recalculate dialog window with wrapped text
160
- if (desiredDlgWidth >= maxWidth) {
160
+ if (desiredDlgWidth >= (int)maxWidth) {
161
161
  msgWidth = maxWidth - (iconRect.right + INDENT*2 + xBorderWidth*2);
162
162
  msgHeight = (((m_message.length() * tm.tmAveCharWidth) / msgWidth) + 1)
163
163
  * (tm.tmHeight + tm.tmExternalLeading + tm.tmInternalLeading);
@@ -25,6 +25,8 @@
25
25
  #include "sync/SyncThread.h"
26
26
  #include "common/RhoFilePath.h"
27
27
  #include "common/RhoFile.h"
28
+ #include "bluetooth/Bluetooth.h"
29
+
28
30
 
29
31
  #include <hash_map>
30
32
 
@@ -531,6 +533,32 @@ LRESULT CMainWindow::OnAlertHidePopup (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM
531
533
  return 0;
532
534
  }
533
535
 
536
+ LRESULT CMainWindow::OnBluetoothDiscover (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/) {
537
+ #ifndef OS_WINDOWS
538
+ RhoDiscoverDlg* dlg = RhoBluetoothManager::getInstance()->getDiscoverDlg();
539
+ dlg->openDialog(RhoBluetoothManager::getInstance());
540
+ #endif // OS_WINDOWS
541
+ return 0;
542
+ }
543
+
544
+ LRESULT CMainWindow::OnBluetoothDiscovered (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/) {
545
+ #ifndef OS_WINDOWS
546
+ RhoDiscoveredDlg* dlg = RhoBluetoothManager::getInstance()->getDiscoveredDlg();
547
+ dlg->openDialog(RhoBluetoothManager::getInstance());
548
+ #endif // OS_WINDOWS
549
+ return 0;
550
+ }
551
+
552
+ LRESULT CMainWindow::OnBluetoothCallback(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/) {
553
+ char* callback_url = (char*)wParam;
554
+ char* body = (char*)lParam;
555
+ rho_rhodesapp_callBluetoothCallback(callback_url, body);
556
+ delete callback_url;
557
+ delete body;
558
+ return 0;
559
+ }
560
+
561
+
534
562
  LRESULT CMainWindow::OnDateTimePicker (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/)
535
563
  {
536
564
  CDateTimeMessage *msg = (CDateTimeMessage *)lParam;
@@ -28,6 +28,9 @@ static UINT WM_CONNECTIONSNETWORKCOUNT = ::RegisterWindowMessage(L"RHODES_WM_CON
28
28
  static UINT WM_ALERT_SHOW_POPUP = ::RegisterWindowMessage(L"RHODES_WM_ALERT_SHOW_POPUP");
29
29
  static UINT WM_ALERT_HIDE_POPUP = ::RegisterWindowMessage(L"RHODES_WM_ALERT_HIDE_POPUP");
30
30
  static UINT WM_DATETIME_PICKER = ::RegisterWindowMessage(L"RHODES_WM_DATETIME_PICKER");
31
+ static UINT WM_BLUETOOTH_DISCOVER = ::RegisterWindowMessage(L"RHODES_WM_BLUETOOTH_DISCOVER");
32
+ static UINT WM_BLUETOOTH_DISCOVERED = ::RegisterWindowMessage(L"RHODES_WM_BLUETOOTH_DISCOVERED");
33
+ static UINT WM_BLUETOOTH_CALLBACK = ::RegisterWindowMessage(L"RHODES_WM_BLUETOOTH_CALLBACK");
31
34
 
32
35
 
33
36
  class CMainWindow :
@@ -94,6 +97,9 @@ public:
94
97
  MESSAGE_HANDLER(WM_ALERT_SHOW_POPUP, OnAlertShowPopup)
95
98
  MESSAGE_HANDLER(WM_ALERT_HIDE_POPUP, OnAlertHidePopup);
96
99
  MESSAGE_HANDLER(WM_DATETIME_PICKER, OnDateTimePicker);
100
+ MESSAGE_HANDLER(WM_BLUETOOTH_DISCOVER, OnBluetoothDiscover);
101
+ MESSAGE_HANDLER(WM_BLUETOOTH_DISCOVERED, OnBluetoothDiscovered);
102
+ MESSAGE_HANDLER(WM_BLUETOOTH_CALLBACK, OnBluetoothCallback);
97
103
  END_MSG_MAP()
98
104
 
99
105
  private:
@@ -127,6 +133,9 @@ private:
127
133
  LRESULT OnAlertShowPopup (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
128
134
  LRESULT OnAlertHidePopup (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
129
135
  LRESULT OnDateTimePicker (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
136
+ LRESULT OnBluetoothDiscover (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
137
+ LRESULT OnBluetoothDiscovered (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
138
+ LRESULT OnBluetoothCallback (UINT /*uMsg*/, WPARAM /*wParam*/, LPARAM lParam, BOOL& /*bHandled*/);
130
139
 
131
140
  public:
132
141
  BEGIN_SINK_MAP(CMainWindow)
@@ -0,0 +1,72 @@
1
+ #include "StdAfx.h"
2
+ #include "OutlookApp.h"
3
+
4
+ #ifdef _WIN32_WCE
5
+ #define INITGUID
6
+ #include <pimstore.h>
7
+ #endif //_WIN32_WCE
8
+
9
+ COutlookApp* COutlookApp::m_pInstance = 0;
10
+ IMPLEMENT_LOGCLASS(COutlookApp,"OutlookApp");
11
+
12
+ /*static*/ COutlookApp* COutlookApp::Create()
13
+ {
14
+ if ( m_pInstance )
15
+ return m_pInstance;
16
+
17
+ m_pInstance = new COutlookApp();
18
+ return m_pInstance;
19
+ }
20
+
21
+ /*static*/ void COutlookApp::Destroy()
22
+ {
23
+ if ( m_pInstance )
24
+ delete m_pInstance;
25
+
26
+ m_pInstance = 0;
27
+ }
28
+
29
+ COutlookApp::COutlookApp(void)
30
+ {
31
+ HRESULT hr = CoInitializeEx( NULL, 0);
32
+
33
+ #ifdef _WIN32_WCE
34
+ IUnknown* pUnknown = NULL;
35
+ hr = CoCreateInstance(__uuidof(Application),//CLSID_Application,
36
+ NULL, CLSCTX_INPROC_SERVER,
37
+ IID_IUnknown,
38
+ (void **)&pUnknown);
39
+ if (hr != S_OK) {
40
+ // CoCreateInstance failed.
41
+ LOG(ERROR) + "CoCreateInstance failed.";
42
+ return;
43
+ }
44
+
45
+ //IID_IPOutlookApp
46
+ hr = pUnknown->QueryInterface(__uuidof(IPOutlookApp), (void**)&m_outlookApp);
47
+ if (hr != S_OK) {
48
+ // QueryInterface failed.
49
+ LOG(ERROR) + "QueryInterface failed.";
50
+ return;
51
+ }
52
+
53
+ hr = m_outlookApp->Logon(NULL);
54
+ if (hr != S_OK) {
55
+ // Logon failed.
56
+ LOG(ERROR) + "Logon failed.";
57
+ m_outlookApp->Release();
58
+ return;
59
+ }
60
+ #endif //_WIN32_WCE
61
+ }
62
+
63
+ COutlookApp::~COutlookApp(void)
64
+ {
65
+ #ifdef _WIN32_WCE
66
+ if(m_outlookApp)
67
+ m_outlookApp->Release();
68
+ #endif //_WIN32_WCE
69
+
70
+ m_outlookApp = 0;
71
+ CoUninitialize();
72
+ }
@@ -0,0 +1,22 @@
1
+ #pragma once
2
+
3
+ #include "logging/RhoLog.h"
4
+
5
+ struct IPOutlookApp;
6
+ class COutlookApp
7
+ {
8
+ DEFINE_LOGCLASS;
9
+
10
+ IPOutlookApp* m_outlookApp;
11
+
12
+ static COutlookApp* m_pInstance;
13
+ COutlookApp();
14
+ public:
15
+ ~COutlookApp();
16
+
17
+ static COutlookApp* Create();
18
+ static void Destroy();
19
+ static COutlookApp* getInstance(){ return m_pInstance; }
20
+
21
+ IPOutlookApp* getApp(){ return m_outlookApp;}
22
+ };
@@ -503,6 +503,14 @@ extern "C" void Init_NavBar(void)
503
503
  {
504
504
  }
505
505
 
506
+ //extern "C" void Init_RhoEvent()
507
+ //{
508
+ //}
509
+
510
+ //extern "C" void Init_Calendar()
511
+ //{
512
+ //}
513
+
506
514
  /*BOOL EnumRhodesWindowsProc(HWND hwnd,LPARAM lParam)
507
515
  {
508
516
  char buf[255] = {0};
@@ -207,6 +207,21 @@ BEGIN
207
207
  LTEXT "Time:",IDC_TIME_STATIC,7,3,27,8
208
208
  END
209
209
 
210
+ IDD_BLUETOOTH_DISCOVER DIALOG 0, 0, 172, 186
211
+ STYLE DS_SETFONT | WS_POPUP | WS_SYSMENU
212
+ FONT 8, "Microsoft Sans Serif"
213
+ BEGIN
214
+ LISTBOX IDC_BT_LIST,7,34,145,77,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP
215
+ CTEXT "Please wait while searching devices ...",IDC_BT_STATIC,7,19,144,8
216
+ END
217
+
218
+ IDD_BLUETOOTH_DISCOVERED DIALOG 0, 0, 172, 186
219
+ STYLE DS_SETFONT | WS_POPUP | WS_SYSMENU
220
+ FONT 8, "Microsoft Sans Serif"
221
+ BEGIN
222
+ CTEXT "Wait for connection ...",IDC_STATIC,10,49,130,16
223
+ END
224
+
210
225
 
211
226
  /////////////////////////////////////////////////////////////////////////////
212
227
  //
@@ -267,6 +282,22 @@ BEGIN
267
282
  RIGHTMARGIN, 162
268
283
  TOPMARGIN, 1
269
284
  END
285
+
286
+ IDD_BLUETOOTH_DISCOVER, DIALOG
287
+ BEGIN
288
+ LEFTMARGIN, 7
289
+ RIGHTMARGIN, 164
290
+ TOPMARGIN, 3
291
+ BOTTOMMARGIN, 179
292
+ END
293
+
294
+ IDD_BLUETOOTH_DISCOVERED, DIALOG
295
+ BEGIN
296
+ LEFTMARGIN, 7
297
+ RIGHTMARGIN, 164
298
+ TOPMARGIN, 3
299
+ BOTTOMMARGIN, 179
300
+ END
270
301
  END
271
302
  #endif // APSTUDIO_INVOKED
272
303