rhodes 2.0.0.beta8 → 2.0.0.beta9
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/rhodes-setup +25 -16
- data/lib/framework/rho/rho.rb +21 -14
- data/lib/framework/rhom/rhom.rb +2 -1
- data/lib/framework/rhom/rhom_model.rb +2 -2
- data/platform/iphone/Classes/TabbedMainView.m +9 -1
- data/platform/shared/ruby/thread.c +5 -0
- data/platform/shared/ruby/thread_win32.c +1 -1
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +9 -0
- data/platform/shared/sync/SyncEngine.cpp +6 -7
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +12 -6
- data/rhodes.gemspec +3 -2
- metadata +3 -3
data/bin/rhodes-setup
CHANGED
@@ -55,28 +55,37 @@ if ENV['ANDROID_HOME']
|
|
55
55
|
android = ENV['ANDROID_HOME']
|
56
56
|
end
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
File.
|
65
|
-
|
66
|
-
|
67
|
-
|
58
|
+
while true
|
59
|
+
android = prompt_for("Android SDK path", android, false)
|
60
|
+
|
61
|
+
android = android.gsub(/\\/,"/")
|
62
|
+
apilevel = -1
|
63
|
+
android_platform_dir = "/platforms/android-1.5"
|
64
|
+
Dir.glob(File.join(android, 'platforms', '*')).each do |dir|
|
65
|
+
props = File.join(dir, 'source.properties')
|
66
|
+
next unless File.file? props
|
67
|
+
File.open(props, 'r') do |f|
|
68
|
+
while line = f.gets
|
69
|
+
next if line !~ /^\s*AndroidVersion\.ApiLevel\s*=\s*([0-9]+)\s*$/
|
70
|
+
apilevel = $1.to_i
|
71
|
+
break
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
if apilevel == 3
|
76
|
+
android_platform_dir = dir[android.length..-1]
|
68
77
|
break
|
69
78
|
end
|
70
79
|
end
|
80
|
+
android = "" if apilevel == -1
|
71
81
|
|
72
|
-
|
73
|
-
|
74
|
-
|
82
|
+
unless File.directory? File.join(android, android_platform_dir)
|
83
|
+
puts "Invalid Android SDK path"
|
84
|
+
next
|
75
85
|
end
|
76
|
-
end
|
77
|
-
android = "" if apilevel == -1
|
78
86
|
|
79
|
-
|
87
|
+
break
|
88
|
+
end
|
80
89
|
|
81
90
|
# try to detect android ndk
|
82
91
|
ndks = Dir.glob(File.dirname(android) + "/android-ndk-*").sort
|
data/lib/framework/rho/rho.rb
CHANGED
@@ -183,9 +183,11 @@ module Rho
|
|
183
183
|
|
184
184
|
hashSrcs = Rhom::RhomSource::find_all_ashash
|
185
185
|
puts "hashSrcs : #{hashSrcs}"
|
186
|
-
arSrc.each do |src|
|
187
|
-
oldSrc = hashSrcs[
|
186
|
+
arSrc.each do |name, src|
|
187
|
+
oldSrc = hashSrcs[name]
|
188
188
|
puts "oldSrc: #{oldSrc}"
|
189
|
+
#update schema_version
|
190
|
+
src['schema_version'] = src['schema']['version'] if src['schema'] && src['schema']['version']
|
189
191
|
if oldSrc
|
190
192
|
oldVer = oldSrc.schema_version
|
191
193
|
newVer = src['schema_version']
|
@@ -194,14 +196,14 @@ module Rho
|
|
194
196
|
end
|
195
197
|
end
|
196
198
|
|
197
|
-
Rho::RhoConfig::add_source(
|
199
|
+
Rho::RhoConfig::add_source(name, src)
|
198
200
|
end
|
199
201
|
|
200
202
|
init_sources()
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
203
|
+
rescue Exception => e
|
204
|
+
puts "Error load_server_sources: #{e}"
|
205
|
+
puts "Trace: #{e.backtrace}"
|
206
|
+
end
|
205
207
|
|
206
208
|
end
|
207
209
|
|
@@ -282,6 +284,10 @@ module Rho
|
|
282
284
|
|
283
285
|
index_param.each do |index_name, index_cols|
|
284
286
|
strCols = ""
|
287
|
+
if index_cols.is_a?(String)
|
288
|
+
index_cols = index_cols.split(',')
|
289
|
+
end
|
290
|
+
|
285
291
|
index_cols.each do |col|
|
286
292
|
strCols += ',' if strCols.length() > 0
|
287
293
|
strCols += "\"#{col}\""
|
@@ -350,14 +356,15 @@ module Rho
|
|
350
356
|
|
351
357
|
if source['schema'] && source['schema']['property']
|
352
358
|
str = ""
|
353
|
-
source['schema']['property'].each do |name,
|
354
|
-
if
|
355
|
-
|
356
|
-
|
357
|
-
|
358
|
-
|
359
|
+
source['schema']['property'].each do |name, ar_type|
|
360
|
+
if ar_type && ar_type.is_a?(String)
|
361
|
+
ar_type = ar_type.split(',')
|
362
|
+
end
|
363
|
+
|
364
|
+
if ar_type && ar_type[0].to_s == 'blob'
|
359
365
|
str += ',' if str.length()>0
|
360
|
-
str += name.to_s() + ',
|
366
|
+
str += name.to_s() + ','
|
367
|
+
str += (ar_type[1].to_s() == 'overwrite' ? '1' : '0')
|
361
368
|
end
|
362
369
|
end
|
363
370
|
|
data/lib/framework/rhom/rhom.rb
CHANGED
@@ -22,14 +22,14 @@ module Rhom
|
|
22
22
|
false
|
23
23
|
end
|
24
24
|
|
25
|
-
def property(name,type=:string)
|
25
|
+
def property(name,type=:string,option=nil)
|
26
26
|
fixed_schema?()
|
27
27
|
|
28
28
|
BaseModel.model_params ||= {}
|
29
29
|
|
30
30
|
BaseModel.model_params['schema'] ||= {}
|
31
31
|
BaseModel.model_params['schema']['property'] ||= {}
|
32
|
-
BaseModel.model_params['schema']['property'][name.to_s] = type
|
32
|
+
BaseModel.model_params['schema']['property'][name.to_s] = [type,option]
|
33
33
|
|
34
34
|
|
35
35
|
end
|
@@ -77,6 +77,8 @@
|
|
77
77
|
NSMutableArray *views = [NSMutableArray arrayWithCapacity:count];
|
78
78
|
NSMutableArray *tabs = [[NSMutableArray alloc] initWithCapacity:count];
|
79
79
|
|
80
|
+
NSString *initUrl = nil;
|
81
|
+
|
80
82
|
for (int i = 0; i < count; ++i) {
|
81
83
|
int index = i*4 - 1;
|
82
84
|
NSString *label = [items objectAtIndex:++index];
|
@@ -84,6 +86,9 @@
|
|
84
86
|
NSString *icon = [items objectAtIndex:++index];
|
85
87
|
NSString *reload = [items objectAtIndex:++index];
|
86
88
|
|
89
|
+
if (!initUrl)
|
90
|
+
initUrl = url;
|
91
|
+
|
87
92
|
if (label && url && icon) {
|
88
93
|
RhoTabBarData *td = [[RhoTabBarData alloc] init];
|
89
94
|
td.url = url;
|
@@ -93,7 +98,7 @@
|
|
93
98
|
subController.title = label;
|
94
99
|
NSString *imagePath = [[AppManager getApplicationsRootPath] stringByAppendingPathComponent:icon];
|
95
100
|
subController.tabBarItem.image = [UIImage imageWithContentsOfFile:imagePath];
|
96
|
-
[subController navigateRedirect:url tab:0];
|
101
|
+
//[subController navigateRedirect:url tab:0];
|
97
102
|
|
98
103
|
[tabs addObject:td];
|
99
104
|
[views addObject:subController];
|
@@ -109,6 +114,9 @@
|
|
109
114
|
self.tabbarData = tabs;
|
110
115
|
[tabs release];
|
111
116
|
|
117
|
+
if (initUrl)
|
118
|
+
[self navigateRedirect:initUrl tab:0];
|
119
|
+
|
112
120
|
return self;
|
113
121
|
}
|
114
122
|
|
@@ -324,6 +324,11 @@ rb_thread_terminate_all(void)
|
|
324
324
|
thread_debug("rb_thread_terminate_all (main thread: %p)\n", (void *)th);
|
325
325
|
st_foreach(vm->living_threads, terminate_i, (st_data_t)th);
|
326
326
|
|
327
|
+
#if USE_NATIVE_THREAD_PRIORITY
|
328
|
+
th->priority -= 2;
|
329
|
+
native_thread_apply_priority(th);
|
330
|
+
#endif
|
331
|
+
|
327
332
|
while (!rb_thread_alone()) {
|
328
333
|
PUSH_TAG();
|
329
334
|
if (EXEC_TAG() == 0) {
|
@@ -17,7 +17,7 @@
|
|
17
17
|
#define WIN32_WAIT_TIMEOUT 10 /* 10 ms */
|
18
18
|
#undef Sleep
|
19
19
|
|
20
|
-
#define native_thread_yield() Sleep(
|
20
|
+
#define native_thread_yield() Sleep(10)
|
21
21
|
#define remove_signal_thread_list(th)
|
22
22
|
|
23
23
|
static volatile DWORD ruby_native_thread_key = TLS_OUT_OF_INDEXES;
|
@@ -723,6 +723,15 @@ public class SyncEngine implements NetRequest.IRhoSession
|
|
723
723
|
void login(String name, String password, String callback)
|
724
724
|
{
|
725
725
|
try {
|
726
|
+
/*
|
727
|
+
processServerSources("{\"sources\":{ \"ProductEx\":{ "+
|
728
|
+
"\"sync_type\":\"incremental\", \"partition\":\"application\", \"source_id\":\"7\","+
|
729
|
+
" \"sync_priority\":\"0\", \"model_type\":\"fixed_schema\", "+
|
730
|
+
" \"schema\":{\"version\":\"1.1\", \"property\":{\"brand\":\"string\", \"price\":\"string\", \"quantity\":\"string\", \"name\":\"string\", "+
|
731
|
+
" \"image_url\":\"blob\", \"image_url_ex\":\"blob,overwrite\"}, "+
|
732
|
+
" \"index\":[{\"by_brand_price1\":\"brand,price\"}, {\"by_quantity1\":\"quantity\"}], \"unique_index\":[{\"by_name1\":\"name\"}]}, "+
|
733
|
+
" \"belongs_to\":{\"brand\":\"Customer\"}}}}");//, \"schema_version\":\"1.0\"
|
734
|
+
*/
|
726
735
|
NetResponse resp = null;
|
727
736
|
|
728
737
|
try{
|
@@ -364,7 +364,7 @@ void CSyncEngine::processServerSources(String strSources)
|
|
364
364
|
/*NetResponse(resp,getNet().pushData( getNet().resolveUrl("/system/loadserversources"), strSources, null ));
|
365
365
|
loadAllSources();
|
366
366
|
|
367
|
-
rho_db_init_attr_manager()
|
367
|
+
rho_db_init_attr_manager();*/
|
368
368
|
}
|
369
369
|
}
|
370
370
|
|
@@ -626,14 +626,13 @@ void CSyncEngine::login(String name, String password, String callback)
|
|
626
626
|
{
|
627
627
|
/*
|
628
628
|
processServerSources(
|
629
|
-
"{\"sources\":
|
629
|
+
"{\"sources\":{ \"ProductEx\":{ "
|
630
630
|
"\"sync_type\":\"incremental\", \"partition\":\"application\", \"source_id\":\"7\","
|
631
631
|
" \"sync_priority\":\"0\", \"model_type\":\"fixed_schema\", "
|
632
|
-
" \"schema\":{\"property\":{\"brand\":\"string\", \"price\":\"string\", \"quantity\":\"string\", \"name\":\"string\", "
|
633
|
-
" \"image_url\":\"blob\", \"image_url_ex\"
|
634
|
-
" \"index\":[{\"by_brand_price1\"
|
635
|
-
" \"belongs_to\":{\"brand\":\"Customer\"}
|
636
|
-
" \"schema_version\":\"1.0\"}]}");
|
632
|
+
" \"schema\":{\"version\":\"1.1\", \"property\":{\"brand\":\"string\", \"price\":\"string\", \"quantity\":\"string\", \"name\":\"string\", "
|
633
|
+
" \"image_url\":\"blob\", \"image_url_ex\":\"blob,overwrite\"}, "
|
634
|
+
" \"index\":[{\"by_brand_price1\":\"brand,price\"}, {\"by_quantity1\":\"quantity\"}], \"unique_index\":[{\"by_name1\":\"name\"}]}, "
|
635
|
+
" \"belongs_to\":{\"brand\":\"Customer\"}}}}");//, \"schema_version\":\"1.0\"
|
637
636
|
*/
|
638
637
|
PROF_START("Login");
|
639
638
|
//try {
|
@@ -191,7 +191,7 @@ CNetResponseImpl* CNetRequestImpl::sendString(const String& strBody)
|
|
191
191
|
|
192
192
|
if ( !HttpSendRequest( m_hRequest, NULL, 0, const_cast<char*>(strBody.c_str()), strBody.length() ) )
|
193
193
|
{
|
194
|
-
if (checkSslCertError())
|
194
|
+
if (!m_bCancel && checkSslCertError())
|
195
195
|
{
|
196
196
|
if ( !HttpSendRequest( m_hRequest, NULL, 0, const_cast<char*>(strBody.c_str()), strBody.length() ) )
|
197
197
|
{
|
@@ -319,6 +319,9 @@ void CNetRequestImpl::readResponse(CNetResponseImpl* pNetResp)
|
|
319
319
|
wchar_t szHttpRes[10];
|
320
320
|
DWORD nIndex = 0;
|
321
321
|
|
322
|
+
if ( m_bCancel )
|
323
|
+
return;
|
324
|
+
|
322
325
|
if( !HttpQueryInfo( m_hRequest, HTTP_QUERY_STATUS_CODE, szHttpRes, &dwLen, &nIndex) )
|
323
326
|
{
|
324
327
|
m_pszErrFunction = L"HttpQueryInfo";
|
@@ -379,7 +382,7 @@ CNetResponseImpl* CNetRequestImpl::downloadFile(common::CRhoFile& oFile)
|
|
379
382
|
|
380
383
|
if ( !HttpSendRequest( m_hRequest, NULL, 0, NULL, 0 ) )
|
381
384
|
{
|
382
|
-
if (checkSslCertError())
|
385
|
+
if (!m_bCancel && checkSslCertError())
|
383
386
|
{
|
384
387
|
if ( !HttpSendRequest( m_hRequest, NULL, 0, NULL, 0 ) )
|
385
388
|
{
|
@@ -617,9 +620,9 @@ void CNetRequestImpl::cancel()
|
|
617
620
|
|
618
621
|
if ( m_hRequest )
|
619
622
|
InternetCloseHandle(m_hRequest);
|
620
|
-
|
621
|
-
InternetCloseHandle(
|
622
|
-
if ( hInet )
|
623
|
+
if ( m_hConnection )
|
624
|
+
InternetCloseHandle(m_hConnection);
|
625
|
+
/* if ( hInet )
|
623
626
|
InternetCloseHandle(hInet); */
|
624
627
|
/*
|
625
628
|
hRequest = 0;
|
@@ -657,6 +660,9 @@ CNetRequestImpl::~CNetRequestImpl()
|
|
657
660
|
void CNetRequestImpl::readInetFile( HINTERNET hRequest, CNetResponseImpl* pNetResp, common::CRhoFile* pFile /*=NULL*/,
|
658
661
|
char* pBuf, DWORD dwBufSize )
|
659
662
|
{
|
663
|
+
if (m_bCancel)
|
664
|
+
return;
|
665
|
+
|
660
666
|
//if ( pNetResp->getRespCode() == 500 || pNetResp->getRespCode() == 422 )
|
661
667
|
// return;
|
662
668
|
char* pBufToFree = 0;
|
@@ -694,7 +700,7 @@ void CNetRequestImpl::readInetFile( HINTERNET hRequest, CNetResponseImpl* pNetRe
|
|
694
700
|
|
695
701
|
pNetResp->setValid(true);
|
696
702
|
|
697
|
-
}while(bRead && dwBytesRead > 0);
|
703
|
+
}while(bRead && dwBytesRead > 0 && !m_bCancel );
|
698
704
|
|
699
705
|
if ( !pNetResp->isOK() )
|
700
706
|
LOG(TRACE) + "Server response: " + pNetResp->getCharData();
|
data/rhodes.gemspec
CHANGED
@@ -3,7 +3,7 @@ require "lib/rhodes.rb"
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |s|
|
5
5
|
s.name = %q{rhodes}
|
6
|
-
s.version = '2.0.0.
|
6
|
+
s.version = '2.0.0.beta9'
|
7
7
|
|
8
8
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
9
|
s.authors = ["Rhomobile"]
|
@@ -14,7 +14,8 @@ Gem::Specification.new do |s|
|
|
14
14
|
files = Array.new
|
15
15
|
IO.read("Manifest.txt").each_line {|x| files << x.chomp}
|
16
16
|
s.files = files
|
17
|
-
|
17
|
+
# disable rdoc until we fix the docs
|
18
|
+
s.has_rdoc = false
|
18
19
|
s.homepage = %q{http://www.rhomobile.com}
|
19
20
|
s.rdoc_options = ["--inline-source", "--charset=UTF-8"]
|
20
21
|
s.require_paths = ["lib"]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rhodes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash: -
|
4
|
+
hash: -1848230043
|
5
5
|
prerelease: true
|
6
6
|
segments:
|
7
7
|
- 2
|
8
8
|
- 0
|
9
9
|
- 0
|
10
|
-
-
|
11
|
-
version: 2.0.0.
|
10
|
+
- beta9
|
11
|
+
version: 2.0.0.beta9
|
12
12
|
platform: ruby
|
13
13
|
authors:
|
14
14
|
- Rhomobile
|