rhodes 2.0.0.beta1 → 2.0.0.beta2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +5 -0
- data/LICENSE +19 -674
- data/Manifest.txt +21 -4
- data/README.textile +5 -36
- data/Rakefile +5 -0
- data/lib/build/jake.rb +3 -1
- data/lib/extensions/rexml/rexml/document.rb +2 -0
- data/lib/extensions/rexml/rexml/parsers/baseparser.rb +0 -6
- data/lib/extensions/rhoxml/rexml/child.rb +96 -0
- data/lib/extensions/rhoxml/rexml/document.rb +527 -0
- data/lib/extensions/rhoxml/rexml/element.rb +987 -0
- data/lib/extensions/rhoxml/rexml/encoding.rb +71 -0
- data/lib/extensions/rhoxml/rexml/encodings/US-ASCII.rb +30 -0
- data/lib/extensions/rhoxml/rexml/encodings/UTF-16.rb +35 -0
- data/lib/extensions/rhoxml/rexml/encodings/UTF-8.rb +18 -0
- data/lib/extensions/rhoxml/rexml/namespace.rb +47 -0
- data/lib/extensions/rhoxml/rexml/node.rb +76 -0
- data/lib/extensions/rhoxml/rexml/parent.rb +166 -0
- data/lib/extensions/rhoxml/rexml/parseexception.rb +51 -0
- data/lib/extensions/rhoxml/rexml/parsers/baseparser.rb +531 -0
- data/lib/extensions/rhoxml/rexml/parsers/treeparser.rb +100 -0
- data/lib/extensions/rhoxml/rexml/parsers/xpathparser.rb +698 -0
- data/lib/extensions/rhoxml/rexml/set.rb +1274 -0
- data/lib/extensions/rhoxml/rexml/source.rb +258 -0
- data/lib/extensions/rhoxml/rexml/xmltokens.rb +18 -0
- data/lib/extensions/rhoxml/rexml/xpath.rb +77 -0
- data/lib/extensions/rhoxml/rexml/xpath_parser.rb +806 -0
- data/lib/framework/builtinME.rb +2 -0
- data/lib/framework/dateME.rb +5 -1
- data/lib/framework/rho/render.rb +10 -2
- data/lib/framework/rhom/rhom_object_factory.rb +2 -1
- data/lib/framework/singleton.rb +1 -1
- data/platform/android/Rhodes/jni/src/rhodes.cpp +2 -4
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/NativeBar.java +23 -18
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/Rhodes.java +42 -69
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/SplashScreen.java +59 -7
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/camera/Camera.java +1 -1
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/Annotation.java +1 -0
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/mapview/MapView.java +97 -85
- data/platform/android/Rhodes/src/com/rhomobile/rhodes/uri/SmsUriHandler.java +52 -0
- data/platform/android/build/RhodesSRC_build.files +1 -0
- data/platform/android/build/android.rake +38 -14
- data/platform/bb/RubyVM/RubyVM.jdp +1 -0
- data/platform/bb/build/RubyVM_build.files +1 -0
- data/platform/bb/build/bb.rake +44 -2
- data/platform/bb/rhodes/platform/5.0/com/rho/BrowserAdapter5.java +1 -1
- data/platform/bb/rhodes/rhodes.jdp +4 -4
- data/platform/bb/rhodes/src/com/rho/BrowserAdapter.java +8 -4
- data/platform/bb/rhodes/src/com/rho/rubyext/Alert.java +149 -17
- data/platform/bb/rhodes/src/rhomobile/PushListeningThread.java +20 -17
- data/platform/bb/rhodes/src/rhomobile/RhodesApplication.java +54 -28
- data/platform/bb/rhodes/src/rhomobile/mapview/Annotation.java +1 -0
- data/platform/bb/rhodes/src/rhomobile/mapview/GoogleMapField.java +37 -11
- data/platform/bb/rhodes/src/rhomobile/mapview/MapView.java +49 -19
- data/platform/bb/rhodes/src/rhomobile/mapview/MapViewScreen.java +6 -0
- data/platform/iphone/Classes/MapView/GoogleGeocoder.h +6 -7
- data/platform/iphone/Classes/MapView/GoogleGeocoder.m +70 -70
- data/platform/iphone/Classes/MapView/MapAnnotation.h +5 -3
- data/platform/iphone/Classes/MapView/MapAnnotation.m +10 -8
- data/platform/iphone/Classes/MapView/MapViewController.h +13 -10
- data/platform/iphone/Classes/MapView/MapViewController.m +131 -72
- data/platform/iphone/Classes/Rhodes.h +2 -0
- data/platform/iphone/Classes/Rhodes.m +13 -1
- data/platform/iphone/Classes/SimpleMainView.m +0 -1
- data/platform/iphone/Classes/TabbedMainView.m +5 -6
- data/platform/shared/common/RhoTime.h +2 -2
- data/platform/shared/common/RhodesApp.cpp +1 -1
- data/platform/shared/db/DBAdapter.cpp +6 -0
- data/platform/shared/net/CURLNetRequest.cpp +23 -1
- data/platform/shared/ruby/thread_win32.c +9 -1
- data/platform/shared/rubyJVM/src/com/rho/Capabilities.java +6 -0
- data/platform/shared/rubyJVM/src/com/rho/RhodesApp.java +1 -1
- data/platform/shared/rubyJVM/src/com/rho/sync/ClientRegister.java +1 -1
- data/platform/shared/rubyJVM/src/com/xruby/GeneratedMethods/RubySymbol_Methods.java +6 -1
- data/platform/shared/rubyJVM/src/com/xruby/GeneratedMethods/RubyTime_Methods.java +3 -3
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/InputStreamExecutor.java +1 -1
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyArray.java +15 -3
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyString.java +10 -2
- data/platform/shared/rubyJVM/src/com/xruby/runtime/builtin/RubyTime.java +12 -1
- data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RubyKernelModule.java +18 -9
- data/platform/shared/rubyJVM/src/com/xruby/runtime/lang/RubySymbol.java +5 -0
- data/platform/shared/rubyJVM/src/org/json/me/JSONArray.java +2 -1
- data/platform/shared/unzip/unzip.cpp +1 -1
- data/platform/wm/build/wm.rake +27 -6
- data/platform/wm/rhodes/Alert.cpp +335 -5
- data/platform/wm/rhodes/Alert.h +84 -1
- data/platform/wm/rhodes/MainWindow.cpp +28 -6
- data/platform/wm/rhodes/MainWindow.h +7 -2
- data/platform/wm/rhodes/Rhodes.cpp +23 -0
- data/platform/wm/rhodes/rho/rubyext/SystemImpl.cpp +2 -1
- data/platform/wm/rhodes/stdafx.h +1 -0
- data/platform/wm/tools/detool/detool.cpp +405 -14
- data/rakefile.rb +5 -0
- data/res/build-tools/detool.exe +0 -0
- data/res/generators/rhogen.rb +2 -0
- data/rhodes.gemspec +1 -1
- data/spec/framework_spec/app/spec/fixtures/object_values.txt +1 -1
- data/spec/framework_spec/app/spec/pagination/fixtures/object_values.txt +1 -1
- data/spec/framework_spec/app/spec/rhom_object_spec.rb +12 -12
- metadata +23 -6
- data/LICENSING_OPTIONS +0 -1
- data/platform/bb/build/rhodesApp.rapc +0 -9
- data/res/generators/templates/source/source_adapter.rb +0 -48
- data/rhobuild.yml +0 -37
data/lib/framework/builtinME.rb
CHANGED
data/lib/framework/dateME.rb
CHANGED
data/lib/framework/rho/render.rb
CHANGED
@@ -196,7 +196,15 @@ module Rho
|
|
196
196
|
modelpath = Rho::RhoFSConnector.get_model_path("app",model) if model
|
197
197
|
content = eval_compiled_file(modelpath+'_' + partial_name.to_s+'_erb.iseq', locals.get_binding )
|
198
198
|
else
|
199
|
+
#xruby issue - https://www.pivotaltracker.com/story/show/3454121
|
200
|
+
content = render_partial_collection(options,partial_name)
|
201
|
+
end
|
202
|
+
content
|
203
|
+
end
|
204
|
+
|
205
|
+
def render_partial_collection(options, partial_name)
|
199
206
|
i = 0
|
207
|
+
content = ""
|
200
208
|
options[:collection].each do |x|
|
201
209
|
options[:locals][partial_name] = x
|
202
210
|
|
@@ -205,8 +213,8 @@ module Rho
|
|
205
213
|
#puts "render partial: #{x}"
|
206
214
|
content += render_partial :partial => options[:partial], :locals => options[:locals]
|
207
215
|
end
|
208
|
-
|
209
|
-
|
216
|
+
|
217
|
+
content
|
210
218
|
end
|
211
219
|
|
212
220
|
@@m_geoview_callback = nil
|
@@ -441,7 +441,7 @@ module Rhom
|
|
441
441
|
listAttrs = sql.length > 0 ? db.execute_sql(sql,values) : []
|
442
442
|
|
443
443
|
new_obj = self.new
|
444
|
-
new_obj.vars.merge!({:object=>"
|
444
|
+
new_obj.vars.merge!({:object=>"#{obj['object']}"})
|
445
445
|
|
446
446
|
if attribs && obj['attrib']
|
447
447
|
new_obj.vars.merge!( {obj['attrib'].to_sym()=>obj['value'] }) if obj['value']
|
@@ -805,6 +805,7 @@ module Rhom
|
|
805
805
|
# deletes the record from the viewable list as well as
|
806
806
|
# adding a delete record to the list of sync operations
|
807
807
|
def destroy
|
808
|
+
puts "destroy: #{self}"
|
808
809
|
obj = self.object #self.inst_strip_braces(self.object)
|
809
810
|
update_type='delete'
|
810
811
|
|
data/lib/framework/singleton.rb
CHANGED
@@ -391,10 +391,8 @@ RHO_GLOBAL jstring JNICALL Java_com_rhomobile_rhodes_Rhodes_normalizeUrl
|
|
391
391
|
(JNIEnv *, jobject, jstring strUrl)
|
392
392
|
{
|
393
393
|
std::string const &s = rho_cast<std::string>(strUrl);
|
394
|
-
|
395
|
-
|
396
|
-
free(normalized);
|
397
|
-
return newStr;
|
394
|
+
std::string const &cs = RHODESAPP().canonicalizeRhoUrl(s);
|
395
|
+
return rho_cast<jstring>(cs);
|
398
396
|
}
|
399
397
|
|
400
398
|
RHO_GLOBAL void JNICALL Java_com_rhomobile_rhodes_Rhodes_navigateBack
|
@@ -45,25 +45,30 @@ public class NativeBar {
|
|
45
45
|
}
|
46
46
|
|
47
47
|
public void run() {
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
48
|
+
try {
|
49
|
+
Rhodes r = RhodesInstance.getInstance();
|
50
|
+
MainView v = null;
|
51
|
+
|
52
|
+
switch (type) {
|
53
|
+
case NOBAR_TYPE:
|
54
|
+
v = new SimpleMainView();
|
55
|
+
break;
|
56
|
+
case TOOLBAR_TYPE:
|
57
|
+
v = new SimpleMainView(params);
|
58
|
+
break;
|
59
|
+
case TABBAR_TYPE:
|
60
|
+
v = new TabbedMainView(params);
|
61
|
+
break;
|
62
|
+
default:
|
63
|
+
Logger.E(TAG, "Unknown bar type passed: " + type);
|
64
|
+
}
|
65
|
+
|
66
|
+
if (v != null)
|
67
|
+
r.setMainView(v);
|
68
|
+
}
|
69
|
+
catch (Exception e) {
|
70
|
+
reportFail("CreateTask", e);
|
63
71
|
}
|
64
|
-
|
65
|
-
if (v != null)
|
66
|
-
r.setMainView(v);
|
67
72
|
}
|
68
73
|
|
69
74
|
};
|
@@ -29,11 +29,11 @@ import java.util.Vector;
|
|
29
29
|
import com.rhomobile.rhodes.Utils.AssetsSource;
|
30
30
|
import com.rhomobile.rhodes.Utils.FileSource;
|
31
31
|
import com.rhomobile.rhodes.mainview.MainView;
|
32
|
-
import com.rhomobile.rhodes.mainview.SimpleMainView;
|
33
32
|
import com.rhomobile.rhodes.ui.AboutDialog;
|
34
33
|
import com.rhomobile.rhodes.ui.LogOptionsDialog;
|
35
34
|
import com.rhomobile.rhodes.ui.LogViewDialog;
|
36
35
|
import com.rhomobile.rhodes.uri.MailUriHandler;
|
36
|
+
import com.rhomobile.rhodes.uri.SmsUriHandler;
|
37
37
|
import com.rhomobile.rhodes.uri.TelUriHandler;
|
38
38
|
import com.rhomobile.rhodes.uri.UriHandler;
|
39
39
|
import com.rhomobile.rhodes.uri.VideoUriHandler;
|
@@ -41,6 +41,8 @@ import com.rhomobile.rhodes.uri.VideoUriHandler;
|
|
41
41
|
import android.app.Activity;
|
42
42
|
import android.content.Context;
|
43
43
|
import android.content.pm.ActivityInfo;
|
44
|
+
import android.content.pm.ApplicationInfo;
|
45
|
+
import android.content.pm.PackageManager.NameNotFoundException;
|
44
46
|
import android.content.res.Configuration;
|
45
47
|
import android.graphics.Bitmap;
|
46
48
|
import android.net.ConnectivityManager;
|
@@ -82,8 +84,7 @@ public class Rhodes extends Activity {
|
|
82
84
|
|
83
85
|
private static int MAX_PROGRESS = 10000;
|
84
86
|
|
85
|
-
private static
|
86
|
-
private static final String LOADING_PAGE = "apps/app/loading.html";
|
87
|
+
private static boolean ENABLE_LOADING_INDICATION = true;
|
87
88
|
|
88
89
|
private long uiThreadId;
|
89
90
|
public long getUiThreadId() {
|
@@ -149,11 +150,21 @@ public class Rhodes extends Activity {
|
|
149
150
|
}
|
150
151
|
|
151
152
|
private String phoneMemoryRootPath() {
|
152
|
-
|
153
|
+
String pkgName = getPackageName();
|
154
|
+
try {
|
155
|
+
ApplicationInfo info = getPackageManager().getApplicationInfo(pkgName, 0);
|
156
|
+
String path = info.dataDir + "/rhodata/";
|
157
|
+
return path;
|
158
|
+
} catch (NameNotFoundException e) {
|
159
|
+
throw new RuntimeException("Internal error: package " + pkgName + " not found: " + e.getMessage());
|
160
|
+
}
|
153
161
|
}
|
154
162
|
|
155
163
|
private String sdcardRootPath() {
|
156
|
-
|
164
|
+
String sdPath = Environment.getExternalStorageDirectory().getAbsolutePath();
|
165
|
+
String pkgName = getPackageName();
|
166
|
+
String path = sdPath + "/rhomobile/" + pkgName + "/";
|
167
|
+
return path;
|
157
168
|
}
|
158
169
|
|
159
170
|
private RhoLogConf m_rhoLogConf = new RhoLogConf();
|
@@ -204,7 +215,7 @@ public class Rhodes extends Activity {
|
|
204
215
|
*/
|
205
216
|
}
|
206
217
|
|
207
|
-
|
218
|
+
public boolean isNameChanged() {
|
208
219
|
try {
|
209
220
|
FileSource as = new AssetsSource(getResources().getAssets());
|
210
221
|
FileSource fs = new FileSource();
|
@@ -215,7 +226,7 @@ public class Rhodes extends Activity {
|
|
215
226
|
}
|
216
227
|
}
|
217
228
|
|
218
|
-
|
229
|
+
public boolean isBundleChanged() {
|
219
230
|
if (contentChanged == null) {
|
220
231
|
try {
|
221
232
|
String rp = getRootPath();
|
@@ -306,9 +317,9 @@ public class Rhodes extends Activity {
|
|
306
317
|
w.setHorizontalScrollbarOverlay(true);
|
307
318
|
|
308
319
|
w.setWebViewClient(new WebViewClient() {
|
309
|
-
|
310
|
-
private boolean realPageLoaded = false;
|
311
320
|
|
321
|
+
private boolean splashHidden = false;
|
322
|
+
|
312
323
|
@Override
|
313
324
|
public boolean shouldOverrideUrlLoading(WebView view, String url) {
|
314
325
|
return handleUrlLoading(url);
|
@@ -316,25 +327,24 @@ public class Rhodes extends Activity {
|
|
316
327
|
|
317
328
|
@Override
|
318
329
|
public void onPageStarted(WebView view, String url, Bitmap favicon) {
|
319
|
-
|
330
|
+
if (ENABLE_LOADING_INDICATION)
|
331
|
+
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, 0);
|
320
332
|
super.onPageStarted(view, url, favicon);
|
321
333
|
}
|
322
334
|
|
323
335
|
@Override
|
324
336
|
public void onPageFinished(WebView view, String url) {
|
325
|
-
// Clear page until we get real page loaded
|
326
|
-
if (!(realPageLoaded || url.equals(LOADING_PAGE)))
|
327
|
-
realPageLoaded = true;
|
328
|
-
if (!realPageLoaded)
|
329
|
-
view.clearHistory();
|
330
337
|
// Set title
|
331
338
|
Rhodes r = RhodesInstance.getInstance();
|
332
339
|
String title = view.getTitle();
|
333
340
|
r.setTitle(title);
|
334
341
|
// Hide splash screen
|
335
|
-
if (url.startsWith("http://"))
|
342
|
+
if (!splashHidden && url.startsWith("http://")) {
|
336
343
|
hideSplashScreen();
|
337
|
-
|
344
|
+
splashHidden = true;
|
345
|
+
}
|
346
|
+
if (ENABLE_LOADING_INDICATION)
|
347
|
+
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, MAX_PROGRESS);
|
338
348
|
super.onPageFinished(view, url);
|
339
349
|
}
|
340
350
|
|
@@ -343,12 +353,14 @@ public class Rhodes extends Activity {
|
|
343
353
|
w.setWebChromeClient(new WebChromeClient() {
|
344
354
|
@Override
|
345
355
|
public void onProgressChanged(WebView view, int newProgress) {
|
346
|
-
|
347
|
-
|
348
|
-
newProgress
|
349
|
-
|
350
|
-
newProgress
|
351
|
-
|
356
|
+
if (ENABLE_LOADING_INDICATION) {
|
357
|
+
newProgress *= 100;
|
358
|
+
if (newProgress < 0)
|
359
|
+
newProgress = 0;
|
360
|
+
if (newProgress > MAX_PROGRESS)
|
361
|
+
newProgress = MAX_PROGRESS;
|
362
|
+
getWindow().setFeatureInt(Window.FEATURE_PROGRESS, newProgress);
|
363
|
+
}
|
352
364
|
super.onProgressChanged(view, newProgress);
|
353
365
|
}
|
354
366
|
});
|
@@ -420,8 +432,8 @@ public class Rhodes extends Activity {
|
|
420
432
|
}
|
421
433
|
}
|
422
434
|
|
423
|
-
private void showSplashScreen(
|
424
|
-
splashScreen = new SplashScreen(this
|
435
|
+
private void showSplashScreen() {
|
436
|
+
splashScreen = new SplashScreen(this);
|
425
437
|
splashScreen.start(outerFrame);
|
426
438
|
}
|
427
439
|
|
@@ -435,48 +447,6 @@ public class Rhodes extends Activity {
|
|
435
447
|
view.requestFocus();
|
436
448
|
}
|
437
449
|
|
438
|
-
private void showLoadingPage() {
|
439
|
-
try {
|
440
|
-
boolean hasInstalling = false;
|
441
|
-
try {
|
442
|
-
getResources().getAssets().open("apps/app/installing.png").close();
|
443
|
-
hasInstalling = true;
|
444
|
-
}
|
445
|
-
catch (IOException e) {}
|
446
|
-
showSplashScreen("apps/app/" + (hasInstalling && isBundleChanged() ? "installing.png" : "loading.png"));
|
447
|
-
}
|
448
|
-
catch (Exception e) {
|
449
|
-
MainView v = new SimpleMainView();
|
450
|
-
|
451
|
-
boolean bc = isBundleChanged();
|
452
|
-
String page = bc ? INSTALLING_PAGE : LOADING_PAGE;
|
453
|
-
|
454
|
-
boolean hasNeededPage;
|
455
|
-
try {
|
456
|
-
getResources().getAssets().open(page).close();
|
457
|
-
hasNeededPage = true;
|
458
|
-
}
|
459
|
-
catch (IOException e1) {
|
460
|
-
hasNeededPage = false;
|
461
|
-
}
|
462
|
-
|
463
|
-
if (hasNeededPage) {
|
464
|
-
v.navigate("file:///android_asset/" + page, 0);
|
465
|
-
}
|
466
|
-
else {
|
467
|
-
StringBuffer p = new StringBuffer();
|
468
|
-
p.append("<html><title>");
|
469
|
-
p.append(bc ? "Installing" : "Loading");
|
470
|
-
p.append("</title><body>");
|
471
|
-
p.append(bc ? "Installing" : "Loading");
|
472
|
-
p.append("...</body></html>");
|
473
|
-
v.loadData(p.toString(), 0);
|
474
|
-
}
|
475
|
-
|
476
|
-
setMainView(v);
|
477
|
-
}
|
478
|
-
}
|
479
|
-
|
480
450
|
/** Called when the activity is first created. */
|
481
451
|
@Override
|
482
452
|
public void onCreate(Bundle savedInstanceState) {
|
@@ -511,13 +481,15 @@ public class Rhodes extends Activity {
|
|
511
481
|
this.setRequestedOrientation(disableScreenRotation ? ActivityInfo.SCREEN_ORIENTATION_PORTRAIT :
|
512
482
|
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
|
513
483
|
|
514
|
-
|
484
|
+
ENABLE_LOADING_INDICATION = !RhoConf.getBool("disable_loading_indication");
|
485
|
+
if (ENABLE_LOADING_INDICATION)
|
486
|
+
this.requestWindowFeature(Window.FEATURE_PROGRESS);
|
515
487
|
|
516
488
|
outerFrame = new FrameLayout(this);
|
517
489
|
this.setContentView(outerFrame, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
|
518
490
|
|
519
491
|
Logger.I("Rhodes", "Loading...");
|
520
|
-
|
492
|
+
showSplashScreen();
|
521
493
|
|
522
494
|
// Increase WebView rendering priority
|
523
495
|
WebView w = new WebView(this);
|
@@ -541,6 +513,7 @@ public class Rhodes extends Activity {
|
|
541
513
|
// Register custom uri handlers here
|
542
514
|
uriHandlers.addElement(new MailUriHandler(this));
|
543
515
|
uriHandlers.addElement(new TelUriHandler(this));
|
516
|
+
uriHandlers.addElement(new SmsUriHandler(this));
|
544
517
|
uriHandlers.addElement(new VideoUriHandler(this));
|
545
518
|
|
546
519
|
Thread init = new Thread(new Runnable() {
|
@@ -7,23 +7,75 @@ import android.content.Context;
|
|
7
7
|
import android.content.res.AssetManager;
|
8
8
|
import android.graphics.Bitmap;
|
9
9
|
import android.graphics.BitmapFactory;
|
10
|
+
import android.view.View;
|
10
11
|
import android.view.ViewGroup;
|
12
|
+
import android.webkit.WebView;
|
11
13
|
import android.widget.ImageView;
|
12
14
|
|
13
15
|
public class SplashScreen {
|
14
16
|
|
15
|
-
private
|
17
|
+
private static final String INSTALLING_PNG = "apps/app/installing.png";
|
18
|
+
private static final String LOADING_PNG = "apps/app/loading.png";
|
19
|
+
|
20
|
+
private static final String INSTALLING_PAGE = "apps/app/installing.html";
|
21
|
+
private static final String LOADING_PAGE = "apps/app/loading.html";
|
22
|
+
|
23
|
+
private View view;
|
16
24
|
|
17
25
|
private native void nativeStart();
|
18
26
|
private native void nativeHide();
|
19
27
|
|
20
|
-
public SplashScreen(Context ctx
|
21
|
-
view = new ImageView(ctx);
|
28
|
+
public SplashScreen(Context ctx) {
|
22
29
|
AssetManager am = ctx.getResources().getAssets();
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
30
|
+
Rhodes r = RhodesInstance.getInstance();
|
31
|
+
boolean bc = r.isBundleChanged();
|
32
|
+
|
33
|
+
String file = bc ? INSTALLING_PNG : LOADING_PNG;
|
34
|
+
|
35
|
+
Bitmap bitmap = null;
|
36
|
+
try {
|
37
|
+
InputStream is = am.open(file);
|
38
|
+
bitmap = BitmapFactory.decodeStream(is);
|
39
|
+
is.close();
|
40
|
+
|
41
|
+
ImageView v = new ImageView(ctx);
|
42
|
+
v.setImageBitmap(bitmap);
|
43
|
+
v.setId(Rhodes.RHO_SPLASH_VIEW);
|
44
|
+
view = v;
|
45
|
+
}
|
46
|
+
catch (IOException e) {
|
47
|
+
WebView v = r.createWebView();
|
48
|
+
|
49
|
+
String page = bc ? INSTALLING_PAGE : LOADING_PAGE;
|
50
|
+
|
51
|
+
boolean hasNeededPage;
|
52
|
+
try {
|
53
|
+
InputStream is1 = am.open(page);
|
54
|
+
if (is1 != null)
|
55
|
+
is1.close();
|
56
|
+
hasNeededPage = true;
|
57
|
+
}
|
58
|
+
catch (IOException e1) {
|
59
|
+
hasNeededPage = false;
|
60
|
+
}
|
61
|
+
|
62
|
+
if (hasNeededPage) {
|
63
|
+
v.loadUrl("file:///android_asset/" + page);
|
64
|
+
}
|
65
|
+
else {
|
66
|
+
StringBuffer p = new StringBuffer();
|
67
|
+
p.append("<html><title>");
|
68
|
+
p.append(bc ? "Installing" : "Loading");
|
69
|
+
p.append("</title><body>");
|
70
|
+
p.append(bc ? "Installing" : "Loading");
|
71
|
+
p.append("...</body></html>");
|
72
|
+
v.loadData(p.toString(), "text/html", "utf-8");
|
73
|
+
}
|
74
|
+
|
75
|
+
v.setId(Rhodes.RHO_SPLASH_VIEW);
|
76
|
+
|
77
|
+
view = v;
|
78
|
+
}
|
27
79
|
}
|
28
80
|
|
29
81
|
public void start(ViewGroup outer) {
|
@@ -35,7 +35,7 @@ public class Camera {
|
|
35
35
|
|
36
36
|
public static final String INTENT_EXTRA_PREFIX = Rhodes.INTENT_EXTRA_PREFIX + "camera.";
|
37
37
|
|
38
|
-
public static String BASE_CAMERA_DIR = RhodesInstance.getInstance().getRootPath() + "
|
38
|
+
public static String BASE_CAMERA_DIR = RhodesInstance.getInstance().getRootPath() + "db/db-files";
|
39
39
|
|
40
40
|
private static void reportFail(String name, Exception e) {
|
41
41
|
Logger.E(TAG, "Call of \"" + name + "\" failed: " + e.getMessage());
|