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.
- data/CHANGELOG +7 -0
- data/README.textile +4 -5
- data/Rakefile +8 -1
- data/lib/build/jake.rb +22 -16
- data/lib/extensions/rhoxml/rexml/cdata.rb +67 -0
- data/lib/extensions/rhoxml/rexml/document.rb +2 -116
- data/lib/extensions/rhoxml/rexml/element.rb +1 -1
- data/lib/extensions/rhoxml/rexml/text.rb +117 -0
- data/lib/framework/rho/render.rb +19 -11
- data/lib/framework/rho/rho.rb +17 -10
- data/lib/framework/rho/rhobluetooth.rb +103 -0
- data/lib/framework/rho/rhocontroller.rb +2 -0
- data/lib/framework/rho/rhoevent.rb +43 -0
- data/lib/framework/rho/rhoevent_bb.rb +80 -0
- data/lib/framework/rho/rhoevent_c.rb +47 -0
- data/lib/framework/rhodes.rb +2 -2
- data/lib/framework/rhom/rhom_db_adapter.rb +2 -1
- data/lib/framework/rhom/rhom_model.rb +9 -3
- data/lib/framework/rhom/rhom_object_factory.rb +46 -22
- data/lib/framework/rhom/rhom_source.rb +12 -10
- data/lib/framework/version.rb +2 -2
- data/lib/rhodes.rb +2 -2
- data/platform/android/Rhodes/AndroidManifest.xml +23 -2
- data/platform/android/Rhodes/gen/com/rhomobile/rhodes/R.java +54 -38
- data/platform/android/Rhodes/jni/include/rhodes.h +3 -0
- data/platform/android/Rhodes/jni/include/rhodes/JNIRhodes.h +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/details/rhojava.inc +4 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_RhodesService.h +16 -0
- data/platform/android/Rhodes/jni/include/rhodes/jni/com_rhomobile_rhodes_bluetooth_RhoBluetoothManager.h +21 -0
- data/platform/android/Rhodes/jni/src/bluetooth.cpp +169 -0
- data/platform/android/Rhodes/jni/src/callbacks.cpp +10 -0
- data/platform/android/Rhodes/jni/src/event.cpp +429 -0
- data/platform/android/Rhodes/jni/src/fileapi.cpp +51 -1
- data/platform/android/Rhodes/jni/src/rhodes.cpp +16 -0
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +3 -0
- data/platform/android/Rhodes/res/layout/bt_device_list.xml +42 -0
- data/platform/android/Rhodes/res/layout/bt_device_name.xml +7 -0
- data/platform/android/Rhodes/res/values/strings.xml +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +14 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Capabilities.java +2 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Push.java +7 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushReceiver.java +58 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/PushService.java +53 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +8 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +144 -3
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/IRhoBluetoothManager.java +66 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothDeviceListActivity.java +201 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManager.java +139 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerNew.java +401 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothManagerOld.java +136 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/RhoBluetoothSession.java +457 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/bluetooth/UUIDHelper.java +71 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/ImageCapture.java +12 -7
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/Event.java +19 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +261 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/MailUriHandler.java +10 -2
- data/platform/android/build/RhodesSRC_build.files +33 -22
- data/platform/android/build/android.rake +198 -27
- data/platform/android/build/librhodes_build.files +3 -1
- data/platform/android/build/libruby_build.files +4 -1
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBResult.java +2 -2
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBRowResult.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Expression.java +7 -4
- data/platform/bb/Hsqldb/src/org/hsqldb/Like.java +3 -3
- data/platform/bb/Hsqldb/src/org/hsqldb/Table.java +3 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/Tokenizer.java +1 -1
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/RubyVM/src/com/rho/RhoConf.java +108 -1
- data/platform/bb/RubyVM/src/com/rho/RhoLogConf.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/RhoRuby.java +7 -4
- data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +7 -1
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +21 -23
- data/platform/bb/RubyVM/src/com/rho/net/RhoConnection.java +19 -10
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +8 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +3 -0
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +14 -17
- data/platform/bb/RubyVM/src/com/xruby/runtime/builtin/RubyFile.java +7 -5
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RhoSupport.java +2 -0
- data/platform/bb/RubyVM/src/com/xruby/runtime/lang/RubyRuntime.java +10 -1
- data/platform/bb/RubyVM/src/j2me/io/File.java +7 -6
- data/platform/bb/build/RubyVM_build.files +412 -412
- data/platform/bb/build/bb.rake +42 -18
- data/platform/bb/build/hsqldb_build.files +151 -151
- data/platform/bb/build/rhodes_build.files +44 -40
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -0
- data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +237 -0
- data/platform/bb/rhodes/platform/common/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/rhodes.jdp +6 -1
- data/platform/bb/rhodes/src/com/rho/RhoRubyHelper.java +7 -1
- data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +14 -0
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +62 -76
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +660 -0
- data/platform/bb/rhodes/src/{rhomobile → com/rho/rubyext}/RhoPhonebook.java +95 -38
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +22 -1
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +26 -6
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +21 -7
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothManager.java +528 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothPort.java +281 -0
- data/platform/bb/rhodes/src/rhomobile/bluetooth/BluetoothScreen.java +119 -0
- data/platform/bb/rhodes/src/rhomobile/camera/CameraFilesListener.java +2 -2
- data/platform/iphone/Classes/AppManager/AppManager.m +70 -7
- data/platform/iphone/Classes/Bluetooth/Bluetooth.h +72 -0
- data/platform/iphone/Classes/Bluetooth/Bluetooth.m +414 -0
- data/platform/iphone/Classes/Event/Event.h +12 -0
- data/platform/iphone/Classes/Event/Event.m +300 -0
- data/platform/iphone/Classes/LogOptionsController.h +2 -1
- data/platform/iphone/Classes/LogOptionsController.m +1 -1
- data/platform/iphone/Classes/LogViewController.h +2 -1
- data/platform/iphone/Classes/MapView/MapViewController.h +2 -1
- data/platform/iphone/Classes/RhoViewController.h +16 -0
- data/platform/iphone/Classes/RhoViewController.m +20 -0
- data/platform/iphone/Classes/Rhodes.h +12 -0
- data/platform/iphone/Classes/Rhodes.m +34 -6
- data/platform/iphone/Classes/Signature/SignatureViewController.h +2 -2
- data/platform/iphone/Classes/Signature/SignatureViewController.m +0 -10
- data/platform/iphone/Classes/SimpleMainView.h +2 -2
- data/platform/iphone/Classes/SimpleMainView.m +5 -14
- data/platform/iphone/Classes/SplashViewController.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.h +2 -2
- data/platform/iphone/Classes/TabbedMainView.m +5 -10
- data/platform/iphone/Info.plist +5 -5
- data/platform/iphone/rhorubylib/rhorubylib.xcodeproj/project.pbxproj +39 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +47 -4
- data/platform/osx/Rhodes Debugger/NoodleLineNumberView.m +3 -2
- data/platform/shared/common/AutoPointer.h +3 -0
- data/platform/shared/common/RhoConf.cpp +2 -1
- data/platform/shared/common/RhoThread.h +1 -1
- data/platform/shared/common/RhoTime.h +3 -3
- data/platform/shared/common/RhodesApp.cpp +75 -23
- data/platform/shared/common/RhodesApp.h +4 -0
- data/platform/shared/common/RhodesAppBase.h +2 -0
- data/platform/shared/common/ThreadQueue.cpp +23 -18
- data/platform/shared/common/ThreadQueue.h +2 -0
- data/platform/shared/db/res/db/syncdb.schema +39 -39
- data/platform/shared/logging/RhoLogConf.cpp +58 -3
- data/platform/shared/logging/RhoLogConf.h +3 -1
- data/platform/shared/net/CURLNetRequest.cpp +17 -6
- data/platform/shared/net/HttpServer.cpp +125 -25
- data/platform/shared/net/HttpServer.h +4 -3
- data/platform/shared/ruby/ext/bluetooth/bluetooth.i +56 -0
- data/platform/shared/ruby/ext/bluetooth/bluetooth_wrap.c +2563 -0
- data/platform/shared/ruby/ext/calendar/calendar.i +28 -0
- data/platform/shared/ruby/ext/calendar/calendar_wrap.c +2251 -0
- data/platform/shared/ruby/ext/calendar/event.h +41 -0
- data/platform/shared/ruby/ext/calendar/event.i +28 -0
- data/platform/shared/ruby/ext/calendar/event_wrap.c +2151 -0
- data/platform/shared/ruby/ext/rho/rhoruby.c +103 -3
- data/platform/shared/ruby/ext/rho/rhoruby.h +16 -2
- data/platform/shared/ruby/ext/rhoconf/rhoconf.i +12 -0
- data/platform/shared/ruby/ext/rhoconf/rhoconf_wrap.c +101 -0
- data/platform/shared/ruby/ext/system/system.i +14 -0
- data/platform/shared/ruby/ext/system/system_wrap.c +2568 -2208
- data/platform/shared/ruby/main.c +8 -0
- data/platform/shared/rubyext/GeoLocation.cpp +6 -3
- data/platform/shared/rubyext/System.cpp +14 -0
- data/platform/shared/sync/SyncEngine.cpp +9 -1
- data/platform/shared/sync/SyncNotify.cpp +16 -8
- data/platform/shared/sync/SyncNotify.h +1 -0
- data/platform/shared/sync/SyncThread.cpp +7 -12
- data/platform/shared/sync/SyncThread.h +5 -3
- data/platform/wm/build/wm.rake +7 -1
- data/platform/wm/rhodes/Alert.cpp +1 -1
- data/platform/wm/rhodes/MainWindow.cpp +28 -0
- data/platform/wm/rhodes/MainWindow.h +9 -0
- data/platform/wm/rhodes/OutlookApp.cpp +72 -0
- data/platform/wm/rhodes/OutlookApp.h +22 -0
- data/platform/wm/rhodes/Rhodes.cpp +8 -0
- data/platform/wm/rhodes/Rhodes.rc +31 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.cpp +1274 -0
- data/platform/wm/rhodes/bluetooth/Bluetooth.h +321 -0
- data/platform/wm/rhodes/phonebook/NativeAddressBook.cpp +37 -70
- data/platform/wm/rhodes/phonebook/NativeAddressBook.h +0 -4
- data/platform/wm/rhodes/resource.h +8 -1
- data/platform/wm/rhodes/rho/net/NetRequest.cpp +4 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +6 -4
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +487 -0
- data/platform/wm/rhodes/rhodes.vcproj +28 -11
- data/platform/wm/rhodes/stdafx.h +1 -0
- data/platform/wm/rubylib/rubylib.vcproj +32 -0
- data/rakefile.rb +8 -1
- data/res/generators/templates/application/Rakefile +1 -1
- data/res/generators/templates/application/app/layout.erb +4 -1
- data/res/generators/templates/application/build.yml +0 -1
- data/res/generators/templates/application/public/css/iphone.css +2 -2
- data/res/generators/templates/application/public/jqtouch/jqtouch-iphone.css +9 -0
- data/res/generators/templates/application/public/jqtouch/jqtouch.css +1 -5
- data/res/generators/templates/application/public/jqtouch/jqtouch.js +3 -2
- data/rhodes.gemspec +1 -1
- data/spec/perfomance_spec/app/Benchmark/benchmark.rb +4 -0
- data/spec/perfomance_spec/app/Benchmark/bulk_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/controller.rb +178 -0
- data/spec/perfomance_spec/app/Benchmark/create_results.erb +13 -0
- data/spec/perfomance_spec/app/Benchmark/customers.erb +35 -0
- data/spec/perfomance_spec/app/Benchmark/index.erb +9 -0
- data/spec/perfomance_spec/app/Benchmark/products.erb +25 -0
- data/spec/perfomance_spec/app/Benchmark/search_results.erb +13 -0
- data/spec/perfomance_spec/app/Customer/customer.rb +6 -0
- data/spec/perfomance_spec/app/Perftest/index.erb +5 -0
- data/spec/perfomance_spec/app/Product/index.erb +25 -0
- data/spec/perfomance_spec/app/Product/product.rb +6 -0
- data/spec/perfomance_spec/app/helpers/application_helper.rb +126 -0
- data/spec/perfomance_spec/app/helpers/browser_helper.rb +18 -0
- data/spec/perfomance_spec/rhoconfig.txt +1 -1
- data/spec/phone_spec/app/Account_s/account_s.rb +5 -2
- data/spec/phone_spec/app/Case/case.rb +1 -0
- data/spec/phone_spec/app/Case_s/case_s.rb +2 -0
- data/spec/phone_spec/app/Data/perftest.json +35 -0
- data/spec/phone_spec/app/Data/testCDATA.xml +11 -0
- data/spec/phone_spec/app/Product/product.rb +1 -1
- data/spec/phone_spec/app/{Spec → spec}/asynchttp_spec.rb +66 -17
- data/spec/phone_spec/app/{Spec → spec}/barcode_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/blobsync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bsearch_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/bulksync_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/contacts_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/crypt_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/date_spec.rb +0 -0
- data/spec/phone_spec/app/spec/events_spec.rb +199 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/client_info.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/json_spec.rb +11 -2
- data/spec/phone_spec/app/{Spec → spec}/mapview_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/nativebar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/navbar_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/pagination/fixtures/object_values.txt +0 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_controller_spec.rb +5 -0
- data/spec/phone_spec/app/{Spec → spec}/rho_spec.rb +48 -0
- data/spec/phone_spec/app/{Spec → spec}/rhofile_spec.rb +9 -6
- data/spec/phone_spec/app/{Spec → spec}/rhom_object_spec.rb +188 -9
- data/spec/phone_spec/app/{Spec → spec}/syncengine_spec.rb +0 -0
- data/spec/phone_spec/app/{Spec → spec}/xml_spec.rb +15 -0
- data/spec/phone_spec/app/{Spec → spec}/xruby_spec.rb +0 -0
- data/spec/phone_spec/app/spec_runner.rb +4 -1
- data/spec/phone_spec/build.yml +2 -1
- metadata +95 -31
- data/platform/bb/rhodes/platform/5.0/com/rho/RhoMainScreen.java +0 -36
- data/platform/bb/rhodes/platform/6.0/com/rho/BrowserAdapter5.java +0 -155
- data/platform/bb/rhodes/platform/6.0/com/rho/RhoMainScreen.java +0 -36
@@ -197,7 +197,8 @@
|
|
197
197
|
|
198
198
|
view = [self clientView];
|
199
199
|
visibleRect = [[[self scrollView] contentView] bounds];
|
200
|
-
|
200
|
+
visibleRect.origin.y -= 235;
|
201
|
+
|
201
202
|
lines = [self lineIndices];
|
202
203
|
|
203
204
|
location += NSMinY(visibleRect);
|
@@ -403,7 +404,7 @@
|
|
403
404
|
|
404
405
|
yinset = [view textContainerInset].height;
|
405
406
|
visibleRect = [[[self scrollView] contentView] bounds];
|
406
|
-
|
407
|
+
visibleRect.origin.y -= 235;
|
407
408
|
textAttributes = [self textAttributes];
|
408
409
|
|
409
410
|
lines = [self lineIndices];
|
@@ -51,6 +51,9 @@ public:
|
|
51
51
|
CAutoPtr( const CAutoPtr& orig){ *this = orig; }
|
52
52
|
CAutoPtr& operator=( const CAutoPtr& orig)
|
53
53
|
{
|
54
|
+
if ( CBaseAutoPointer<PTRTYPE>::m_ptr )
|
55
|
+
FreePtr();
|
56
|
+
|
54
57
|
CBaseAutoPointer<PTRTYPE>::m_ptr = orig.m_ptr;
|
55
58
|
const_cast<CAutoPtr&>(orig).m_ptr = 0;
|
56
59
|
return *this;
|
@@ -25,7 +25,7 @@ public:
|
|
25
25
|
virtual void start(EPriority ePriority);
|
26
26
|
virtual void stop(unsigned int nTimeoutToKill){ m_nState |= TS_STOPPING; if (m_nState&TS_RUNNING) m_pImpl->stop(nTimeoutToKill); m_nState &= ~TS_STOPPING; }
|
27
27
|
virtual void wait(unsigned int nTimeout){ m_nState |= TS_WAIT; if ((m_nState&TS_RUNNING) && !(m_nState&TS_STOPPING) ) m_pImpl->wait(nTimeout); m_nState &= ~TS_WAIT; }
|
28
|
-
virtual void stopWait(){ if (isWaiting()) m_pImpl->stopWait(); }
|
28
|
+
virtual void stopWait(){ /*if (isWaiting())*/ m_pImpl->stopWait(); }
|
29
29
|
virtual void sleep(unsigned int nTimeout){ m_pImpl->sleep(nTimeout); }
|
30
30
|
virtual void run() = 0;
|
31
31
|
virtual void runObject()
|
@@ -47,14 +47,14 @@ public:
|
|
47
47
|
locTime = localtime(&tv.tv_sec);
|
48
48
|
|
49
49
|
if (inFileFormat)
|
50
|
-
nSize = sprintf(timeBuf, "%02d%02d%04d%02d%02d%02d%03d", locTime->tm_mon, locTime->tm_mday, locTime->tm_year + 1900,
|
50
|
+
nSize = sprintf(timeBuf, "%02d%02d%04d%02d%02d%02d%03d", locTime->tm_mon+1, locTime->tm_mday, locTime->tm_year + 1900,
|
51
51
|
locTime->tm_hour, locTime->tm_min, locTime->tm_sec, (int)tv.tv_usec/1000 );
|
52
52
|
else
|
53
|
-
nSize = sprintf(timeBuf, "%02d/%02d/%04d %02d:%02d:%02d:%03d", locTime->tm_mon, locTime->tm_mday, locTime->tm_year + 1900,
|
53
|
+
nSize = sprintf(timeBuf, "%02d/%02d/%04d %02d:%02d:%02d:%03d", locTime->tm_mon+1, locTime->tm_mday, locTime->tm_year + 1900,
|
54
54
|
locTime->tm_hour, locTime->tm_min, locTime->tm_sec, (int)tv.tv_usec/1000 );
|
55
55
|
#else
|
56
56
|
SYSTEMTIME st;
|
57
|
-
|
57
|
+
GetLocalTime( &st );
|
58
58
|
|
59
59
|
if (inFileFormat)
|
60
60
|
nSize = sprintf(timeBuf, "%02d%02d%04d%02d%02d%02d%03d", st.wMonth, st.wDay, st.wYear,
|
@@ -56,6 +56,7 @@ CRhodesApp::CRhodesApp(const String& strRootPath) : CRhodesAppBase(strRootPath)
|
|
56
56
|
{
|
57
57
|
m_bExit = false;
|
58
58
|
m_bDeactivationMode = false;
|
59
|
+
m_activateCounter = 0;
|
59
60
|
|
60
61
|
m_ptrFactory = rho_impl_createClassFactory();
|
61
62
|
m_NetRequest = m_ptrFactory->createNetRequest();
|
@@ -92,16 +93,13 @@ void CRhodesApp::run()
|
|
92
93
|
LOG(INFO) + "RhoRubyInitApp...";
|
93
94
|
RhoRubyInitApp();
|
94
95
|
|
95
|
-
//LOG(INFO) + "activate app";
|
96
|
-
//rho_ruby_activateApp();
|
97
|
-
|
98
|
-
getSplashScreen().hide();
|
99
96
|
|
97
|
+
//rho_clientregister_create("iphone_client");
|
98
|
+
#if defined( OS_WINCE ) || defined( OS_WINDOWS )
|
100
99
|
LOG(INFO) + "navigate to first start url";
|
101
|
-
navigateToUrl(getFirstStartUrl());
|
100
|
+
RHODESAPP().navigateToUrl(RHODESAPP().getFirstStartUrl());
|
101
|
+
#endif
|
102
102
|
|
103
|
-
//rho_clientregister_create("iphone_client");
|
104
|
-
|
105
103
|
while (!m_bExit) {
|
106
104
|
m_httpServer->run();
|
107
105
|
if (m_bExit)
|
@@ -217,6 +215,16 @@ public:
|
|
217
215
|
{
|
218
216
|
while (!rho_is_local_server_started())
|
219
217
|
thisThread.wait(1);
|
218
|
+
|
219
|
+
static bool navigated = false;
|
220
|
+
if (!navigated)
|
221
|
+
{
|
222
|
+
LOG(INFO) + "navigate to first start url";
|
223
|
+
RHODESAPP().navigateToUrl(RHODESAPP().getFirstStartUrl());
|
224
|
+
navigated = true;
|
225
|
+
}
|
226
|
+
// RHODESAPP().getSplashScreen().hide();
|
227
|
+
|
220
228
|
common::CAutoPtr<common::IRhoClassFactory> factory = rho_impl_createClassFactory();
|
221
229
|
common::CAutoPtr<net::INetRequest> pNetRequest = factory->createNetRequest();
|
222
230
|
NetResponse(resp, pNetRequest->pullData( m_strUrl, null ) );
|
@@ -228,9 +236,12 @@ public:
|
|
228
236
|
void CRhodesApp::callAppActiveCallback(boolean bActive)
|
229
237
|
{
|
230
238
|
LOG(INFO) + "callAppActiveCallback";
|
239
|
+
int stop = !rho_conf_getBool("dont_stop_local_server_in_background");
|
231
240
|
if (bActive)
|
232
241
|
{
|
233
|
-
|
242
|
+
if (stop)
|
243
|
+
if (m_activateCounter++ > 0)
|
244
|
+
this->stopWait();
|
234
245
|
|
235
246
|
String strUrl = m_strHomeUrl + "/system/activateapp";
|
236
247
|
// Activation callback need to be runned in separate thread
|
@@ -252,7 +263,8 @@ void CRhodesApp::callAppActiveCallback(boolean bActive)
|
|
252
263
|
NetResponse(resp,getNet().pullData( strUrl, null ));
|
253
264
|
if ( !resp.isOK() )
|
254
265
|
LOG(ERROR) + "deactivate app failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
255
|
-
|
266
|
+
if (stop)
|
267
|
+
m_httpServer->stop();
|
256
268
|
m_bDeactivationMode = false;
|
257
269
|
}
|
258
270
|
}
|
@@ -312,6 +324,13 @@ void CRhodesApp::callDateTimeCallback(String strCallbackUrl, long lDateTime, con
|
|
312
324
|
NetRequest( getNet().pushData( strCallbackUrl, strBody, null ) );
|
313
325
|
}
|
314
326
|
|
327
|
+
void CRhodesApp::callBluetoothCallback(String strCallbackUrl, const char* body) {
|
328
|
+
strCallbackUrl = canonicalizeRhoUrl(strCallbackUrl);
|
329
|
+
String strBody = body;
|
330
|
+
strBody += "&rho_callback=1";
|
331
|
+
NetRequest( getNet().pushData( strCallbackUrl, strBody, null ) );
|
332
|
+
}
|
333
|
+
|
315
334
|
void CRhodesApp::callPopupCallback(String strCallbackUrl, const String &id, const String &title)
|
316
335
|
{
|
317
336
|
if ( strCallbackUrl.length() == 0 )
|
@@ -338,8 +357,8 @@ static void callback_redirect_to(void *arg, String const &strQuery )
|
|
338
357
|
|
339
358
|
if ( strUrl.length() == 0 )
|
340
359
|
strUrl = "/app/";
|
341
|
-
|
342
|
-
rho_http_redirect(arg, strUrl.c_str());
|
360
|
+
|
361
|
+
rho_http_redirect(arg, (rho::net::URI::urlDecode(strUrl)).c_str());
|
343
362
|
}
|
344
363
|
|
345
364
|
static void callback_map(void *arg, String const &query )
|
@@ -447,29 +466,42 @@ const char* CRhodesApp::getFreeListeningPort()
|
|
447
466
|
|
448
467
|
if (noerrors)
|
449
468
|
{
|
469
|
+
int listenPort = rho_conf_getInt("local_server_port");
|
470
|
+
if (listenPort < 0)
|
471
|
+
listenPort = 0;
|
472
|
+
if (listenPort > 65535)
|
473
|
+
listenPort = 0;
|
450
474
|
memset((void *) &serv_addr, 0, sizeof(serv_addr));
|
451
475
|
#if defined(OS_MACOSX)
|
452
476
|
serv_addr.sin_len = sizeof(serv_addr);
|
453
477
|
#endif
|
454
478
|
serv_addr.sin_family = AF_INET;
|
455
479
|
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
456
|
-
serv_addr.sin_port = htons(
|
480
|
+
serv_addr.sin_port = htons((short)listenPort);
|
457
481
|
|
458
|
-
LOG(INFO) + "Trying to bind
|
482
|
+
LOG(INFO) + "Trying to bind of " + listenPort + " port...";
|
459
483
|
|
460
484
|
if ( bind( sockfd, (struct sockaddr *) &serv_addr, sizeof( serv_addr ) ) != 0 )
|
461
485
|
{
|
462
|
-
|
486
|
+
if (listenPort != 0)
|
487
|
+
{
|
488
|
+
// Fill serv_addr again but with dynamically selected port
|
463
489
|
#if defined(OS_MACOSX)
|
464
|
-
|
490
|
+
serv_addr.sin_len = sizeof(serv_addr);
|
465
491
|
#endif
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
492
|
+
serv_addr.sin_family = AF_INET;
|
493
|
+
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
494
|
+
serv_addr.sin_port = htons(0);
|
495
|
+
|
496
|
+
LOG(INFO) + "Trying to bind on dynamic port...";
|
471
497
|
|
472
|
-
|
498
|
+
if ( bind( sockfd, (struct sockaddr *) &serv_addr, sizeof( serv_addr ) ) != 0 )
|
499
|
+
{
|
500
|
+
LOG(WARNING) + "Unable to bind";
|
501
|
+
noerrors = 0;
|
502
|
+
}
|
503
|
+
}
|
504
|
+
else
|
473
505
|
{
|
474
506
|
LOG(WARNING) + "Unable to bind";
|
475
507
|
noerrors = 0;
|
@@ -515,8 +547,12 @@ void CRhodesApp::initAppUrls()
|
|
515
547
|
{
|
516
548
|
CRhodesAppBase::initAppUrls();
|
517
549
|
m_currentTabIndex = 0;
|
518
|
-
|
550
|
+
|
551
|
+
#if defined( OS_WINCE ) || defined( OS_WINDOWS )
|
519
552
|
m_strHomeUrl = "http://localhost:";
|
553
|
+
#else
|
554
|
+
m_strHomeUrl = "http://127.0.0.1:";
|
555
|
+
#endif
|
520
556
|
m_strHomeUrl += getFreeListeningPort();
|
521
557
|
|
522
558
|
m_strLoadingPagePath = "file://" + getRhoRootPath() + "apps/app/loading.html";
|
@@ -615,7 +651,7 @@ const String& CRhodesApp::getRhobundleReloadUrl()
|
|
615
651
|
|
616
652
|
void CRhodesApp::navigateToUrl( const String& strUrl)
|
617
653
|
{
|
618
|
-
rho_webview_navigate(strUrl.c_str(),
|
654
|
+
rho_webview_navigate(strUrl.c_str(), -1);
|
619
655
|
}
|
620
656
|
|
621
657
|
void CRhodesApp::navigateBack()
|
@@ -976,6 +1012,10 @@ void rho_rhodesapp_callDateTimeCallback(const char* strCallbackUrl, long lDateTi
|
|
976
1012
|
RHODESAPP().callDateTimeCallback(strCallbackUrl, lDateTime, szData, bCancel != 0);
|
977
1013
|
}
|
978
1014
|
|
1015
|
+
void rho_rhodesapp_callBluetoothCallback(const char* strCallbackUrl, const char* body) {
|
1016
|
+
RHODESAPP().callBluetoothCallback(strCallbackUrl, body);
|
1017
|
+
}
|
1018
|
+
|
979
1019
|
void rho_rhodesapp_callPopupCallback(const char *strCallbackUrl, const char *id, const char *title)
|
980
1020
|
{
|
981
1021
|
RHODESAPP().callPopupCallback(strCallbackUrl, id, title);
|
@@ -1110,6 +1150,13 @@ void rho_net_request(const char *url)
|
|
1110
1150
|
request->pullData(url, null);
|
1111
1151
|
}
|
1112
1152
|
|
1153
|
+
void rho_net_request_with_data(const char *url, const char *str_body) {
|
1154
|
+
rho::common::CAutoPtr<rho::common::IRhoClassFactory> factory = rho_impl_createClassFactory();
|
1155
|
+
rho::common::CAutoPtr<rho::net::INetRequest> request = factory->createNetRequest();
|
1156
|
+
request->pushData(url, str_body, null);
|
1157
|
+
}
|
1158
|
+
|
1159
|
+
|
1113
1160
|
void rho_rhodesapp_load_url(const char *url)
|
1114
1161
|
{
|
1115
1162
|
RHODESAPP().loadUrl(url);
|
@@ -1148,4 +1195,9 @@ unsigned long long rho_cur_time()
|
|
1148
1195
|
}
|
1149
1196
|
#endif
|
1150
1197
|
|
1198
|
+
void rho_free_callbackdata(void* pData)
|
1199
|
+
{
|
1200
|
+
//It is used in SyncClient.
|
1201
|
+
}
|
1202
|
+
|
1151
1203
|
} //extern "C"
|
@@ -52,6 +52,7 @@ private:
|
|
52
52
|
String m_strScreenRotationCallback, m_strScreenRotationCallbackParams;
|
53
53
|
|
54
54
|
boolean m_bDeactivationMode;
|
55
|
+
int m_activateCounter;
|
55
56
|
|
56
57
|
public:
|
57
58
|
~CRhodesApp(void);
|
@@ -84,6 +85,7 @@ public:
|
|
84
85
|
void callCameraCallback(String strCallbackUrl, const String& strImagePath, const String& strError, boolean bCancel );
|
85
86
|
void callSignatureCallback(String strCallbackUrl, const String& strSignaturePath, const String& strError, boolean bCancel );
|
86
87
|
void callDateTimeCallback(String strCallbackUrl, long lDateTime, const char* szData, int bCancel );
|
88
|
+
void callBluetoothCallback(String strCallbackUrl, const char* body);
|
87
89
|
void callAppActiveCallback(boolean bActive);
|
88
90
|
void callPopupCallback(String strCallbackUrl, const String &id, const String &title);
|
89
91
|
|
@@ -160,6 +162,7 @@ void rho_rhodesapp_callCameraCallback(const char* strCallbackUrl, const char* st
|
|
160
162
|
void rho_rhodesapp_callSignatureCallback(const char* strCallbackUrl, const char* strSignaturePath,
|
161
163
|
const char* strError, int bCancel );
|
162
164
|
void rho_rhodesapp_callDateTimeCallback(const char* strCallbackUrl, long lDateTime, const char* szData, int bCancel );
|
165
|
+
void rho_rhodesapp_callBluetoothCallback(const char* strCallbackUrl, const char* body);
|
163
166
|
void rho_rhodesapp_callAppActiveCallback(int nActive);
|
164
167
|
unsigned long rho_rhodesapp_GetCallbackObject(int nIndex);
|
165
168
|
|
@@ -177,6 +180,7 @@ int rho_base64_encode(const char *src, int srclen, char *dst);
|
|
177
180
|
int rho_base64_decode(const char *src, int srclen, char *dst);
|
178
181
|
|
179
182
|
void rho_net_request(const char *url);
|
183
|
+
void rho_net_request_with_data(const char *url, const char *str_body);
|
180
184
|
|
181
185
|
void rho_rhodesapp_load_url(const char *url);
|
182
186
|
|
@@ -15,28 +15,33 @@ CThreadQueue::~CThreadQueue(void)
|
|
15
15
|
{
|
16
16
|
}
|
17
17
|
|
18
|
+
void CThreadQueue::addQueueCommandInt(IQueueCommand* pCmd)
|
19
|
+
{
|
20
|
+
synchronized(m_mxStackCommands);
|
21
|
+
|
22
|
+
boolean bExist = false;
|
23
|
+
if ( isSkipDuplicateCmd() )
|
24
|
+
{
|
25
|
+
for ( int i = 0; i < (int)m_stackCommands.size(); i++ )
|
26
|
+
{
|
27
|
+
if ( m_stackCommands.get(i)->equals(*pCmd) )
|
28
|
+
{
|
29
|
+
bExist = true;
|
30
|
+
break;
|
31
|
+
}
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
if ( !bExist )
|
36
|
+
m_stackCommands.add(pCmd);
|
37
|
+
|
38
|
+
}
|
39
|
+
|
18
40
|
void CThreadQueue::addQueueCommand(IQueueCommand* pCmd)
|
19
41
|
{
|
20
42
|
LOG(INFO) + "addCommand: " + pCmd->toString();
|
21
|
-
{
|
22
|
-
synchronized(m_mxStackCommands);
|
23
43
|
|
24
|
-
|
25
|
-
if ( isSkipDuplicateCmd() )
|
26
|
-
{
|
27
|
-
for ( int i = 0; i < (int)m_stackCommands.size(); i++ )
|
28
|
-
{
|
29
|
-
if ( m_stackCommands.get(i)->equals(*pCmd) )
|
30
|
-
{
|
31
|
-
bExist = true;
|
32
|
-
break;
|
33
|
-
}
|
34
|
-
}
|
35
|
-
}
|
36
|
-
|
37
|
-
if ( !bExist )
|
38
|
-
m_stackCommands.add(pCmd);
|
39
|
-
}
|
44
|
+
addQueueCommandInt(pCmd);
|
40
45
|
|
41
46
|
if ( isNoThreadedMode() )
|
42
47
|
processCommands();
|
@@ -1,44 +1,44 @@
|
|
1
1
|
CREATE TABLE client_info (
|
2
|
-
client_id VARCHAR(255) default NULL,
|
3
|
-
session VARCHAR(255) default NULL,
|
4
|
-
token VARCHAR(255) default NULL,
|
5
|
-
token_sent BIGINT default 0,
|
6
|
-
reset BIGINT default 0,
|
7
|
-
port VARCHAR(10) default NULL,
|
8
|
-
last_sync_success VARCHAR(100) default NULL);
|
2
|
+
"client_id" VARCHAR(255) default NULL,
|
3
|
+
"session" VARCHAR(255) default NULL,
|
4
|
+
"token" VARCHAR(255) default NULL,
|
5
|
+
"token_sent" BIGINT default 0,
|
6
|
+
"reset" BIGINT default 0,
|
7
|
+
"port" VARCHAR(10) default NULL,
|
8
|
+
"last_sync_success" VARCHAR(100) default NULL);
|
9
9
|
CREATE TABLE object_values (
|
10
|
-
source_id BIGINT default NULL,
|
11
|
-
attrib varchar(255) default NULL,
|
12
|
-
object varchar(255) default NULL,
|
13
|
-
value varchar default NULL);
|
10
|
+
"source_id" BIGINT default NULL,
|
11
|
+
"attrib" varchar(255) default NULL,
|
12
|
+
"object" varchar(255) default NULL,
|
13
|
+
"value" varchar default NULL);
|
14
14
|
CREATE TABLE changed_values (
|
15
|
-
source_id BIGINT default NULL,
|
16
|
-
attrib varchar(255) default NULL,
|
17
|
-
object varchar(255) default NULL,
|
18
|
-
value varchar default NULL,
|
19
|
-
attrib_type varchar(255) default NULL,
|
20
|
-
update_type varchar(255) default NULL,
|
21
|
-
sent BIGINT default 0);
|
15
|
+
"source_id" BIGINT default NULL,
|
16
|
+
"attrib" varchar(255) default NULL,
|
17
|
+
"object" varchar(255) default NULL,
|
18
|
+
"value" varchar default NULL,
|
19
|
+
"attrib_type" varchar(255) default NULL,
|
20
|
+
"update_type" varchar(255) default NULL,
|
21
|
+
"sent" BIGINT default 0);
|
22
22
|
CREATE TABLE sources (
|
23
|
-
source_id BIGINT PRIMARY KEY,
|
24
|
-
name VARCHAR(255) default NULL,
|
25
|
-
token BIGINT default NULL,
|
26
|
-
sync_priority BIGINT,
|
27
|
-
partition VARCHAR(255),
|
28
|
-
sync_type VARCHAR(255),
|
29
|
-
metadata varchar default NULL,
|
30
|
-
last_updated BIGINT default 0,
|
31
|
-
last_inserted_size BIGINT default 0,
|
32
|
-
last_deleted_size BIGINT default 0,
|
33
|
-
last_sync_duration BIGINT default 0,
|
34
|
-
last_sync_success BIGINT default 0,
|
35
|
-
backend_refresh_time BIGINT default 0,
|
36
|
-
source_attribs varchar default NULL,
|
37
|
-
schema varchar default NULL,
|
38
|
-
schema_version varchar default NULL,
|
39
|
-
associations varchar default NULL,
|
40
|
-
blob_attribs varchar default NULL);
|
41
|
-
CREATE INDEX by_src_id on object_values (source_id);
|
42
|
-
CREATE UNIQUE INDEX by_src_object ON object_values (object, attrib, source_id);
|
43
|
-
CREATE INDEX by_src_value ON object_values (attrib, source_id, value);
|
23
|
+
"source_id" BIGINT PRIMARY KEY,
|
24
|
+
"name" VARCHAR(255) default NULL,
|
25
|
+
"token" BIGINT default NULL,
|
26
|
+
"sync_priority" BIGINT,
|
27
|
+
"partition" VARCHAR(255),
|
28
|
+
"sync_type" VARCHAR(255),
|
29
|
+
"metadata" varchar default NULL,
|
30
|
+
"last_updated" BIGINT default 0,
|
31
|
+
"last_inserted_size" BIGINT default 0,
|
32
|
+
"last_deleted_size" BIGINT default 0,
|
33
|
+
"last_sync_duration" BIGINT default 0,
|
34
|
+
"last_sync_success" BIGINT default 0,
|
35
|
+
"backend_refresh_time" BIGINT default 0,
|
36
|
+
"source_attribs" varchar default NULL,
|
37
|
+
"schema" varchar default NULL,
|
38
|
+
"schema_version" varchar default NULL,
|
39
|
+
"associations" varchar default NULL,
|
40
|
+
"blob_attribs" varchar default NULL);
|
41
|
+
CREATE INDEX by_src_id on object_values ("source_id");
|
42
|
+
CREATE UNIQUE INDEX by_src_object ON object_values ("object", "attrib", "source_id");
|
43
|
+
CREATE INDEX by_src_value ON object_values ("attrib", "source_id", "value");
|
44
44
|
|