rhodes 2.1.0 → 2.2.0.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
|