rhodes 2.0.0.beta7 → 2.0.0.beta8
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 +20 -1
- data/bin/rhodes-setup +6 -2
- data/lib/extensions/digest/ext/Rakefile +2 -2
- data/lib/framework/rho/render.rb +2 -0
- data/lib/framework/rho/rho.rb +159 -95
- data/lib/framework/rho/rhoapplication.rb +24 -5
- data/lib/framework/rhodes.rb +1 -1
- data/lib/framework/rhom/rhom_model.rb +32 -23
- data/lib/framework/rhom/rhom_object_factory.rb +2 -2
- data/lib/rhodes.rb +1 -1
- data/platform/android/Rhodes/jni/src/callbacks.cpp +8 -1
- data/platform/android/Rhodes/jni/src/mapview.cpp +4 -1
- data/platform/android/Rhodes/jni/src/sslimpl.cpp +5 -1
- data/platform/android/Rhodes/jni/src/webview.cpp +3 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java +3 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeLibraries.java +2 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NavBar.java +1 -2
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +1 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocation.java +3 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/geolocation/GeoLocationImpl.java +0 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/MainView.java +4 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/SimpleMainView.java +24 -6
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mainview/TabbedMainView.java +7 -2
- data/platform/android/build/android.rake +11 -38
- data/platform/android/build/androidcommon.rb +50 -2
- data/platform/android/build/librhocommon_build.files +1 -0
- data/platform/android/build/libsqlite_build.files +1 -0
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +2 -1
- data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +1 -5
- data/platform/bb/rhodes/src/com/rho/net/NetworkAccess.java +3 -6
- data/platform/bb/rhodes/src/com/rho/rubyext/System.java +4 -2
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +12 -35
- data/platform/bb/rhodes/src/rhomobile/Utilities.java +2 -1
- data/platform/iphone/Classes/DateTimePickerDelegate.m +4 -4
- data/platform/iphone/Classes/NativeBar.m +12 -6
- data/platform/iphone/Classes/NavBar.m +1 -1
- data/platform/iphone/Classes/RhoMainView.h +4 -1
- data/platform/iphone/Classes/Rhodes.h +6 -2
- data/platform/iphone/Classes/Rhodes.m +23 -3
- data/platform/iphone/Classes/SimpleMainView.h +3 -7
- data/platform/iphone/Classes/SimpleMainView.m +108 -54
- data/platform/iphone/Classes/TabbedMainView.h +3 -2
- data/platform/iphone/Classes/TabbedMainView.m +21 -10
- data/platform/iphone/RhoLib/RhoLib.xcodeproj/project.pbxproj +8 -0
- data/platform/shared/common/IRhoClassFactory.h +1 -0
- data/platform/shared/common/RhodesApp.cpp +7 -2
- data/platform/shared/common/ThreadQueue.cpp +110 -0
- data/platform/shared/common/ThreadQueue.h +75 -0
- data/platform/shared/logging/RhoLogCat.h +4 -0
- data/platform/shared/net/AsyncHttp.cpp +134 -135
- data/platform/shared/net/AsyncHttp.h +74 -33
- data/platform/shared/net/HttpServer.cpp +7 -1
- data/platform/shared/ruby/thread.c +4 -0
- data/platform/shared/ruby/thread_win32.c +9 -8
- data/platform/shared/rubyJVM/src/com/rho/RhodesApp.java +26 -5
- data/platform/shared/rubyJVM/src/com/rho/net/INetworkAccess.java +0 -2
- data/platform/shared/rubyJVM/src/com/rho/net/NetRequest.java +4 -13
- data/platform/shared/rubyJVM/src/com/rho/net/URI.java +2 -2
- data/platform/shared/rubyJVM/src/com/rho/sync/SyncEngine.java +3 -3
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/ObjectFactory.java +12 -2
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyString.java +6 -3
- data/platform/shared/rubyJVM/src/javolution/util/FastTable.java +12 -2
- data/platform/shared/sync/SyncEngine.cpp +15 -3
- data/platform/shared/sync/SyncEngine.h +1 -1
- data/platform/shared/sync/SyncThread.cpp +18 -101
- data/platform/shared/sync/SyncThread.h +30 -22
- data/platform/wm/RhoLib/RhoLib.vcproj +8 -0
- data/platform/wm/rhodes/Rhodes.cpp +143 -1
- data/platform/wm/rhodes/memory_helper.cpp +273 -0
- data/platform/wm/rhodes/rho/common/RhoThreadImpl.cpp +1 -0
- data/platform/wm/rhodes/rho/net/NetRequestImpl.cpp +46 -3
- data/platform/wm/rhodes/rho/rubyext/WebView.cpp +29 -1
- data/res/build-tools/db/syncdb.schema +1 -0
- data/res/generators/rhogen.rb +1 -1
- data/rhodes.gemspec +2 -2
- metadata +23 -6
- data/Manifest.txt +0 -5289
- data/rhobuild.yml +0 -37
|
@@ -34,19 +34,38 @@ module Rho
|
|
|
34
34
|
NativeBar.create(TOOLBAR_TYPE, @@toolbar)
|
|
35
35
|
else
|
|
36
36
|
NativeBar.create(NOBAR_TYPE, [])
|
|
37
|
-
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
uniq_sources = Rho::RhoConfig::sources.values
|
|
40
|
+
uniq_sources.each do |source|
|
|
41
|
+
next unless source['migrate_version']
|
|
42
|
+
|
|
43
|
+
db = ::Rho::RHO.get_src_db(source['name'])
|
|
44
|
+
|
|
45
|
+
if !on_migrate_source(source['migrate_version'], source)
|
|
46
|
+
db.execute_batch_sql(source['schema']['sql'])
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
db.update_into_table('sources', {"schema_version"=>source['schema_version']},{"name"=>source['name']})
|
|
50
|
+
end
|
|
51
|
+
|
|
38
52
|
end
|
|
39
53
|
|
|
40
54
|
def on_activate_app
|
|
41
55
|
end
|
|
42
56
|
|
|
43
|
-
# works for schema sources
|
|
57
|
+
# works for schema sources
|
|
58
|
+
#return true to run script creating table
|
|
44
59
|
def on_migrate_source(old_version, new_src)
|
|
45
60
|
puts "on_migrate_source; old_version :#{old_version}; new_src : #{new_src}"
|
|
46
|
-
|
|
47
|
-
|
|
61
|
+
if new_src['model_type'] == 'fixed_schema'
|
|
62
|
+
db = ::Rho::RHO.get_src_db(new_src['name'])
|
|
48
63
|
db.delete_table(new_src['name'])
|
|
49
|
-
|
|
64
|
+
|
|
65
|
+
return false #create new table
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
return true
|
|
50
69
|
end
|
|
51
70
|
|
|
52
71
|
def set_menu(menu=nil,back_action=nil)
|
data/lib/framework/rhodes.rb
CHANGED
|
@@ -16,30 +16,36 @@ module Rhom
|
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
def fixed_schema?
|
|
19
|
+
BaseModel.model_params ||= {}
|
|
20
|
+
BaseModel.model_params["model_type"] = "property_bag" unless BaseModel.model_params["model_type"]
|
|
21
|
+
|
|
19
22
|
false
|
|
20
23
|
end
|
|
21
24
|
|
|
22
25
|
def property(name,type=:string)
|
|
26
|
+
fixed_schema?()
|
|
27
|
+
|
|
23
28
|
BaseModel.model_params ||= {}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
if fixed_schema?
|
|
31
|
-
BaseModel.model_params['schema'] ||= {}
|
|
32
|
-
BaseModel.model_params['schema']['columns'] ||= []
|
|
33
|
-
|
|
34
|
-
BaseModel.model_params['schema']['columns'] << name.to_s
|
|
35
|
-
#TODO: type support
|
|
36
|
-
end
|
|
37
|
-
|
|
29
|
+
|
|
30
|
+
BaseModel.model_params['schema'] ||= {}
|
|
31
|
+
BaseModel.model_params['schema']['property'] ||= {}
|
|
32
|
+
BaseModel.model_params['schema']['property'][name.to_s] = type
|
|
33
|
+
|
|
34
|
+
|
|
38
35
|
end
|
|
39
36
|
|
|
40
37
|
def set(name,value)
|
|
41
38
|
BaseModel.model_params ||= {}
|
|
42
|
-
|
|
39
|
+
|
|
40
|
+
if ( name == :sync )
|
|
41
|
+
if ( value )
|
|
42
|
+
BaseModel.model_params['sync_type'] = 'incremental' unless BaseModel.model_params['sync_type']
|
|
43
|
+
else
|
|
44
|
+
BaseModel.model_params.delete('sync_type')
|
|
45
|
+
end
|
|
46
|
+
else
|
|
47
|
+
BaseModel.model_params[name.to_s] = value
|
|
48
|
+
end
|
|
43
49
|
end
|
|
44
50
|
|
|
45
51
|
def enable(name)
|
|
@@ -48,27 +54,27 @@ module Rhom
|
|
|
48
54
|
|
|
49
55
|
def belongs_to(name, owner)
|
|
50
56
|
BaseModel.model_params ||= {}
|
|
51
|
-
BaseModel.model_params['
|
|
57
|
+
BaseModel.model_params['belongs_to'] ||= {}
|
|
52
58
|
|
|
53
|
-
BaseModel.model_params['
|
|
59
|
+
BaseModel.model_params['belongs_to'][name.to_s] = owner.to_s
|
|
54
60
|
end
|
|
55
61
|
|
|
56
|
-
def index(
|
|
62
|
+
def index(name,cols)
|
|
57
63
|
return unless fixed_schema?
|
|
58
64
|
|
|
59
65
|
BaseModel.model_params['schema'] ||= {}
|
|
60
|
-
BaseModel.model_params['schema']['
|
|
66
|
+
BaseModel.model_params['schema']['index'] ||= []
|
|
61
67
|
|
|
62
|
-
BaseModel.model_params['schema']['
|
|
68
|
+
BaseModel.model_params['schema']['index'] << {name.to_s=>cols}
|
|
63
69
|
end
|
|
64
70
|
|
|
65
|
-
def unique_index(
|
|
71
|
+
def unique_index(name,cols)
|
|
66
72
|
return unless fixed_schema?
|
|
67
73
|
|
|
68
74
|
BaseModel.model_params['schema'] ||= {}
|
|
69
|
-
BaseModel.model_params['schema']['
|
|
75
|
+
BaseModel.model_params['schema']['unique_index'] ||= []
|
|
70
76
|
|
|
71
|
-
BaseModel.model_params['schema']['
|
|
77
|
+
BaseModel.model_params['schema']['unique_index'] << {name.to_s=>cols}
|
|
72
78
|
end
|
|
73
79
|
|
|
74
80
|
end
|
|
@@ -81,6 +87,9 @@ module Rhom
|
|
|
81
87
|
end
|
|
82
88
|
|
|
83
89
|
def fixed_schema?
|
|
90
|
+
BaseModel.model_params ||= {}
|
|
91
|
+
BaseModel.model_params["model_type"] = "fixed_schema" unless BaseModel.model_params["model_type"]
|
|
92
|
+
|
|
84
93
|
true
|
|
85
94
|
end
|
|
86
95
|
|
|
@@ -119,7 +119,7 @@ module Rhom
|
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
def is_schema_source
|
|
122
|
-
Rho::RhoConfig.sources[get_source_name]['
|
|
122
|
+
Rho::RhoConfig.sources[get_source_name]['model_type'] == 'fixed_schema'
|
|
123
123
|
end
|
|
124
124
|
def get_schema_table_name
|
|
125
125
|
get_source_name()
|
|
@@ -1059,7 +1059,7 @@ module Rhom
|
|
|
1059
1059
|
end
|
|
1060
1060
|
|
|
1061
1061
|
def is_inst_schema_source
|
|
1062
|
-
Rho::RhoConfig.sources[get_inst_source_name]['
|
|
1062
|
+
Rho::RhoConfig.sources[get_inst_source_name]['model_type'] == 'fixed_schema'
|
|
1063
1063
|
end
|
|
1064
1064
|
def get_inst_schema_table_name
|
|
1065
1065
|
get_inst_source_name()
|
data/lib/rhodes.rb
CHANGED
|
@@ -90,7 +90,9 @@ RHO_GLOBAL int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
|
90
90
|
jmethodID mid = getJNIClassStaticMethod(env, cls, "getProperty", "(Ljava/lang/String;)Ljava/lang/Object;");
|
|
91
91
|
if (!mid) return 0;
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
jstring propNameObj = rho_cast<jstring>(szPropName);
|
|
94
|
+
jobject result = env->CallStaticObjectMethod(cls, mid, propNameObj);
|
|
95
|
+
env->DeleteLocalRef(propNameObj);
|
|
94
96
|
if (!result) return 0;
|
|
95
97
|
|
|
96
98
|
jclass clsBoolean = getJNIClass(RHODES_JAVA_CLASS_BOOLEAN);
|
|
@@ -102,26 +104,31 @@ RHO_GLOBAL int rho_sysimpl_get_property(char* szPropName, VALUE* resValue)
|
|
|
102
104
|
if (env->IsInstanceOf(result, clsBoolean)) {
|
|
103
105
|
jmethodID midValue = getJNIClassMethod(env, clsBoolean, "booleanValue", "()Z");
|
|
104
106
|
*resValue = rho_ruby_create_boolean((int)env->CallBooleanMethod(result, midValue));
|
|
107
|
+
env->DeleteLocalRef(result);
|
|
105
108
|
return 1;
|
|
106
109
|
}
|
|
107
110
|
else if (env->IsInstanceOf(result, clsInteger)) {
|
|
108
111
|
jmethodID midValue = getJNIClassMethod(env, clsInteger, "intValue", "()I");
|
|
109
112
|
*resValue = rho_ruby_create_integer((int)env->CallIntMethod(result, midValue));
|
|
113
|
+
env->DeleteLocalRef(result);
|
|
110
114
|
return 1;
|
|
111
115
|
}
|
|
112
116
|
else if (env->IsInstanceOf(result, clsFloat)) {
|
|
113
117
|
jmethodID midValue = getJNIClassMethod(env, clsFloat, "floatValue", "()F");
|
|
114
118
|
*resValue = rho_ruby_create_double((double)env->CallFloatMethod(result, midValue));
|
|
119
|
+
env->DeleteLocalRef(result);
|
|
115
120
|
return 1;
|
|
116
121
|
}
|
|
117
122
|
else if (env->IsInstanceOf(result, clsDouble)) {
|
|
118
123
|
jmethodID midValue = getJNIClassMethod(env, clsDouble, "doubleValue", "()D");
|
|
119
124
|
*resValue = rho_ruby_create_double((double)env->CallDoubleMethod(result, midValue));
|
|
125
|
+
env->DeleteLocalRef(result);
|
|
120
126
|
return 1;
|
|
121
127
|
}
|
|
122
128
|
else if (env->IsInstanceOf(result, clsString)) {
|
|
123
129
|
jstring resStrObj = (jstring)result;
|
|
124
130
|
*resValue = rho_ruby_create_string(rho_cast<std::string>(resStrObj).c_str());
|
|
131
|
+
env->DeleteLocalRef(result);
|
|
125
132
|
return 1;
|
|
126
133
|
}
|
|
127
134
|
|
|
@@ -20,7 +20,10 @@ RHO_GLOBAL void mapview_create(rho_param *p)
|
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
jobject paramsObj = RhoValueConverter(env).createObject(p);
|
|
23
|
-
|
|
23
|
+
jstring keyObj = rho_cast<jstring>(RHO_GOOGLE_API_KEY);
|
|
24
|
+
env->CallStaticVoidMethod(clsMapView, midCreate, keyObj, paramsObj);
|
|
25
|
+
env->DeleteLocalRef(keyObj);
|
|
26
|
+
env->DeleteLocalRef(paramsObj);
|
|
24
27
|
#else
|
|
25
28
|
RAWLOG_ERROR("MapView disabled at build time");
|
|
26
29
|
#endif
|
|
@@ -46,7 +46,9 @@ RHO_GLOBAL jobject JNICALL Java_com_rhomobile_rhodes_socket_SSLImpl_getRemoteSoc
|
|
|
46
46
|
arr[0] = (jbyte)(addr & 0xFF);
|
|
47
47
|
env->ReleaseByteArrayElements(array, arr, 0);
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
jstring ipaddrObj = rho_cast<jstring>(::inet_ntoa(sa.sin_addr));
|
|
50
|
+
jobject inetaddrObj = env->NewObject(clsInetAddr, midInetAddr, array, ipaddrObj);
|
|
51
|
+
env->DeleteLocalRef(ipaddrObj);
|
|
50
52
|
if (!inetaddrObj) return NULL;
|
|
51
53
|
|
|
52
54
|
jobject sockaddrObj = env->NewObject(clsSockAddr, midSockAddr);
|
|
@@ -55,6 +57,8 @@ RHO_GLOBAL jobject JNICALL Java_com_rhomobile_rhodes_socket_SSLImpl_getRemoteSoc
|
|
|
55
57
|
env->SetObjectField(sockaddrObj, fidInetAddr, inetaddrObj);
|
|
56
58
|
env->SetIntField(sockaddrObj, fidPort, ntohs(sa.sin_port));
|
|
57
59
|
|
|
60
|
+
env->DeleteLocalRef(inetaddrObj);
|
|
61
|
+
|
|
58
62
|
return sockaddrObj;
|
|
59
63
|
}
|
|
60
64
|
|
|
@@ -69,7 +69,7 @@ RHO_GLOBAL const char* rho_webview_execute_js(const char* js, int index)
|
|
|
69
69
|
if (!mid) return NULL;
|
|
70
70
|
|
|
71
71
|
jstring objJs = rho_cast<jstring>(env, js);
|
|
72
|
-
env->
|
|
72
|
+
env->CallStaticVoidMethod(cls, mid, objJs, index);
|
|
73
73
|
env->DeleteLocalRef(objJs);
|
|
74
74
|
return "";
|
|
75
75
|
}
|
|
@@ -90,4 +90,6 @@ RHO_GLOBAL void rho_webview_set_cookie(const char *url, const char *cookie)
|
|
|
90
90
|
jstring urlObj = rho_cast<jstring>(url);
|
|
91
91
|
jstring cookieObj = rho_cast<jstring>(cookie);
|
|
92
92
|
env->CallStaticVoidMethod(cls, mid, urlObj, cookieObj);
|
|
93
|
+
env->DeleteLocalRef(urlObj);
|
|
94
|
+
env->DeleteLocalRef(cookieObj);
|
|
93
95
|
}
|
|
@@ -47,14 +47,15 @@ public class NativeBar {
|
|
|
47
47
|
public void run() {
|
|
48
48
|
try {
|
|
49
49
|
Rhodes r = RhodesInstance.getInstance();
|
|
50
|
+
MainView mainView = r.getMainView();
|
|
50
51
|
MainView v = null;
|
|
51
52
|
|
|
52
53
|
switch (type) {
|
|
53
54
|
case NOBAR_TYPE:
|
|
54
|
-
v = new SimpleMainView();
|
|
55
|
+
v = new SimpleMainView(mainView);
|
|
55
56
|
break;
|
|
56
57
|
case TOOLBAR_TYPE:
|
|
57
|
-
v = new SimpleMainView(params);
|
|
58
|
+
v = new SimpleMainView(mainView, params);
|
|
58
59
|
break;
|
|
59
60
|
case TABBAR_TYPE:
|
|
60
61
|
v = new TabbedMainView(params);
|
|
@@ -3,9 +3,9 @@ package com.rhomobile.rhodes;
|
|
|
3
3
|
public class NativeLibraries {
|
|
4
4
|
|
|
5
5
|
public static void load() {
|
|
6
|
-
// Load native implementation of rhodes
|
|
7
|
-
System.loadLibrary("rhodes");
|
|
8
6
|
// Load native .so libraries
|
|
7
|
+
// Load native implementation of rhodes
|
|
8
|
+
System.loadLibrary("rhodes");
|
|
9
9
|
}
|
|
10
10
|
|
|
11
11
|
}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
package com.rhomobile.rhodes;
|
|
2
2
|
|
|
3
3
|
import java.util.Map;
|
|
4
|
-
import java.util.Vector;
|
|
5
4
|
|
|
6
5
|
public class NavBar {
|
|
7
6
|
|
|
@@ -33,7 +32,7 @@ public class NavBar {
|
|
|
33
32
|
|
|
34
33
|
public void run() {
|
|
35
34
|
Rhodes r = RhodesInstance.getInstance();
|
|
36
|
-
r.getMainView().
|
|
35
|
+
r.getMainView().addNavBar(title, left, right);
|
|
37
36
|
}
|
|
38
37
|
};
|
|
39
38
|
|
|
@@ -199,7 +199,7 @@ public class Rhodes extends Activity {
|
|
|
199
199
|
*/
|
|
200
200
|
|
|
201
201
|
private void copyFromBundle(String file) throws IOException {
|
|
202
|
-
File target = new File(
|
|
202
|
+
File target = new File(getRootPath(), file);
|
|
203
203
|
if (target.exists())
|
|
204
204
|
return;
|
|
205
205
|
FileSource as = new AssetsSource(getResources().getAssets());
|
|
@@ -23,11 +23,14 @@ package com.rhomobile.rhodes.mainview;
|
|
|
23
23
|
import java.util.Map;
|
|
24
24
|
|
|
25
25
|
import android.view.View;
|
|
26
|
+
import android.webkit.WebView;
|
|
26
27
|
|
|
27
28
|
public interface MainView {
|
|
28
29
|
|
|
29
30
|
public View getView();
|
|
30
31
|
|
|
32
|
+
public WebView detachWebView();
|
|
33
|
+
|
|
31
34
|
public void back(int index);
|
|
32
35
|
public void forward(int index);
|
|
33
36
|
|
|
@@ -44,6 +47,6 @@ public interface MainView {
|
|
|
44
47
|
|
|
45
48
|
public void loadData(String data, int index);
|
|
46
49
|
|
|
47
|
-
public void
|
|
50
|
+
public void addNavBar(String title, Map<Object,Object> left, Map<Object,Object> right);
|
|
48
51
|
public void removeNavBar();
|
|
49
52
|
}
|
|
@@ -115,6 +115,16 @@ public class SimpleMainView implements MainView {
|
|
|
115
115
|
return view;
|
|
116
116
|
}
|
|
117
117
|
|
|
118
|
+
public WebView detachWebView() {
|
|
119
|
+
WebView v = null;
|
|
120
|
+
if (webView != null) {
|
|
121
|
+
view.removeView(webView);
|
|
122
|
+
v = webView;
|
|
123
|
+
webView = null;
|
|
124
|
+
}
|
|
125
|
+
return v;
|
|
126
|
+
}
|
|
127
|
+
|
|
118
128
|
private View createButton(Map<Object,Object> hash) {
|
|
119
129
|
Rhodes r = RhodesInstance.getInstance();
|
|
120
130
|
|
|
@@ -200,7 +210,7 @@ public class SimpleMainView implements MainView {
|
|
|
200
210
|
}
|
|
201
211
|
|
|
202
212
|
@SuppressWarnings("unchecked")
|
|
203
|
-
private void init(Vector<Object> params) {
|
|
213
|
+
private void init(MainView v, Vector<Object> params) {
|
|
204
214
|
Rhodes r = RhodesInstance.getInstance();
|
|
205
215
|
|
|
206
216
|
view = new LinearLayout(r);
|
|
@@ -209,7 +219,11 @@ public class SimpleMainView implements MainView {
|
|
|
209
219
|
view.setLayoutParams(new LinearLayout.LayoutParams(FILL_PARENT, FILL_PARENT));
|
|
210
220
|
view.setId(Rhodes.RHO_MAIN_VIEW);
|
|
211
221
|
|
|
212
|
-
webView =
|
|
222
|
+
webView = null;
|
|
223
|
+
if (v != null)
|
|
224
|
+
webView = v.detachWebView();
|
|
225
|
+
if (webView == null)
|
|
226
|
+
webView = r.createWebView();
|
|
213
227
|
view.addView(webView, new LinearLayout.LayoutParams(FILL_PARENT, 0, 1));
|
|
214
228
|
|
|
215
229
|
LinearLayout bottom = new LinearLayout(r);
|
|
@@ -254,11 +268,15 @@ public class SimpleMainView implements MainView {
|
|
|
254
268
|
}
|
|
255
269
|
|
|
256
270
|
public SimpleMainView() {
|
|
257
|
-
init(null);
|
|
271
|
+
init(null, null);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
public SimpleMainView(MainView v) {
|
|
275
|
+
init(v, null);
|
|
258
276
|
}
|
|
259
277
|
|
|
260
|
-
public SimpleMainView(Vector<Object> params) {
|
|
261
|
-
init(params);
|
|
278
|
+
public SimpleMainView(MainView v, Vector<Object> params) {
|
|
279
|
+
init(v, params);
|
|
262
280
|
}
|
|
263
281
|
|
|
264
282
|
public void back(int index) {
|
|
@@ -297,7 +315,7 @@ public class SimpleMainView implements MainView {
|
|
|
297
315
|
webView.loadData(data, "text/html", "utf-8");
|
|
298
316
|
}
|
|
299
317
|
|
|
300
|
-
public void
|
|
318
|
+
public void addNavBar(String title, Map<Object,Object> left, Map<Object,Object> right) {
|
|
301
319
|
removeNavBar();
|
|
302
320
|
|
|
303
321
|
Rhodes r = RhodesInstance.getInstance();
|
|
@@ -33,6 +33,7 @@ import android.graphics.drawable.BitmapDrawable;
|
|
|
33
33
|
import android.view.Gravity;
|
|
34
34
|
import android.view.View;
|
|
35
35
|
import android.view.ViewGroup.LayoutParams;
|
|
36
|
+
import android.webkit.WebView;
|
|
36
37
|
import android.widget.FrameLayout;
|
|
37
38
|
import android.widget.TabHost;
|
|
38
39
|
import android.widget.TabWidget;
|
|
@@ -183,6 +184,10 @@ public class TabbedMainView implements MainView {
|
|
|
183
184
|
return host;
|
|
184
185
|
}
|
|
185
186
|
|
|
187
|
+
public WebView detachWebView() {
|
|
188
|
+
return getView(activeTab()).detachWebView();
|
|
189
|
+
}
|
|
190
|
+
|
|
186
191
|
public void back(int index) {
|
|
187
192
|
getView(index).back(0);
|
|
188
193
|
}
|
|
@@ -219,8 +224,8 @@ public class TabbedMainView implements MainView {
|
|
|
219
224
|
getView(index).loadData(data, 0);
|
|
220
225
|
}
|
|
221
226
|
|
|
222
|
-
public void
|
|
223
|
-
getView(activeTab()).
|
|
227
|
+
public void addNavBar(String title, Map<Object,Object> left, Map<Object,Object> right) {
|
|
228
|
+
getView(activeTab()).addNavBar(title, left, right);
|
|
224
229
|
}
|
|
225
230
|
|
|
226
231
|
public void removeNavBar() {
|