diff --git a/code/boot.js b/code/boot.js index 47e3c2b4..eb5b1d6e 100644 --- a/code/boot.js +++ b/code/boot.js @@ -501,6 +501,11 @@ function boot() { window.iitcLoaded = true; window.runHooks('iitcLoaded'); + + if (typeof android !== 'undefined' && android && android.iitcLoaded) { + android.iitcLoaded(); + } + } // this is the minified load.js script that allows us to easily load diff --git a/mobile/res/drawable-hdpi/iitc.png b/mobile/res/drawable-hdpi/iitc.png new file mode 100644 index 00000000..d4c6ac5d Binary files /dev/null and b/mobile/res/drawable-hdpi/iitc.png differ diff --git a/mobile/res/drawable-ldpi/iitc.png b/mobile/res/drawable-ldpi/iitc.png new file mode 100644 index 00000000..d4c6ac5d Binary files /dev/null and b/mobile/res/drawable-ldpi/iitc.png differ diff --git a/mobile/res/drawable-mdpi/iitc.png b/mobile/res/drawable-mdpi/iitc.png new file mode 100644 index 00000000..d4c6ac5d Binary files /dev/null and b/mobile/res/drawable-mdpi/iitc.png differ diff --git a/mobile/res/drawable-xhdpi/iitc.png b/mobile/res/drawable-xhdpi/iitc.png new file mode 100644 index 00000000..d4c6ac5d Binary files /dev/null and b/mobile/res/drawable-xhdpi/iitc.png differ diff --git a/mobile/res/drawable-xxhdpi/iitc.png b/mobile/res/drawable-xxhdpi/iitc.png new file mode 100644 index 00000000..d4c6ac5d Binary files /dev/null and b/mobile/res/drawable-xxhdpi/iitc.png differ diff --git a/mobile/res/layout/activity_main.xml b/mobile/res/layout/activity_main.xml index 3eef9813..3dc1c099 100644 --- a/mobile/res/layout/activity_main.xml +++ b/mobile/res/layout/activity_main.xml @@ -6,6 +6,11 @@ + android:layout_height="fill_parent" /> + \ No newline at end of file diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java index 4f6dceb7..56f7a8b2 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java @@ -10,6 +10,7 @@ import android.content.DialogInterface.OnMultiChoiceClickListener; import android.content.Intent; import android.net.Uri; import android.util.Log; +import android.view.View; import android.webkit.JavascriptInterface; import android.widget.Toast; @@ -118,6 +119,20 @@ public class IITC_JSInterface { ((IITC_Mobile) context).setFocusedDialog(id); } + @JavascriptInterface + public void iitcLoaded() { + Log.d("iitcm", "iitc loaded completely"); + final IITC_Mobile iitc = ((IITC_Mobile) context); + + iitc.runOnUiThread(new Runnable() { + @Override + public void run() { + iitc.findViewById(R.id.iitc_webview).setVisibility(View.VISIBLE); + iitc.findViewById(R.id.imageLoading).setVisibility(View.GONE); + } + }); + } + // get layers and list them in a dialog @JavascriptInterface public void setLayers(String base_layer, String overlay_layer) { diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index 65314542..cd63e8d5 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -22,6 +22,7 @@ import android.preference.PreferenceManager; import android.util.Log; import android.view.Menu; import android.view.MenuItem; +import android.view.View; import android.view.Window; import android.view.WindowManager; import android.webkit.WebSettings; @@ -463,6 +464,8 @@ public class IITC_Mobile extends Activity { // inject the iitc-script and load the intel url // plugins are injected onPageFinished public void loadUrl(String url) { + findViewById(R.id.imageLoading).setVisibility(View.VISIBLE); + findViewById(R.id.iitc_webview).setVisibility(View.GONE); url = addUrlParam(url); loadIITC(); iitc_view.loadUrl(url); diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java index e2b79a5d..f2ecec03 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java @@ -31,13 +31,13 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; public class IITC_WebViewClient extends WebViewClient { - private static final ByteArrayInputStream style = new ByteArrayInputStream( + + private static final ByteArrayInputStream STYLE = new ByteArrayInputStream( "body, #dashboard_container, #map_canvas { background: #000 !important; }" .getBytes()); - private static final ByteArrayInputStream empty = new ByteArrayInputStream( + private static final ByteArrayInputStream EMPTY = new ByteArrayInputStream( "".getBytes()); - private WebResourceResponse iitcjs; private String js = null; private String iitc_path = null; private final Context context; @@ -139,8 +139,6 @@ public class IITC_WebViewClient extends WebViewClient { // so it boots correctly. this.js = "$(document).ready(function(){" + js + "});"; - iitcjs = new WebResourceResponse("text/javascript", "UTF-8", - new ByteArrayInputStream(this.js.getBytes())); } // enable https @@ -152,11 +150,8 @@ public class IITC_WebViewClient extends WebViewClient { @Override public void onPageFinished(WebView view, String url) { - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - if(sharedPrefs.getBoolean("pref_force_desktop", false)) { - Log.d("iitcm", "injecting desktop iitc"); - view.loadUrl("javascript: " + this.js); - } + Log.d("iitcm", "injecting iitc.."); + view.loadUrl("javascript: " + this.js); super.onPageFinished(view, url); } @@ -301,26 +296,21 @@ public class IITC_WebViewClient extends WebViewClient { @Override public WebResourceResponse shouldInterceptRequest(final WebView view, String url) { - SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context); - if(!sharedPrefs.getBoolean("pref_force_desktop", false)) { - if (url.contains("/css/common.css")) { - return new WebResourceResponse("text/css", "UTF-8", style); - } else if (url.contains("gen_dashboard.js")) { - Log.d("iitcm", "replacing gen_dashboard.js with iitc script"); - Log.d("iitcm", "injecting iitc..."); - return this.iitcjs; - } else if (url.contains("/css/ap_icons.css") - || url.contains("/css/map_icons.css") - || url.contains("/css/misc_icons.css") - || url.contains("/css/style_full.css") - || url.contains("/css/style_mobile.css") - || url.contains("/css/portalrender.css") - || url.contains("js/analytics.js") - || url.contains("google-analytics.com/ga.js")) { - return new WebResourceResponse("text/plain", "UTF-8", empty); - } else { - return super.shouldInterceptRequest(view, url); - } + if (url.contains("/css/common.css")) { + return new WebResourceResponse("text/css", "UTF-8", STYLE); + } else if (url.contains("gen_dashboard.js")) { + return new WebResourceResponse("text/javascript", "UTF-8", EMPTY); + } else if (url.contains("/css/ap_icons.css") + || url.contains("/css/map_icons.css") + || url.contains("/css/common.css") + || url.contains("/css/misc_icons.css") + || url.contains("/css/style_full.css") + || url.contains("/css/style_mobile.css") + || url.contains("/css/portalrender.css") + || url.contains("/css/portalrender_mobile.css") + || url.contains("js/analytics.js") + || url.contains("google-analytics.com/ga.js")) { + return new WebResourceResponse("text/plain", "UTF-8", EMPTY); } else { return super.shouldInterceptRequest(view, url); }