diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_AboutDialogPreference.java b/mobile/src/com/cradle/iitc_mobile/IITC_AboutDialogPreference.java index 23d98de1..9e33ed50 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_AboutDialogPreference.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_AboutDialogPreference.java @@ -10,7 +10,7 @@ import android.text.method.LinkMovementMethod; import android.util.AttributeSet; import android.widget.TextView; -public class IITC_AboutDialogPreference extends DialogPreference{ +public class IITC_AboutDialogPreference extends DialogPreference { private Context context; @@ -20,11 +20,10 @@ public class IITC_AboutDialogPreference extends DialogPreference{ } /* - * start a little about-dialog - * srsly...I found no better way for clickable links in a TextView then - * using Html.fromHtml...Linkify is just broken and does not understand - * html href tags...so let's tag the @string/about_msg with CDATA and - * use Html.fromHtml(...) for clickable hrefs with tags. + * start a little about-dialog srsly...I found no better way for clickable + * links in a TextView then using Html.fromHtml...Linkify is just broken and + * does not understand html href tags...so let's tag the @string/about_msg + * with CDATA and use Html.fromHtml(...) for clickable hrefs with tags. */ @Override protected void onPrepareDialogBuilder(Builder builder) { @@ -32,14 +31,13 @@ public class IITC_AboutDialogPreference extends DialogPreference{ String about_msg = context.getText(R.string.pref_about_msg).toString(); message.setText(Html.fromHtml(about_msg)); message.setMovementMethod(LinkMovementMethod.getInstance()); - builder.setView(message) - .setTitle(R.string.about) - .setIcon(android.R.drawable.ic_dialog_info) - .setNeutralButton(R.string.close, new OnClickListener() { - public void onClick(DialogInterface dialog, int id) { - dialog.cancel(); - } - }); + builder.setView(message).setTitle(R.string.about) + .setIcon(android.R.drawable.ic_dialog_info) + .setNeutralButton(R.string.close, new OnClickListener() { + public void onClick(DialogInterface dialog, int id) { + dialog.cancel(); + } + }); super.onPrepareDialogBuilder(builder); } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java index 782ffd74..4f7510ef 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_JSInterface.java @@ -21,7 +21,8 @@ public class IITC_JSInterface { // send geo intent for navigation apps like gmaps or waze etc... @JavascriptInterface public void intentPosLink(String lat, String lng, String portal_name) { - String uri = "geo:" + lat + "," + lng + "?q=" + lat + "," + lng + portal_name; + String uri = "geo:" + lat + "," + lng + "?q=" + lat + "," + lng + + portal_name; Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri)); context.startActivity(intent); @@ -30,9 +31,11 @@ public class IITC_JSInterface { // copy link to specific portal to android clipboard @JavascriptInterface public void copy(String s) { - ClipboardManager clipboard = (ClipboardManager) context.getSystemService(Context.CLIPBOARD_SERVICE); + ClipboardManager clipboard = (ClipboardManager) context + .getSystemService(Context.CLIPBOARD_SERVICE); ClipData clip = ClipData.newPlainText("Copied Text ", s); - clipboard.setPrimaryClip(clip); - Toast.makeText(context, "copied to clipboard", Toast.LENGTH_SHORT).show(); + clipboard.setPrimaryClip(clip); + Toast.makeText(context, "copied to clipboard", Toast.LENGTH_SHORT) + .show(); } } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index df44503a..afde5558 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -46,70 +46,87 @@ public class IITC_Mobile extends Activity { super.onCreate(savedInstanceState); // TODO build an async task for url.openStream() in IITC_WebViewClient - StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); + StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder() + .permitAll().build(); StrictMode.setThreadPolicy(policy); setContentView(R.layout.activity_main); iitc_view = (IITC_WebView) findViewById(R.id.iitc_webview); actionBar = this.getActionBar(); - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME | ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_TITLE); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_HOME + | ActionBar.DISPLAY_USE_LOGO | ActionBar.DISPLAY_SHOW_TITLE); actionBar.setTitle(getString(R.string.menu_map)); actionBar.setHomeButtonEnabled(true); - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + SharedPreferences sharedPref = PreferenceManager + .getDefaultSharedPreferences(this); listener = new OnSharedPreferenceChangeListener() { @Override - public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { + public void onSharedPreferenceChanged( + SharedPreferences sharedPreferences, String key) { if (key.equals("pref_user_loc")) - user_loc = sharedPreferences.getBoolean("pref_user_loc", false); + user_loc = sharedPreferences.getBoolean("pref_user_loc", + false); IITC_Mobile.this.loadUrl(intel_url); } }; sharedPref.registerOnSharedPreferenceChangeListener(listener); - // we need this one to prevent location updates to javascript when keyboard is open + // we need this one to prevent location updates to javascript when + // keyboard is open // it closes on updates - iitc_view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() { - @Override - public void onGlobalLayout() { - Rect r = new Rect(); - //r will be populated with the coordinates of your view that area still visible. - iitc_view.getWindowVisibleDisplayFrame(r); + iitc_view.getViewTreeObserver().addOnGlobalLayoutListener( + new OnGlobalLayoutListener() { + @Override + public void onGlobalLayout() { + Rect r = new Rect(); + // r will be populated with the coordinates of your view + // that area still visible. + iitc_view.getWindowVisibleDisplayFrame(r); - int screenHeight = iitc_view.getRootView().getHeight(); - int heightDiff = screenHeight - (r.bottom - r.top); - boolean visible = heightDiff > screenHeight / 3; - if (visible == true) { - Log.d("iitcm", "Open Keyboard..."); - IITC_Mobile.this.keyboad_open = true; - } else { - Log.d("iitcm", "Close Keyboard..."); - IITC_Mobile.this.keyboad_open = false; - } - } - }); + int screenHeight = iitc_view.getRootView().getHeight(); + int heightDiff = screenHeight - (r.bottom - r.top); + boolean visible = heightDiff > screenHeight / 3; + if (visible == true) { + Log.d("iitcm", "Open Keyboard..."); + IITC_Mobile.this.keyboad_open = true; + } else { + Log.d("iitcm", "Close Keyboard..."); + IITC_Mobile.this.keyboad_open = false; + } + } + }); // Acquire a reference to the system Location Manager - loc_mngr = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); + loc_mngr = (LocationManager) this + .getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates loc_listener = new LocationListener() { public void onLocationChanged(Location location) { - // Called when a new location is found by the network location provider. - drawMarker(location); + // Called when a new location is found by the network location + // provider. + drawMarker(location); } - public void onStatusChanged(String provider, int status, Bundle extras) {} + public void onStatusChanged(String provider, int status, + Bundle extras) { + } - public void onProviderEnabled(String provider) {} + public void onProviderEnabled(String provider) { + } - public void onProviderDisabled(String provider) {} - }; + public void onProviderDisabled(String provider) { + } + }; user_loc = sharedPref.getBoolean("pref_user_loc", false); if (user_loc == true) { - // Register the listener with the Location Manager to receive location updates - loc_mngr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, loc_listener); - loc_mngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, loc_listener); + // Register the listener with the Location Manager to receive + // location updates + loc_mngr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, + 0, 0, loc_listener); + loc_mngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, + loc_listener); } // load new iitc web view with ingress intel page @@ -125,8 +142,7 @@ public class IITC_Mobile extends Activity { Log.d("iitcm", "loading url..."); this.loadUrl(url); } - } - else { + } else { this.loadUrl(intel_url); } } @@ -142,9 +158,12 @@ public class IITC_Mobile extends Activity { iitc_view.updateCaching(); if (user_loc == true) { - // Register the listener with the Location Manager to receive location updates - loc_mngr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, loc_listener); - loc_mngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, loc_listener); + // Register the listener with the Location Manager to receive + // location updates + loc_mngr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, + 0, 0, loc_listener); + loc_mngr.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, + loc_listener); } } @@ -152,25 +171,32 @@ public class IITC_Mobile extends Activity { protected void onStop() { ConnectivityManager conMan = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); - NetworkInfo mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); + NetworkInfo mobile = conMan + .getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI); // check if Mobile or Wifi module is available..then handle states - // TODO: theory...we do not have to check for a Wifi module...every android device should have one + // TODO: theory...we do not have to check for a Wifi module...every + // android device should have one if (mobile != null) { Log.d("iitcm", "mobile internet module detected...check states"); - if (mobile.getState() == NetworkInfo.State.CONNECTED || mobile.getState() == NetworkInfo.State.CONNECTING) { - Log.d("iitcm", "connected to mobile net...abort all running requests"); + if (mobile.getState() == NetworkInfo.State.CONNECTED + || mobile.getState() == NetworkInfo.State.CONNECTING) { + Log.d("iitcm", + "connected to mobile net...abort all running requests"); // cancel all current requests iitc_view.loadUrl("javascript: window.requests.abort()"); // set idletime to maximum...no need for more iitc_view.loadUrl("javascript: window.idleTime = 999"); - } else if (wifi.getState() == NetworkInfo.State.CONNECTED || wifi.getState() == NetworkInfo.State.CONNECTING) { - iitc_view.loadUrl("javascript: window.idleTime = 999"); + } else if (wifi.getState() == NetworkInfo.State.CONNECTED + || wifi.getState() == NetworkInfo.State.CONNECTING) { + iitc_view.loadUrl("javascript: window.idleTime = 999"); } } else { - Log.d("iitcm", "no mobile internet module detected...check wifi state"); - if (wifi.getState() == NetworkInfo.State.CONNECTED || wifi.getState() == NetworkInfo.State.CONNECTING) { + Log.d("iitcm", + "no mobile internet module detected...check wifi state"); + if (wifi.getState() == NetworkInfo.State.CONNECTED + || wifi.getState() == NetworkInfo.State.CONNECTING) { iitc_view.loadUrl("javascript: window.idleTime = 999"); } } @@ -218,7 +244,7 @@ public class IITC_Mobile extends Activity { new Handler().postDelayed(new Runnable() { @Override public void run() { - back_button_pressed=false; + back_button_pressed = false; } }, 500); } @@ -235,85 +261,90 @@ public class IITC_Mobile extends Activity { public boolean onOptionsItemSelected(MenuItem item) { // Handle item selection switch (item.getItemId()) { - case android.R.id.home: + case android.R.id.home : iitc_view.loadUrl("javascript: window.show('map');"); actionBar.setTitle(getString(R.string.menu_map)); return true; - case R.id.menu_map: + case R.id.menu_map : iitc_view.loadUrl("javascript: window.show('map');"); actionBar.setTitle(getString(R.string.menu_map)); return true; - case R.id.reload_button: - this.loadUrl(intel_url); + case R.id.reload_button : + this.loadUrl(intel_url); actionBar.setTitle(getString(R.string.menu_map)); - return true; - // clear cache - case R.id.cache_clear: - iitc_view.clearHistory(); - iitc_view.clearFormData(); - iitc_view.clearCache(true); - return true; - // toggle fullscreen - case R.id.toggle_fullscreen: - if (!this.fullscreen_mode) { - // get rid of action bar - this.getActionBar().hide(); - // hide notification bar - WindowManager.LayoutParams attrs = getWindow().getAttributes(); - attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; - this.getWindow().setAttributes(attrs); - this.fullscreen_mode = true; - // show a little toast for the user - Toast.makeText(this, "Press back button to exit fullscreen", Toast.LENGTH_SHORT).show(); - } - else { - // get back action bar - this.getActionBar().show(); - // show notification bar again - WindowManager.LayoutParams attrs = getWindow().getAttributes(); - attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; - this.getWindow().setAttributes(attrs); - this.fullscreen_mode = false; - } - return true; - // get the users current location and focus it on map - case R.id.locate: + return true; + // clear cache + case R.id.cache_clear : + iitc_view.clearHistory(); + iitc_view.clearFormData(); + iitc_view.clearCache(true); + return true; + // toggle fullscreen + case R.id.toggle_fullscreen : + if (!this.fullscreen_mode) { + // get rid of action bar + this.getActionBar().hide(); + // hide notification bar + WindowManager.LayoutParams attrs = getWindow() + .getAttributes(); + attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; + this.getWindow().setAttributes(attrs); + this.fullscreen_mode = true; + // show a little toast for the user + Toast.makeText(this, + "Press back button to exit fullscreen", + Toast.LENGTH_SHORT).show(); + } else { + // get back action bar + this.getActionBar().show(); + // show notification bar again + WindowManager.LayoutParams attrs = getWindow() + .getAttributes(); + attrs.flags ^= WindowManager.LayoutParams.FLAG_FULLSCREEN; + this.getWindow().setAttributes(attrs); + this.fullscreen_mode = false; + } + return true; + // get the users current location and focus it on map + case R.id.locate : iitc_view.loadUrl("javascript: window.show('map');"); - iitc_view.loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});"); + iitc_view + .loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});"); actionBar.setTitle(getString(R.string.menu_map)); - return true; - // start settings activity - case R.id.action_settings: - Intent intent = new Intent(this, IITC_Settings.class); - intent.putExtra("iitc_version", iitc_view.getWebViewClient().getIITCVersion()); - startActivity(intent); - return true; - case R.id.menu_info: + return true; + // start settings activity + case R.id.action_settings : + Intent intent = new Intent(this, IITC_Settings.class); + intent.putExtra("iitc_version", iitc_view.getWebViewClient() + .getIITCVersion()); + startActivity(intent); + return true; + case R.id.menu_info : iitc_view.loadUrl("javascript: window.show('info');"); - actionBar.setTitle(getString(R.string.menu_info)); + actionBar.setTitle(getString(R.string.menu_info)); return true; - case R.id.menu_full: + case R.id.menu_full : iitc_view.loadUrl("javascript: window.show('full');"); - actionBar.setTitle(getString(R.string.menu_full)); + actionBar.setTitle(getString(R.string.menu_full)); return true; - case R.id.menu_compact: + case R.id.menu_compact : iitc_view.loadUrl("javascript: window.show('compact');"); - actionBar.setTitle(getString(R.string.menu_compact)); + actionBar.setTitle(getString(R.string.menu_compact)); return true; - case R.id.menu_public: + case R.id.menu_public : iitc_view.loadUrl("javascript: window.show('public');"); - actionBar.setTitle(getString(R.string.menu_public)); + actionBar.setTitle(getString(R.string.menu_public)); return true; - case R.id.menu_faction: + case R.id.menu_faction : iitc_view.loadUrl("javascript: window.show('faction');"); - actionBar.setTitle(getString(R.string.menu_faction)); + actionBar.setTitle(getString(R.string.menu_faction)); return true; - case R.id.menu_debug: + case R.id.menu_debug : iitc_view.loadUrl("javascript: window.show('debug')"); - actionBar.setTitle(getString(R.string.menu_debug)); + actionBar.setTitle(getString(R.string.menu_debug)); return true; - default: - return super.onOptionsItemSelected(item); + default : + return super.onOptionsItemSelected(item); } } @@ -330,7 +361,7 @@ public class IITC_Mobile extends Activity { // Force mobile view. // New actions are not compatible with desktop mode private String addUrlParam(String url) { - return (url + "?vp=m"); + return (url + "?vp=m"); } // inject the iitc-script and load the intel url @@ -348,9 +379,9 @@ public class IITC_Mobile extends Activity { // should avoid gps glitches if (loc.getAccuracy() < 100) { if (keyboad_open == false) { - iitc_view.loadUrl("javascript: " + - "window.plugin.userLocation.updateLocation( " + - loc.getLatitude() + ", " + loc.getLongitude() + ");"); + iitc_view.loadUrl("javascript: " + + "window.plugin.userLocation.updateLocation( " + + loc.getLatitude() + ", " + loc.getLongitude() + ");"); } } } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java index 8813b2a7..f019e2ac 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java @@ -28,18 +28,21 @@ public class IITC_Settings extends Activity { ArrayList asset_list = new ArrayList(); ArrayList asset_values = new ArrayList(); - for (int i = 0; i < asset_array.length ; i++) { + for (int i = 0; i < asset_array.length; i++) { // find user plugin name for user readable entries Scanner s = null; String src = ""; try { - s = new Scanner(am.open("plugins/" + asset_array[i])).useDelimiter("\\A"); + s = new Scanner(am.open("plugins/" + asset_array[i])) + .useDelimiter("\\A"); } catch (IOException e2) { // TODO Auto-generated catch block e2.printStackTrace(); } - if (s != null) src = s.hasNext() ? s.next() : ""; - String header = src.substring(src.indexOf("==UserScript=="), src.indexOf("==/UserScript==")); + if (s != null) + src = s.hasNext() ? s.next() : ""; + String header = src.substring(src.indexOf("==UserScript=="), + src.indexOf("==/UserScript==")); // remove new line comments and replace with space // this way we get double spaces instead of newline + double slash header = header.replace("\n//", " "); @@ -48,7 +51,8 @@ public class IITC_Settings extends Activity { String plugin_name = "not found"; for (int j = 0; j < attributes.length; j++) { // search for name and use the value - if (attributes[j].equals("@name")) plugin_name = attributes[j+1]; + if (attributes[j].equals("@name")) + plugin_name = attributes[j + 1]; } asset_list.add(plugin_name); // real value @@ -56,13 +60,14 @@ public class IITC_Settings extends Activity { } Bundle bundle = getIntent().getExtras(); - bundle.putStringArray("ASSETS", (String[]) asset_list.toArray(new String[0])); - bundle.putStringArray("ASSETS_VAL", (String[]) asset_values.toArray(new String[0])); + bundle.putStringArray("ASSETS", + (String[]) asset_list.toArray(new String[0])); + bundle.putStringArray("ASSETS_VAL", + (String[]) asset_values.toArray(new String[0])); settings.setArguments(bundle); // Display the fragment as the main content. getFragmentManager().beginTransaction() - .replace(android.R.id.content, settings) - .commit(); + .replace(android.R.id.content, settings).commit(); } } \ No newline at end of file diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java b/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java index 5a68f307..3859a5f4 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java @@ -23,20 +23,21 @@ public class IITC_SettingsFragment extends PreferenceFragment { addPreferencesFromResource(R.xml.preferences); - //plugins + // plugins MultiSelectListPreference pref_plugins = (MultiSelectListPreference) findPreference("pref_plugins"); pref_plugins.setEntries(getArguments().getStringArray("ASSETS")); - pref_plugins.setEntryValues(getArguments().getStringArray("ASSETS_VAL")); + pref_plugins + .setEntryValues(getArguments().getStringArray("ASSETS_VAL")); // set build version ListPreference pref_build_version = (ListPreference) findPreference("pref_build_version"); PackageManager pm = getActivity().getPackageManager(); String version = "unknown"; try { - PackageInfo info = pm.getPackageInfo(getActivity().getPackageName(), 0); + PackageInfo info = pm.getPackageInfo( + getActivity().getPackageName(), 0); version = info.versionName; - } - catch (NameNotFoundException e) { + } catch (NameNotFoundException e) { e.printStackTrace(); } pref_build_version.setSummary(version); @@ -47,16 +48,20 @@ public class IITC_SettingsFragment extends PreferenceFragment { // set iitc source EditTextPreference pref_iitc_source = (EditTextPreference) findPreference("pref_iitc_source"); - pref_iitc_source.setOnPreferenceChangeListener(new OnPreferenceChangeListener() { - @Override - public boolean onPreferenceChange(Preference preference, Object newValue) { - preference.setSummary((CharSequence) newValue); - // TODO: update iitc_version when iitc source has changed - return true; - } - }); + pref_iitc_source + .setOnPreferenceChangeListener(new OnPreferenceChangeListener() { + @Override + public boolean onPreferenceChange(Preference preference, + Object newValue) { + preference.setSummary((CharSequence) newValue); + // TODO: update iitc_version when iitc source has + // changed + return true; + } + }); // first init of summary - String pref_iitc_source_sum = (String) pref_iitc_source.getSummary() + pref_iitc_source.getText(); + String pref_iitc_source_sum = (String) pref_iitc_source.getSummary() + + pref_iitc_source.getText(); pref_iitc_source.setSummary(pref_iitc_source_sum); } } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java index ba705db9..ba63e570 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java @@ -28,8 +28,10 @@ public class IITC_WebView extends WebView { settings.setAllowFileAccess(true); settings.setGeolocationEnabled(true); settings.setAppCacheEnabled(true); - settings.setDatabasePath(this.getContext().getApplicationInfo().dataDir + "/databases/"); - settings.setAppCachePath(this.getContext().getCacheDir().getAbsolutePath()); + settings.setDatabasePath(this.getContext().getApplicationInfo().dataDir + + "/databases/"); + settings.setAppCachePath(this.getContext().getCacheDir() + .getAbsolutePath()); // use cache if on mobile network...saves traffic this.js_interface = new IITC_JSInterface(c); this.addJavascriptInterface(js_interface, "android"); @@ -38,7 +40,8 @@ public class IITC_WebView extends WebView { // allow access by default this.setWebChromeClient(new WebChromeClient() { @Override - public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) { + public void onGeolocationPermissionsShowPrompt(String origin, + GeolocationPermissions.Callback callback) { callback.invoke(origin, true, false); } }); @@ -65,13 +68,15 @@ public class IITC_WebView extends WebView { iitc_init(context); } - //---------------------------------------------------------------- + + // ---------------------------------------------------------------- @Override public void loadUrl(String url) { if (!url.startsWith("javascript:")) { // force https if enabled in settings - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(getContext()); + SharedPreferences sharedPref = PreferenceManager + .getDefaultSharedPreferences(getContext()); if (sharedPref.getBoolean("pref_force_https", true)) url = url.replace("http://", "https://"); else @@ -90,8 +95,7 @@ public class IITC_WebView extends WebView { } public void updateCaching() { - if (!this.isConnectedToWifi()) - { + if (!this.isConnectedToWifi()) { Log.d("iitcm", "not connected to wifi...load tiles from cache"); settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); } else { @@ -101,7 +105,8 @@ public class IITC_WebView extends WebView { } private boolean isConnectedToWifi() { - ConnectivityManager conMan = (ConnectivityManager) getContext().getSystemService( Context.CONNECTIVITY_SERVICE ); + ConnectivityManager conMan = (ConnectivityManager) getContext() + .getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI); return wifi.getState() == NetworkInfo.State.CONNECTED; } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java index 59a16c6a..9a32366f 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java @@ -26,8 +26,10 @@ import java.util.Set; public class IITC_WebViewClient extends WebViewClient { private static final ByteArrayInputStream style = new ByteArrayInputStream( - "body, #dashboard_container, #map_canvas { background: #000 !important; }".getBytes()); - private static final ByteArrayInputStream empty = new ByteArrayInputStream("".getBytes()); + "body, #dashboard_container, #map_canvas { background: #000 !important; }" + .getBytes()); + private static final ByteArrayInputStream empty = new ByteArrayInputStream( + "".getBytes()); private WebResourceResponse iitcjs; private String js = null; @@ -36,10 +38,11 @@ public class IITC_WebViewClient extends WebViewClient { public IITC_WebViewClient(Context c) { this.context = c; - this.iitc_path = Environment.getExternalStorageDirectory().getPath() + "/IITC_Mobile/"; + this.iitc_path = Environment.getExternalStorageDirectory().getPath() + + "/IITC_Mobile/"; try { loadIITC_JS(c); - } catch(IOException e) { + } catch (IOException e) { e.printStackTrace(); } } @@ -47,7 +50,8 @@ public class IITC_WebViewClient extends WebViewClient { public String getIITCVersion() { String header = ""; if (js != null) - header = js.substring(js.indexOf("==UserScript=="), js.indexOf("==/UserScript==")); + header = js.substring(js.indexOf("==UserScript=="), + js.indexOf("==/UserScript==")); // remove new line comments header = header.replace("\n//", ""); // get a list of key-value @@ -55,35 +59,46 @@ public class IITC_WebViewClient extends WebViewClient { String iitc_version = "not found"; for (int i = 0; i < attributes.length; i++) { // search for version and use the value - if (attributes[i].equals("@version")) iitc_version = attributes[i+1]; + if (attributes[i].equals("@version")) + iitc_version = attributes[i + 1]; } return iitc_version; } public void loadIITC_JS(Context c) throws java.io.IOException { // You are able to load the script from external source - // if a http address is given, use script from this address. else use the local script - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(c); + // if a http address is given, use script from this address. else use + // the local script + SharedPreferences sharedPref = PreferenceManager + .getDefaultSharedPreferences(c); String iitc_source = sharedPref.getString("pref_iitc_source", "local"); String js = ""; - // if developer mode are enabled, load all iitc script from external storage + // if developer mode are enabled, load all iitc script from external + // storage if (sharedPref.getBoolean("pref_dev_checkbox", false)) { - js = this.fileToString(iitc_path + "dev/total-conversion-build.user.js", false); + js = this.fileToString(iitc_path + + "dev/total-conversion-build.user.js", false); if (js.equals("false")) { - Toast.makeText(context, "File " + iitc_path + - "dev/total-conversion-build.user.js not found. " + - "Disable developer mode or add iitc files " + - "to the dev folder.", Toast.LENGTH_LONG).show(); + Toast.makeText( + context, + "File " + + iitc_path + + "dev/total-conversion-build.user.js not found. " + + "Disable developer mode or add iitc files " + + "to the dev folder.", Toast.LENGTH_LONG) + .show(); return; } else { - Toast.makeText(context, "Developer mode enabled", Toast.LENGTH_SHORT).show(); + Toast.makeText(context, "Developer mode enabled", + Toast.LENGTH_SHORT).show(); } } else { // load iitc script from web or asset folder if (iitc_source.contains("http")) { URL url = new URL(iitc_source); - js = new Scanner(url.openStream(), "UTF-8").useDelimiter("\\A").next(); + js = new Scanner(url.openStream(), "UTF-8").useDelimiter("\\A") + .next(); } else { js = this.fileToString("total-conversion-build.user.js", true); } @@ -92,15 +107,14 @@ public class IITC_WebViewClient extends WebViewClient { this.js = js; PackageManager pm = context.getPackageManager(); - boolean hasMultitouch = - pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH); + boolean hasMultitouch = pm + .hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH); boolean forcedZoom = sharedPref.getBoolean("pref_user_zoom", false); - if (hasMultitouch && !forcedZoom) { - js = js.replace("window.showZoom = true;", "window.showZoom = false;"); + if (hasMultitouch && !forcedZoom) { + js = js.replace("window.showZoom = true;", + "window.showZoom = false;"); } - - // need to wrap the mobile iitc.js version in a document ready. IITC // expects to be injected after the DOM has been loaded completely. // Since the mobile client injects IITC by replacing the gen_dashboard @@ -108,17 +122,15 @@ public class IITC_WebViewClient extends WebViewClient { // so it boots correctly. js = "$(document).ready(function(){" + js + "});"; - iitcjs = new WebResourceResponse( - "text/javascript", - "UTF-8", - new ByteArrayInputStream(js.getBytes()) - ); + iitcjs = new WebResourceResponse("text/javascript", "UTF-8", + new ByteArrayInputStream(js.getBytes())); }; // enable https @Override - public void onReceivedSslError (WebView view, SslErrorHandler handler, SslError error) { - handler.proceed() ; + public void onReceivedSslError(WebView view, SslErrorHandler handler, + SslError error) { + handler.proceed(); }; // plugins should be loaded after the main script is injected @@ -127,7 +139,8 @@ public class IITC_WebViewClient extends WebViewClient { super.onPageFinished(view, url); // get the plugin preferences - SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); + SharedPreferences sharedPref = PreferenceManager + .getDefaultSharedPreferences(context); Set plugin_list = sharedPref.getStringSet("pref_plugins", null); boolean dev_enabled = sharedPref.getBoolean("pref_dev_checkbox", true); @@ -135,10 +148,11 @@ public class IITC_WebViewClient extends WebViewClient { if (plugin_list != null) { String[] plugin_array = plugin_list.toArray(new String[0]); - for(int i = 0; i < plugin_list.size(); i++) { + for (int i = 0; i < plugin_list.size(); i++) { Log.d("iitcm", "adding plugin " + plugin_array[i]); if (dev_enabled) - this.loadJS(iitc_path + "dev/plugins/" + plugin_array[i], false, view); + this.loadJS(iitc_path + "dev/plugins/" + plugin_array[i], + false, view); else this.loadJS("plugins/" + plugin_array[i], true, view); } @@ -153,20 +167,21 @@ public class IITC_WebViewClient extends WebViewClient { File[] files = directory.listFiles(); if (files != null) { for (int i = 0; i < files.length; ++i) { - if(this.loadJS(files[i].toString(), false, view)) - Log.d("iitcm", "loading additional plugin " + files[i].toString()); + if (this.loadJS(files[i].toString(), false, view)) + Log.d("iitcm", + "loading additional plugin " + files[i].toString()); } } } public void enableTracking(WebView view, boolean dev_enabled) { Log.d("iitcm", "enable tracking..."); - // load plugin from external storage if dev mode are enabled - if (dev_enabled) - this.loadJS(iitc_path + "dev/user-location.user.js", false, view); - else - // load plugin from asset folder - this.loadJS("user-location.user.js", true, view); + // load plugin from external storage if dev mode are enabled + if (dev_enabled) + this.loadJS(iitc_path + "dev/user-location.user.js", false, view); + else + // load plugin from asset folder + this.loadJS("user-location.user.js", true, view); } // read a file into a string @@ -174,7 +189,7 @@ public class IITC_WebViewClient extends WebViewClient { // if asset == true use the asset manager to open file public String fileToString(String file, boolean asset) { Scanner s = null; - String src= ""; + String src = ""; if (!asset) { File js_file = new File(file); try { @@ -196,7 +211,8 @@ public class IITC_WebViewClient extends WebViewClient { } } - if (s != null) src = s.hasNext() ? s.next() : ""; + if (s != null) + src = s.hasNext() ? s.next() : ""; return src; } @@ -208,21 +224,24 @@ public class IITC_WebViewClient extends WebViewClient { String js = fileToString(file, asset); if (js.equals("false")) return false; - else view.loadUrl("javascript:" + js); + else + view.loadUrl("javascript:" + js); return true; } - // Check every external resource if it’s okay to load it and maybe replace it + // Check every external resource if it’s okay to load it and maybe replace + // it // with our own content. This is used to block loading Niantic resources // which aren’t required and to inject IITC early into the site. // via http://stackoverflow.com/a/8274881/1684530 @Override - public WebResourceResponse shouldInterceptRequest (final WebView view, String url) { - if(url.contains("/css/common.css")) { + public WebResourceResponse shouldInterceptRequest(final WebView view, + String url) { + if (url.contains("/css/common.css")) { return new WebResourceResponse("text/css", "UTF-8", style); - } else if(url.contains("gen_dashboard.js")) { + } else if (url.contains("gen_dashboard.js")) { return this.iitcjs; - } else if(url.contains("/css/ap_icons.css") + } 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") @@ -241,13 +260,18 @@ public class IITC_WebViewClient extends WebViewClient { public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url.contains("ingress.com") || url.contains("appengine.google.com")) { // reload iitc if a poslink is clicked inside the app - if (url.contains("intel?ll=") || (url.contains("latE6") && url.contains("lngE6"))) { - Log.d("iitcm", "should be an internal clicked position link...reload script for: " + url); + if (url.contains("intel?ll=") + || (url.contains("latE6") && url.contains("lngE6"))) { + Log.d("iitcm", + "should be an internal clicked position link...reload script for: " + + url); ((IITC_Mobile) context).loadUrl(url); } return false; } else { - Log.d("iitcm", "no ingress intel link, start external app to load url: " + url); + Log.d("iitcm", + "no ingress intel link, start external app to load url: " + + url); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); context.startActivity(intent); return true;