rhodes 2.3.0 → 2.3.1.beta.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +6 -0
- data/Manifest.txt +5819 -0
- data/README.md +2 -2
- data/Rakefile +9 -5
- data/doc/build.txt +7 -13
- data/doc/configuration.txt +4 -0
- data/doc/connect-to-web-services.txt +0 -1
- data/doc/device-caps.txt +2 -2
- data/doc/extensions.txt +2 -0
- data/doc/linea.txt +699 -0
- data/doc/rhom.txt +2 -1
- data/doc/synchronization.txt +39 -2
- data/doc/ui.txt +1 -0
- data/installer/README.html +1 -1
- data/lib/build/jake.rb +3 -0
- data/lib/framework/res/esri.wm.png +0 -0
- data/lib/framework/rho/render.rb +2 -0
- data/lib/framework/rho/rho.rb +17 -10
- data/lib/framework/rho/rhoapplication.rb +13 -3
- data/lib/framework/rho/rhoevent_bb.rb +3 -1
- data/lib/framework/rho/rhoevent_c.rb +4 -1
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rhom/rhom.rb +10 -0
- data/lib/framework/rhom/rhom_object_factory.rb +45 -0
- data/lib/framework/rhom/rhom_source.rb +1 -1
- data/lib/framework/version.rb +1 -1
- data/lib/rhodes.rb +1 -1
- data/platform/android/Rhodes/AndroidManifest.xml +2 -2
- data/platform/android/Rhodes/jni/include/rhodes/RhoClassFactory.h +1 -1
- data/platform/android/Rhodes/jni/src/RhoClassFactory.cpp +1 -1
- data/platform/android/Rhodes/jni/src/callbacks.cpp +9 -11
- data/platform/android/Rhodes/jni/src/event.cpp +17 -9
- data/platform/android/Rhodes/jni/src/mapview.cpp +34 -4
- data/platform/android/Rhodes/jni/src/rhodes.cpp +1 -1
- data/platform/android/Rhodes/res/drawable/esri.png +0 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/AndroidR.java +1 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/BaseActivity.java +3 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesActivity.java +8 -5
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/RhodesService.java +80 -9
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/event/EventStore.java +29 -8
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +4 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +50 -10
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +3 -0
- data/platform/android/build/android.rake +45 -23
- data/platform/android/build/librhocommon_build.files +1 -0
- data/platform/bb/Hsqldb/src/com/rho/db/HsqlDBStorage.java +6 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/CachedDataRow.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/CachedRow.java +3 -2
- data/platform/bb/Hsqldb/src/org/hsqldb/Row.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/persist/CachedObject.java +1 -1
- data/platform/bb/Hsqldb/src/org/hsqldb/persist/DataFileCache.java +66 -16
- data/platform/bb/Hsqldb/src/org/hsqldb/persist/HsqlDatabaseProperties.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/RhoCrypto.java +116 -0
- data/platform/bb/RubyVM/src/com/rho/ThreadQueue.java +39 -2
- data/platform/bb/RubyVM/src/com/rho/Tokenizer.java +11 -6
- data/platform/bb/RubyVM/src/com/rho/db/DBAdapter.java +157 -150
- data/platform/bb/RubyVM/src/com/rho/db/IDBStorage.java +1 -1
- data/platform/bb/RubyVM/src/com/rho/file/RhoFile.java +15 -0
- data/platform/bb/RubyVM/src/com/rho/net/AsyncHttp.java +35 -23
- data/platform/bb/RubyVM/src/com/rho/net/NetRequest.java +6 -9
- data/platform/bb/RubyVM/src/com/rho/sync/SyncEngine.java +54 -16
- data/platform/bb/RubyVM/src/com/rho/sync/SyncNotify.java +18 -9
- data/platform/bb/RubyVM/src/com/rho/sync/SyncSource.java +37 -59
- data/platform/bb/RubyVM/src/com/rho/sync/SyncThread.java +3 -0
- data/platform/bb/build/RubyVM_build.files +1 -0
- data/platform/bb/build/bb.rake +4 -5
- data/platform/bb/rhodes/platform/5.0/com/rho/RhodesApplicationPlatform.java +4 -1
- data/platform/bb/rhodes/platform/5.0/com/rho/db/SqliteStorage.java +8 -3
- data/platform/bb/rhodes/resources/esri.png +0 -0
- data/platform/bb/rhodes/src/com/rho/RhodesApplicationPlatform.java +2 -0
- data/platform/bb/rhodes/src/com/rho/db/SqliteStorage.java +8 -3
- data/platform/bb/rhodes/src/com/rho/rubyext/RhoCalendar.java +4 -1
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +2 -0
- data/platform/bb/rhodes/src/rhomobile/mapview/ESRIMapField.java +9 -0
- data/platform/iphone/Classes/Event/Event.m +12 -2
- data/platform/iphone/Classes/NativeBar.h +12 -11
- data/platform/iphone/Classes/NativeBar.m +13 -3
- data/platform/iphone/Classes/Rhodes.m +48 -10
- data/platform/iphone/Classes/SimpleMainView.h +1 -0
- data/platform/iphone/Classes/SimpleMainView.m +7 -1
- data/platform/iphone/Classes/SplitView/LeftViewController.m +3 -0
- data/platform/iphone/Classes/SplitView/RightViewController.m +11 -6
- data/platform/iphone/Classes/SplitView/SplittedMainView.m +8 -0
- data/platform/iphone/Classes/TabbedMainView.m +39 -3
- data/platform/iphone/Info.plist +1 -1
- data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +4 -0
- data/platform/iphone/rhorunner.xcodeproj/project.pbxproj +3 -3
- data/platform/shared/SyncClient/SyncClient.cpp +23 -23
- data/platform/shared/common/IRhoClassFactory.h +6 -4
- data/platform/shared/common/RhoAppAdapter.h +1 -1
- data/platform/shared/common/RhoFile.cpp +10 -0
- data/platform/shared/common/RhoFile.h +1 -0
- data/platform/shared/common/RhoMutexLock.h +1 -1
- data/platform/shared/common/RhoStd.h +5 -0
- data/platform/shared/common/RhoThread.cpp +2 -2
- data/platform/shared/common/RhoThread.h +1 -2
- data/platform/shared/common/RhodesApp.cpp +33 -55
- data/platform/shared/common/RhodesApp.h +0 -5
- data/platform/shared/common/RhodesAppBase.cpp +1 -1
- data/platform/shared/common/SplashScreen.cpp +1 -2
- data/platform/shared/common/ThreadQueue.cpp +31 -4
- data/platform/shared/common/ThreadQueue.h +10 -3
- data/platform/shared/common/Tokenizer.cpp +12 -8
- data/platform/shared/common/iphone/RhoClassFactory.cpp +5 -8
- data/platform/shared/common/iphone/RhoClassfactory.h +1 -1
- data/platform/shared/common/map/ESRIMapEngine.cpp +17 -7
- data/platform/shared/common/map/ESRIMapEngine.h +11 -1
- data/platform/shared/common/map/GoogleMapEngine.cpp +3 -3
- data/platform/shared/common/map/GoogleMapEngine.h +2 -2
- data/platform/shared/common/map/MapEngine.cpp +37 -0
- data/platform/shared/common/map/MapEngine.h +5 -0
- data/platform/shared/db/DBAdapter.cpp +113 -81
- data/platform/shared/db/DBAdapter.h +21 -5
- data/platform/shared/db/DBAttrManager.cpp +2 -2
- data/platform/shared/db/DBResult.h +28 -0
- data/platform/shared/net/AsyncHttp.cpp +48 -48
- data/platform/shared/net/AsyncHttp.h +15 -12
- data/platform/shared/net/CURLNetRequest.cpp +27 -105
- data/platform/shared/net/CURLNetRequest.h +8 -15
- data/platform/shared/net/INetRequest.cpp +122 -0
- data/platform/shared/net/INetRequest.h +96 -23
- data/platform/shared/net/ssl.cpp +1 -1
- data/platform/shared/ruby/ext/calendar/calendar.i +2 -2
- data/platform/shared/ruby/ext/calendar/calendar_wrap.c +30 -3
- data/platform/shared/rubyext/GeoLocation.cpp +4 -5
- data/platform/shared/rubyext/GeoLocation.h +4 -4
- data/platform/shared/rubyext/RhoAppAdapter.cpp +1 -1
- data/platform/shared/rubyext/System.cpp +3 -0
- data/platform/shared/sync/ClientRegister.cpp +6 -9
- data/platform/shared/sync/ClientRegister.h +8 -6
- data/platform/shared/sync/SyncEngine.cpp +54 -30
- data/platform/shared/sync/SyncEngine.h +9 -11
- data/platform/shared/sync/SyncNotify.cpp +19 -14
- data/platform/shared/sync/SyncNotify.h +5 -12
- data/platform/shared/sync/SyncSource.cpp +53 -76
- data/platform/shared/sync/SyncSource.h +5 -4
- data/platform/shared/sync/SyncThread.cpp +5 -7
- data/platform/shared/sync/SyncThread.h +2 -2
- data/platform/wm/RhoLib/RhoLib.vcproj +43 -39
- data/platform/wm/build/wm.rake +19 -17
- data/platform/wm/rhodes/AppManager.cpp +4 -4
- data/platform/wm/rhodes/MainWindow.cpp +0 -1
- data/platform/wm/rhodes/MapView/MapViewManager.cpp +4 -0
- data/platform/wm/rhodes/Vibrate.cpp +2 -2
- data/platform/wm/rhodes/Vibrate.h +1 -1
- data/platform/wm/rhodes/rho/common/RhoClassFactory.cpp +7 -5
- data/platform/wm/rhodes/rho/common/RhoClassFactory.h +3 -3
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +24 -10
- data/platform/wm/rhodes/rho/net/NetRequestImpl.h +49 -25
- data/platform/wm/rhodes/rho/rubyext/calendar.cpp +16 -2
- data/platform/wm/rhodes/rhodes.vcproj +77 -85
- data/platform/wm/tools/detool/detool.cpp +16 -6
- data/rakefile.rb +9 -5
- data/res/build-tools/detool.exe +0 -0
- data/rhodes.gemspec +2 -2
- data/spec/phone_spec/app/spec/blobsync_spec.rb +1 -0
- data/spec/phone_spec/app/spec/events_spec.rb +13 -2
- data/spec/phone_spec/app/spec/mapview_spec.rb +2 -2
- data/spec/phone_spec/app/spec/nativebar_spec.rb +3 -3
- data/spec/phone_spec/app/spec/navbar_spec.rb +3 -3
- data/spec/phone_spec/app/spec/rho_spec.rb +1 -1
- data/spec/phone_spec/app/spec/rhom_object_spec.rb +1 -1
- data/spec/phone_spec/app/spec/syncengine_spec.rb +219 -0
- data/spec/phone_spec/build.yml +1 -0
- metadata +15 -8
- data/platform/wm/rhodes/rho/net/NetRequest.cpp +0 -89
- data/platform/wm/rhodes/rho/net/NetRequest.h +0 -45
@@ -23,7 +23,7 @@ static const int ERR_GEOLOCATION = 12;
|
|
23
23
|
|
24
24
|
static String getMessageText(const char* szName);
|
25
25
|
static String getErrorText(int nError);
|
26
|
-
static int getErrorFromResponse(
|
26
|
+
static int getErrorFromResponse(NetResponse& resp);
|
27
27
|
static void loadServerSources(const String& strSources);
|
28
28
|
static void loadAllSyncSources();
|
29
29
|
static const char* getRhoDBVersion();
|
@@ -245,5 +245,15 @@ void CRhoFile::deleteFilesInFolder(const char* szFolderPath)
|
|
245
245
|
}
|
246
246
|
}
|
247
247
|
|
248
|
+
/*static*/ void CRhoFile::writeStringToFile( const char* szFilePath, String& strData )
|
249
|
+
{
|
250
|
+
common::CRhoFile oFile;
|
251
|
+
if ( oFile.open( szFilePath, common::CRhoFile::OpenForWrite) )
|
252
|
+
{
|
253
|
+
oFile.write(strData.c_str(), strData.length() );
|
254
|
+
oFile.close();
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
248
258
|
}
|
249
259
|
}
|
@@ -43,6 +43,7 @@ public:
|
|
43
43
|
static void loadTextFile(const char* szFilePath, String& strFile);
|
44
44
|
static void createFolder(const char* szDirPath);
|
45
45
|
static void readStringFromFile( const char* szFilePath, String& strData );
|
46
|
+
static void writeStringToFile( const char* szFilePath, String& strData );
|
46
47
|
private:
|
47
48
|
CRhoFile(const CRhoFile&);
|
48
49
|
void operator=(const CRhoFile&);
|
@@ -4,10 +4,10 @@
|
|
4
4
|
namespace rho {
|
5
5
|
namespace common {
|
6
6
|
|
7
|
-
CRhoThread::CRhoThread(
|
7
|
+
CRhoThread::CRhoThread()
|
8
8
|
{
|
9
9
|
m_nState = TS_NONE;
|
10
|
-
m_pImpl =
|
10
|
+
m_pImpl = rho_get_RhoClassFactory()->createThreadImpl();
|
11
11
|
}
|
12
12
|
|
13
13
|
void CRhoThread::start(EPriority ePriority)
|
@@ -7,7 +7,6 @@
|
|
7
7
|
namespace rho {
|
8
8
|
namespace common {
|
9
9
|
|
10
|
-
struct IRhoClassFactory;
|
11
10
|
class CRhoThread : public IRhoRunnable
|
12
11
|
{
|
13
12
|
CAutoPtr<IRhoThreadImpl> m_pImpl;
|
@@ -19,7 +18,7 @@ class CRhoThread : public IRhoRunnable
|
|
19
18
|
int m_nState;
|
20
19
|
public:
|
21
20
|
|
22
|
-
CRhoThread(
|
21
|
+
CRhoThread();
|
23
22
|
virtual ~CRhoThread(void){};
|
24
23
|
|
25
24
|
virtual void start(EPriority ePriority);
|
@@ -53,7 +53,7 @@ public:
|
|
53
53
|
};
|
54
54
|
|
55
55
|
public:
|
56
|
-
CAppCallbacksQueue(
|
56
|
+
CAppCallbacksQueue();
|
57
57
|
~CAppCallbacksQueue();
|
58
58
|
|
59
59
|
//void call(callback_t type);
|
@@ -99,8 +99,8 @@ char const *CAppCallbacksQueue::toString(int type)
|
|
99
99
|
}
|
100
100
|
}
|
101
101
|
|
102
|
-
CAppCallbacksQueue::CAppCallbacksQueue(
|
103
|
-
:CThreadQueue(
|
102
|
+
CAppCallbacksQueue::CAppCallbacksQueue()
|
103
|
+
:CThreadQueue(), m_expected(local_server_started)
|
104
104
|
{
|
105
105
|
CThreadQueue::setLogCategory(getLogCategory());
|
106
106
|
//setPollInterval(1);
|
@@ -143,7 +143,7 @@ void CAppCallbacksQueue::processCommand(IQueueCommand* pCmd)
|
|
143
143
|
if (cmd->type > m_expected)
|
144
144
|
{
|
145
145
|
boolean bDuplicate = false;
|
146
|
-
for( int i = 0; i < m_commands.size() ; i++)
|
146
|
+
for( int i = 0; i < (int)m_commands.size() ; i++)
|
147
147
|
{
|
148
148
|
if ( m_commands.elementAt(i) == cmd->type )
|
149
149
|
{
|
@@ -181,15 +181,13 @@ void CAppCallbacksQueue::processCommand(IQueueCommand* pCmd)
|
|
181
181
|
break;
|
182
182
|
|
183
183
|
case local_server_started:
|
184
|
-
|
184
|
+
m_expected = ui_created;
|
185
185
|
break;
|
186
186
|
case ui_created:
|
187
187
|
{
|
188
|
-
common::CAutoPtr<common::IRhoClassFactory> factory = rho_impl_createClassFactory();
|
189
|
-
common::CAutoPtr<net::INetRequest> pNetRequest = factory->createNetRequest();
|
190
188
|
String strUrl = RHODESAPP().getBaseUrl();
|
191
189
|
strUrl += "/system/uicreated";
|
192
|
-
NetResponse
|
190
|
+
NetResponse resp = getNetRequest().pullData( strUrl, null );
|
193
191
|
if ( !resp.isOK() )
|
194
192
|
LOG(ERROR) + "activate app failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
195
193
|
|
@@ -198,19 +196,9 @@ void CAppCallbacksQueue::processCommand(IQueueCommand* pCmd)
|
|
198
196
|
break;
|
199
197
|
case app_activated:
|
200
198
|
{
|
201
|
-
/* static bool navigatedToStartUrl = false;
|
202
|
-
if (!navigatedToStartUrl)
|
203
|
-
{
|
204
|
-
LOG(INFO) + "navigate to first start url";
|
205
|
-
RHODESAPP().navigateToUrl(RHODESAPP().getFirstStartUrl());
|
206
|
-
navigatedToStartUrl = true;
|
207
|
-
}*/
|
208
|
-
|
209
|
-
common::CAutoPtr<common::IRhoClassFactory> factory = rho_impl_createClassFactory();
|
210
|
-
common::CAutoPtr<net::INetRequest> pNetRequest = factory->createNetRequest();
|
211
199
|
String strUrl = RHODESAPP().getBaseUrl();
|
212
200
|
strUrl += "/system/activateapp";
|
213
|
-
NetResponse
|
201
|
+
NetResponse resp = getNetRequest().pullData( strUrl, null );
|
214
202
|
if ( !resp.isOK() )
|
215
203
|
LOG(ERROR) + "activate app failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
216
204
|
|
@@ -249,9 +237,7 @@ CRhodesApp::CRhodesApp(const String& strRootPath)
|
|
249
237
|
m_bRestartServer = false;
|
250
238
|
//m_activateCounter = 0;
|
251
239
|
|
252
|
-
|
253
|
-
m_NetRequest = m_ptrFactory->createNetRequest();
|
254
|
-
m_appCallbacksQueue = new CAppCallbacksQueue(rho_impl_createClassFactory());
|
240
|
+
m_appCallbacksQueue = new CAppCallbacksQueue();
|
255
241
|
|
256
242
|
#if defined( OS_WINCE ) || defined (OS_WINDOWS)
|
257
243
|
//initializing winsock
|
@@ -275,12 +261,12 @@ void CRhodesApp::run()
|
|
275
261
|
{
|
276
262
|
LOG(INFO) + "Starting RhodesApp main routine...";
|
277
263
|
RhoRubyStart();
|
278
|
-
rubyext::CGeoLocation::Create(
|
264
|
+
rubyext::CGeoLocation::Create();
|
279
265
|
|
280
266
|
rho_db_init_attr_manager();
|
281
267
|
|
282
268
|
LOG(INFO) + "Starting sync engine...";
|
283
|
-
sync::CSyncThread::Create(
|
269
|
+
sync::CSyncThread::Create();
|
284
270
|
|
285
271
|
LOG(INFO) + "RhoRubyInitApp...";
|
286
272
|
RhoRubyInitApp();
|
@@ -345,7 +331,7 @@ class CRhoCallInThread : public common::CRhoThread
|
|
345
331
|
{
|
346
332
|
public:
|
347
333
|
CRhoCallInThread(T* cb)
|
348
|
-
:CRhoThread(
|
334
|
+
:CRhoThread(), m_cb(cb)
|
349
335
|
{
|
350
336
|
start(epNormal);
|
351
337
|
}
|
@@ -369,23 +355,21 @@ void rho_rhodesapp_call_in_thread(T *cb)
|
|
369
355
|
|
370
356
|
class CRhoCallbackCall
|
371
357
|
{
|
372
|
-
common::CAutoPtr<common::IRhoClassFactory> m_ptrFactory;
|
373
358
|
String m_strCallback, m_strBody;
|
374
359
|
public:
|
375
|
-
CRhoCallbackCall(const String& strCallback, const String& strBody
|
376
|
-
:
|
360
|
+
CRhoCallbackCall(const String& strCallback, const String& strBody)
|
361
|
+
: m_strCallback(strCallback), m_strBody(strBody)
|
377
362
|
{}
|
378
363
|
|
379
364
|
void run(common::CRhoThread &)
|
380
365
|
{
|
381
|
-
|
382
|
-
common::CAutoPtr<net::INetResponse> presp = pNetRequest->pushData( m_strCallback, m_strBody, null );
|
366
|
+
getNetRequest().pushData( m_strCallback, m_strBody, null );
|
383
367
|
}
|
384
368
|
};
|
385
369
|
|
386
370
|
void CRhodesApp::runCallbackInThread(const String& strCallback, const String& strBody)
|
387
371
|
{
|
388
|
-
rho_rhodesapp_call_in_thread(new CRhoCallbackCall(strCallback, strBody
|
372
|
+
rho_rhodesapp_call_in_thread(new CRhoCallbackCall(strCallback, strBody ) );
|
389
373
|
}
|
390
374
|
|
391
375
|
static void callback_activateapp(void *arg, String const &strQuery)
|
@@ -443,7 +427,7 @@ void CRhodesApp::callUiCreatedCallback()
|
|
443
427
|
void CRhodesApp::callUiDestroyedCallback()
|
444
428
|
{
|
445
429
|
String strUrl = m_strHomeUrl + "/system/uidestroyed";
|
446
|
-
NetResponse
|
430
|
+
NetResponse resp = getNetRequest().pullData( strUrl, null );
|
447
431
|
if ( !resp.isOK() )
|
448
432
|
{
|
449
433
|
LOG(ERROR) + "UI destroy callback failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
@@ -480,7 +464,7 @@ void CRhodesApp::callAppActiveCallback(boolean bActive)
|
|
480
464
|
m_appCallbacksQueue->addQueueCommand(new CAppCallbacksQueue::Command(CAppCallbacksQueue::app_deactivated));
|
481
465
|
|
482
466
|
String strUrl = m_strHomeUrl + "/system/deactivateapp";
|
483
|
-
NetResponse
|
467
|
+
NetResponse resp = getNetRequest().pullData( strUrl, null );
|
484
468
|
if ( !resp.isOK() )
|
485
469
|
{
|
486
470
|
LOG(ERROR) + "deactivate app failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
@@ -491,8 +475,10 @@ void CRhodesApp::callAppActiveCallback(boolean bActive)
|
|
491
475
|
|
492
476
|
if (bStop)
|
493
477
|
{
|
478
|
+
#if !defined( OS_WINCE ) && !defined (OS_WINDOWS)
|
494
479
|
LOG(INFO) + "Stopping local server.";
|
495
480
|
m_httpServer->stop();
|
481
|
+
#endif
|
496
482
|
}
|
497
483
|
}
|
498
484
|
|
@@ -515,7 +501,7 @@ void CRhodesApp::callCameraCallback(String strCallbackUrl, const String& strImag
|
|
515
501
|
strBody = "status=ok&image_uri=db%2Fdb-files%2F" + strImagePath;
|
516
502
|
|
517
503
|
strBody += "&rho_callback=1";
|
518
|
-
|
504
|
+
getNetRequest().pushData( strCallbackUrl, strBody, null );
|
519
505
|
}
|
520
506
|
|
521
507
|
void CRhodesApp::callSignatureCallback(String strCallbackUrl, const String& strSignaturePath,
|
@@ -533,7 +519,7 @@ void CRhodesApp::callSignatureCallback(String strCallbackUrl, const String& strS
|
|
533
519
|
strBody = "status=ok&signature_uri=db%2Fdb-files%2F" + strSignaturePath;
|
534
520
|
|
535
521
|
strBody += "&rho_callback=1";
|
536
|
-
|
522
|
+
getNetRequest().pushData( strCallbackUrl, strBody, null );
|
537
523
|
}
|
538
524
|
|
539
525
|
void CRhodesApp::callDateTimeCallback(String strCallbackUrl, long lDateTime, const char* szData, int bCancel )
|
@@ -552,14 +538,14 @@ void CRhodesApp::callDateTimeCallback(String strCallbackUrl, long lDateTime, con
|
|
552
538
|
}
|
553
539
|
|
554
540
|
strBody += "&rho_callback=1";
|
555
|
-
|
541
|
+
getNetRequest().pushData( strCallbackUrl, strBody, null );
|
556
542
|
}
|
557
543
|
|
558
544
|
void CRhodesApp::callBluetoothCallback(String strCallbackUrl, const char* body) {
|
559
545
|
strCallbackUrl = canonicalizeRhoUrl(strCallbackUrl);
|
560
546
|
String strBody = body;
|
561
547
|
strBody += "&rho_callback=1";
|
562
|
-
|
548
|
+
getNetRequest().pushData( strCallbackUrl, strBody, null );
|
563
549
|
}
|
564
550
|
|
565
551
|
void CRhodesApp::callPopupCallback(String strCallbackUrl, const String &id, const String &title)
|
@@ -570,7 +556,7 @@ void CRhodesApp::callPopupCallback(String strCallbackUrl, const String &id, cons
|
|
570
556
|
strCallbackUrl = canonicalizeRhoUrl(strCallbackUrl);
|
571
557
|
String strBody = "button_id=" + id + "&button_title=" + title;
|
572
558
|
strBody += "&rho_callback=1";
|
573
|
-
|
559
|
+
getNetRequest().pushData( strCallbackUrl, strBody, null );
|
574
560
|
}
|
575
561
|
|
576
562
|
static void callback_syncdb(void *arg, String const &/*query*/ )
|
@@ -642,7 +628,7 @@ const String& CRhodesApp::getRhoMessage(int nError, const char* szName)
|
|
642
628
|
strUrl += szName;
|
643
629
|
}
|
644
630
|
|
645
|
-
NetResponse
|
631
|
+
NetResponse resp = getNetRequest().pullData( strUrl, null );
|
646
632
|
if ( !resp.isOK() )
|
647
633
|
{
|
648
634
|
LOG(ERROR) + "getRhoMessage failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
@@ -975,7 +961,7 @@ boolean CRhodesApp::sendLog()
|
|
975
961
|
|
976
962
|
boolean bOldSaveToFile = LOGCONF().isLogToFile();
|
977
963
|
LOGCONF().setLogToFile(false);
|
978
|
-
NetResponse
|
964
|
+
NetResponse resp = getNetRequest().pushMultipartData( strQuery, oItem, &(rho::sync::CSyncThread::getSyncEngine()), null );
|
979
965
|
LOGCONF().setLogToFile(bOldSaveToFile);
|
980
966
|
|
981
967
|
if ( !resp.isOK() )
|
@@ -1045,8 +1031,7 @@ boolean CRhodesApp::callPushCallback(String strData)
|
|
1045
1031
|
if ( m_strPushCallbackParams.length() > 0 )
|
1046
1032
|
strBody += "&" + m_strPushCallbackParams;
|
1047
1033
|
|
1048
|
-
|
1049
|
-
NetResponse(resp,pNetRequest->pushData( m_strPushCallback, strBody, null ));
|
1034
|
+
NetResponse resp = getNetRequest().pushData( m_strPushCallback, strBody, null );
|
1050
1035
|
if (!resp.isOK())
|
1051
1036
|
LOG(ERROR) + "Push notification failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
1052
1037
|
else
|
@@ -1084,9 +1069,7 @@ void CRhodesApp::callScreenRotationCallback(int width, int height, int degrees)
|
|
1084
1069
|
if ( m_strScreenRotationCallbackParams.length() > 0 )
|
1085
1070
|
strBody += "&" + m_strPushCallbackParams;
|
1086
1071
|
|
1087
|
-
|
1088
|
-
NetResponse(resp, pNetRequest->pushData( m_strScreenRotationCallback, strBody, null));
|
1089
|
-
|
1072
|
+
NetResponse resp = getNetRequest().pushData( m_strScreenRotationCallback, strBody, null);
|
1090
1073
|
if (!resp.isOK()) {
|
1091
1074
|
LOG(ERROR) + "Screen rotation notification failed. Code: " + resp.getRespCode() + "; Error body: " + resp.getCharData();
|
1092
1075
|
}
|
@@ -1128,9 +1111,7 @@ void CRhodesApp::loadUrl(String url)
|
|
1128
1111
|
url = canonicalizeRhoUrl(url);
|
1129
1112
|
if (callback)
|
1130
1113
|
{
|
1131
|
-
|
1132
|
-
NetResponse(resp, pNetRequest->pushData( url, "rho_callback=1", null ));
|
1133
|
-
(void)resp;
|
1114
|
+
getNetRequest().pushData( url, "rho_callback=1", null );
|
1134
1115
|
}
|
1135
1116
|
else
|
1136
1117
|
navigateToUrl(url);
|
@@ -1388,15 +1369,12 @@ int rho_conf_send_log()
|
|
1388
1369
|
|
1389
1370
|
void rho_net_request(const char *url)
|
1390
1371
|
{
|
1391
|
-
|
1392
|
-
rho::common::CAutoPtr<rho::net::INetRequest> request = factory->createNetRequest();
|
1393
|
-
request->pullData(url, null);
|
1372
|
+
getNetRequest().pullData(url, null);
|
1394
1373
|
}
|
1395
1374
|
|
1396
|
-
void rho_net_request_with_data(const char *url, const char *str_body)
|
1397
|
-
|
1398
|
-
|
1399
|
-
request->pushData(url, str_body, null);
|
1375
|
+
void rho_net_request_with_data(const char *url, const char *str_body)
|
1376
|
+
{
|
1377
|
+
getNetRequest().pushData(url, str_body, null);
|
1400
1378
|
}
|
1401
1379
|
|
1402
1380
|
void rho_rhodesapp_load_url(const char *url)
|
@@ -28,9 +28,6 @@ private:
|
|
28
28
|
CRhodesApp(const String& strRootPath);
|
29
29
|
boolean m_bExit, m_bRestartServer;
|
30
30
|
|
31
|
-
common::CAutoPtr<common::IRhoClassFactory> m_ptrFactory;
|
32
|
-
common::CAutoPtr<net::INetRequest> m_NetRequest;
|
33
|
-
|
34
31
|
String m_strListeningPorts;
|
35
32
|
|
36
33
|
common::CAutoPtr<net::CHttpServer> m_httpServer;
|
@@ -132,8 +129,6 @@ protected:
|
|
132
129
|
|
133
130
|
void initHttpServer();
|
134
131
|
void initAppUrls();
|
135
|
-
|
136
|
-
net::INetRequest& getNet(){ return *m_NetRequest; }
|
137
132
|
};
|
138
133
|
|
139
134
|
}
|
@@ -25,7 +25,7 @@ CRhodesAppBase* CRhodesAppBase::m_pInstance = 0;
|
|
25
25
|
m_pInstance = 0;
|
26
26
|
}
|
27
27
|
|
28
|
-
CRhodesAppBase::CRhodesAppBase(const String& strRootPath) : CRhoThread(
|
28
|
+
CRhodesAppBase::CRhodesAppBase(const String& strRootPath) : CRhoThread()
|
29
29
|
{
|
30
30
|
m_strRhoRootPath = strRootPath;
|
31
31
|
|
@@ -31,8 +31,7 @@ void CSplashScreen::hide()
|
|
31
31
|
if ( nWaitMs <= 0 )
|
32
32
|
return;
|
33
33
|
|
34
|
-
CAutoPtr<
|
35
|
-
CAutoPtr<IRhoThreadImpl> ptrThread = ptrFactory->createThreadImpl();
|
34
|
+
CAutoPtr<IRhoThreadImpl> ptrThread = rho_get_RhoClassFactory()->createThreadImpl();
|
36
35
|
|
37
36
|
ptrThread->sleep(nWaitMs);
|
38
37
|
}
|
@@ -5,12 +5,11 @@
|
|
5
5
|
namespace rho {
|
6
6
|
namespace common {
|
7
7
|
|
8
|
-
CThreadQueue::CThreadQueue(
|
8
|
+
CThreadQueue::CThreadQueue() : CRhoThread()
|
9
9
|
{
|
10
10
|
m_nPollInterval = QUEUE_POLL_INTERVAL_SECONDS;
|
11
11
|
m_bNoThreaded = false;
|
12
|
-
|
13
|
-
m_ptrFactory = factory;
|
12
|
+
m_pCurCmd = null;
|
14
13
|
}
|
15
14
|
|
16
15
|
CThreadQueue::~CThreadQueue(void)
|
@@ -76,6 +75,34 @@ void CThreadQueue::addQueueCommandToFront(IQueueCommand* pCmd)
|
|
76
75
|
stopWait();
|
77
76
|
}
|
78
77
|
|
78
|
+
void CThreadQueue::stop(unsigned int nTimeoutToKill)
|
79
|
+
{
|
80
|
+
cancelCurrentCommand();
|
81
|
+
CRhoThread::stop(nTimeoutToKill);
|
82
|
+
}
|
83
|
+
|
84
|
+
void CThreadQueue::cancelCurrentCommand()
|
85
|
+
{
|
86
|
+
synchronized(m_mxStackCommands);
|
87
|
+
if ( m_pCurCmd != null )
|
88
|
+
m_pCurCmd->cancel();
|
89
|
+
}
|
90
|
+
|
91
|
+
void CThreadQueue::processCommandBase(IQueueCommand* pCmd)
|
92
|
+
{
|
93
|
+
{
|
94
|
+
synchronized(m_mxStackCommands);
|
95
|
+
m_pCurCmd = pCmd;
|
96
|
+
}
|
97
|
+
|
98
|
+
processCommand(pCmd);
|
99
|
+
|
100
|
+
{
|
101
|
+
synchronized(m_mxStackCommands);
|
102
|
+
m_pCurCmd = null;
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
79
106
|
void CThreadQueue::run()
|
80
107
|
{
|
81
108
|
LOG(INFO) + "Starting main routine...";
|
@@ -130,7 +157,7 @@ void CThreadQueue::processCommands()//throws Exception
|
|
130
157
|
pCmd = (IQueueCommand*)m_stackCommands.removeFirst();
|
131
158
|
}
|
132
159
|
|
133
|
-
|
160
|
+
processCommandBase(pCmd);
|
134
161
|
}
|
135
162
|
}
|
136
163
|
|
@@ -25,24 +25,26 @@ public:
|
|
25
25
|
virtual ~IQueueCommand(){};
|
26
26
|
virtual boolean equals(const IQueueCommand& cmd) = 0;
|
27
27
|
virtual String toString() = 0;
|
28
|
+
virtual void cancel(){}
|
28
29
|
};
|
29
30
|
|
30
31
|
private:
|
31
32
|
|
32
|
-
common::CAutoPtr<common::IRhoClassFactory> m_ptrFactory;
|
33
33
|
int m_nPollInterval;
|
34
34
|
common::CMutex m_mxStackCommands;
|
35
35
|
LinkedListPtr<IQueueCommand*> m_stackCommands;
|
36
|
+
IQueueCommand* m_pCurCmd;
|
36
37
|
|
37
38
|
boolean m_bNoThreaded;
|
38
39
|
public:
|
39
|
-
CThreadQueue(
|
40
|
+
CThreadQueue();
|
40
41
|
|
41
42
|
~CThreadQueue(void);
|
42
43
|
|
43
44
|
virtual void addQueueCommand(IQueueCommand* pCmd);
|
44
45
|
virtual void addQueueCommandToFront(IQueueCommand* pCmd);
|
45
46
|
virtual void run();
|
47
|
+
virtual void stop(unsigned int nTimeoutToKill);
|
46
48
|
|
47
49
|
void setPollInterval(int nInterval);
|
48
50
|
int getPollInterval()const{ return m_nPollInterval;}
|
@@ -50,7 +52,11 @@ public:
|
|
50
52
|
boolean isNoThreadedMode(){ return m_bNoThreaded; }
|
51
53
|
void setNonThreadedMode(boolean b){m_bNoThreaded = b;}
|
52
54
|
|
53
|
-
|
55
|
+
void cancelCurrentCommand();
|
56
|
+
common::CMutex& getCommandLock(){ return m_mxStackCommands; }
|
57
|
+
IQueueCommand* getCurCommand(){ return m_pCurCmd; }
|
58
|
+
LinkedListPtr<IQueueCommand*>& getCommands(){ return m_stackCommands; }
|
59
|
+
|
54
60
|
protected:
|
55
61
|
virtual int getLastPollInterval(){ return 0;}
|
56
62
|
virtual void processCommand(IQueueCommand* pCmd) = 0;
|
@@ -60,6 +66,7 @@ protected:
|
|
60
66
|
boolean isAlreadyExist(IQueueCommand *pCmd);
|
61
67
|
|
62
68
|
void processCommands();
|
69
|
+
void processCommandBase(IQueueCommand* pCmd);
|
63
70
|
|
64
71
|
void addQueueCommandInt(IQueueCommand* pCmd);
|
65
72
|
void addQueueCommandToFrontInt(IQueueCommand* pCmd);
|
@@ -12,32 +12,36 @@ CTokenizer::CTokenizer(String str,String delims) {
|
|
12
12
|
|
13
13
|
String CTokenizer::nextToken()
|
14
14
|
{
|
15
|
-
eatDelimeters();
|
15
|
+
//eatDelimeters();
|
16
16
|
int start = m_position;
|
17
17
|
while (m_position<m_length && m_delims.find(m_str.at(m_position)) == String::npos ) {
|
18
18
|
m_position++;
|
19
19
|
}
|
20
|
-
|
21
|
-
|
20
|
+
|
21
|
+
String strToken = m_str.substr(start,m_position-start);
|
22
|
+
eatDelimeters();
|
23
|
+
return strToken;
|
22
24
|
}
|
23
25
|
|
24
26
|
void CTokenizer::eatDelimeters()
|
25
27
|
{
|
26
|
-
|
27
|
-
|
28
|
+
if ( m_position == m_length )
|
29
|
+
m_position++;
|
30
|
+
else if (m_position<m_length)
|
31
|
+
{
|
32
|
+
char c = m_str.at(m_position);
|
28
33
|
if (m_delims.find(c) != String::npos ) {
|
29
34
|
m_position++;
|
30
35
|
} else {
|
31
36
|
return;
|
32
37
|
}
|
33
|
-
|
34
38
|
}
|
35
39
|
}
|
36
40
|
|
37
41
|
boolean CTokenizer::hasMoreTokens()
|
38
42
|
{
|
39
|
-
eatDelimeters();
|
40
|
-
return (m_position
|
43
|
+
//eatDelimeters();
|
44
|
+
return (m_position <= m_length);
|
41
45
|
}
|
42
46
|
|
43
47
|
}
|
@@ -2,20 +2,17 @@
|
|
2
2
|
#include "sync/SyncThread.h"
|
3
3
|
#include "sync/ClientRegister.h"
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
return new rho::common::CRhoClassFactory;
|
10
|
-
}
|
11
|
-
}
|
5
|
+
static rho::common::CRhoClassFactory g_oRhoClassFactory;
|
6
|
+
rho::common::IRhoClassFactory* rho_get_RhoClassFactory()
|
7
|
+
{
|
8
|
+
return &g_oRhoClassFactory;
|
12
9
|
}
|
13
10
|
|
14
11
|
extern "C" {
|
15
12
|
|
16
13
|
void rho_clientregister_create(const char* szDevicePin)
|
17
14
|
{
|
18
|
-
rho::sync::CClientRegister::Create(
|
15
|
+
rho::sync::CClientRegister::Create(szDevicePin);
|
19
16
|
}
|
20
17
|
|
21
18
|
};
|
@@ -11,8 +11,7 @@
|
|
11
11
|
//1. move classes to files, raname namespace to rho::map
|
12
12
|
//2. image cache: remove only unvisible images
|
13
13
|
//3. see TODO inside
|
14
|
-
//4.
|
15
|
-
//5. move all platform code to appropriate folders
|
14
|
+
//4. move all platform code to appropriate folders
|
16
15
|
|
17
16
|
#ifdef min
|
18
17
|
#undef min
|
@@ -176,8 +175,7 @@ void ESRIMapView::Tile::swap(ESRIMapView::Tile &tile)
|
|
176
175
|
|
177
176
|
IMPLEMENT_LOGCLASS(ESRIMapView::MapFetch,"MapFetch");
|
178
177
|
ESRIMapView::MapFetch::MapFetch(ESRIMapView *view)
|
179
|
-
:CThreadQueue(
|
180
|
-
m_mapview(view), m_net_request(getFactory()->createNetRequest())
|
178
|
+
:CThreadQueue(), m_mapview(view)
|
181
179
|
{
|
182
180
|
CThreadQueue::setLogCategory(getLogCategory());
|
183
181
|
|
@@ -198,7 +196,7 @@ void ESRIMapView::MapFetch::fetchTile(String const &baseUrl, int zoom, uint64 la
|
|
198
196
|
bool ESRIMapView::MapFetch::fetchData(String const &url, void **data, size_t *datasize)
|
199
197
|
{
|
200
198
|
RHO_MAP_TRACE1("fetchData: url=%s", url.c_str());
|
201
|
-
NetResponse
|
199
|
+
NetResponse resp = getNet().doRequest("GET", url, "", 0, 0);
|
202
200
|
if (!resp.isOK())
|
203
201
|
return false;
|
204
202
|
*datasize = resp.getDataSize();
|
@@ -260,7 +258,7 @@ String ESRIMapView::MapFetch::Command::toString()
|
|
260
258
|
|
261
259
|
IMPLEMENT_LOGCLASS(ESRIMapView::CacheUpdate,"CacheUpdate");
|
262
260
|
ESRIMapView::CacheUpdate::CacheUpdate(ESRIMapView *view)
|
263
|
-
:CThreadQueue(
|
261
|
+
:CThreadQueue(), m_mapview(view)
|
264
262
|
{
|
265
263
|
CThreadQueue::setLogCategory(getLogCategory());
|
266
264
|
start(epNormal);
|
@@ -434,7 +432,7 @@ ESRIMapView::ESRIMapView(IDrawingDevice *device)
|
|
434
432
|
m_zoom_enabled(true), m_scroll_enabled(true), m_maptype("roadmap"),
|
435
433
|
m_zoom(MIN_ZOOM), m_latitude(degreesToPixelsY(0, MAX_ZOOM)), m_longitude(degreesToPixelsX(0, MAX_ZOOM)),
|
436
434
|
m_selected_annotation_index(-1),
|
437
|
-
m_pinCallout(0), m_pinCalloutLink(0), m_pin(0)
|
435
|
+
m_pinCallout(0), m_pinCalloutLink(0), m_pin(0), m_esriLogo(0)
|
438
436
|
{
|
439
437
|
String url = RHOCONF().getString("esri_map_url_roadmap");
|
440
438
|
if (url.empty())
|
@@ -669,6 +667,11 @@ void ESRIMapView::setPinImage(IDrawingImage *pin, PIN_INFO pin_info)
|
|
669
667
|
m_pin_info = pin_info;
|
670
668
|
}
|
671
669
|
|
670
|
+
void ESRIMapView::setESRILogoImage(IDrawingImage *esriLogoImg) {
|
671
|
+
m_esriLogo = esriLogoImg;
|
672
|
+
}
|
673
|
+
|
674
|
+
|
672
675
|
void ESRIMapView::setPinCalloutImage(IDrawingImage *pinCallout, PIN_INFO pin_callout_info)
|
673
676
|
{
|
674
677
|
m_pinCallout = pinCallout;
|
@@ -733,6 +736,13 @@ void ESRIMapView::paint(IDrawingContext *context)
|
|
733
736
|
paintCallout(context, m_annotations.elementAt(m_selected_annotation_index));
|
734
737
|
}
|
735
738
|
|
739
|
+
// draw esri logo
|
740
|
+
if (m_esriLogo != 0) {
|
741
|
+
int left = 0;
|
742
|
+
int top = m_height - m_esriLogo->height();
|
743
|
+
context->drawImage(left, top, m_esriLogo);
|
744
|
+
}
|
745
|
+
|
736
746
|
/*
|
737
747
|
TilesCache::list cache;
|
738
748
|
{
|