diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index ee24a714..8529d8a4 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="0.2.4" > + + diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index 1278bd47..fa53e0e6 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -5,10 +5,10 @@ android:showAsAction="ifRoom" android:title="@string/reload"> - + android:title="@string/action_settings"> Print Version Clear Cache Get Location + Build Version + + Force desktop mode \ No newline at end of file diff --git a/mobile/res/xml/preferences.xml b/mobile/res/xml/preferences.xml new file mode 100644 index 00000000..2442215c --- /dev/null +++ b/mobile/res/xml/preferences.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index bf28e9c3..31a0a612 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -7,10 +7,10 @@ import com.cradle.iitc_mobile.R; import android.net.Uri; import android.os.Bundle; import android.os.Handler; +import android.preference.PreferenceManager; import android.app.Activity; import android.content.Intent; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager.NameNotFoundException; +import android.content.SharedPreferences; import android.util.Log; import android.view.Menu; import android.view.MenuItem; @@ -20,7 +20,8 @@ public class IITC_Mobile extends Activity { private IITC_WebView iitc_view; private boolean back_button_pressed = false; - + private boolean desktop = false; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -45,16 +46,30 @@ public class IITC_Mobile extends Activity { Log.d("Intent received", "url: " + url); if (url.contains("ingress.com")) { Log.d("Intent received", "loading url..."); - iitc_view.loadUrl(url); + iitc_view.loadUrl(addUrlParam(url)); } } else { Log.d("No Intent call", "loading https://www.ingress.com/intel"); - iitc_view.loadUrl("https://www.ingress.com/intel"); + iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel")); } } } - + + @Override + protected void onResume() { + super.onResume(); + + // reload page if, the desktop/mobile pref has changed + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + if (desktop != sharedPref.getBoolean("pref_force_desktop", false)) { + Log.d("pref changed", "force Desktop/Mobile changed...reloading"); + desktop = sharedPref.getBoolean("pref_force_desktop", false); + iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel")); + injectJS(); + } + } + // save instance state to avoid reloading on orientation change @Override protected void onSaveInstanceState(Bundle outState) { @@ -94,24 +109,8 @@ public class IITC_Mobile extends Activity { // Handle item selection switch (item.getItemId()) { case R.id.reload_button: - iitc_view.loadUrl("https://www.ingress.com/intel"); - try { - iitc_view.getWebViewClient().loadIITC_JS(this); - } catch (IOException e1) { - e1.printStackTrace(); - } catch (NullPointerException e2) { - e2.printStackTrace(); - } - return true; - // print version number - case R.id.version_num: - PackageInfo pinfo; - try { - pinfo = getPackageManager().getPackageInfo(getPackageName(), 0); - Toast.makeText(this, "Build version: " + pinfo.versionName, Toast.LENGTH_SHORT).show(); - } catch (NameNotFoundException e) { - e.printStackTrace(); - } + iitc_view.loadUrl(addUrlParam("https://www.ingress.com/intel")); + injectJS(); return true; // clear cache case R.id.cache_clear: @@ -123,8 +122,31 @@ public class IITC_Mobile extends Activity { case R.id.locate: iitc_view.loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});"); return true; + case R.id.settings: + startActivity(new Intent(this, IITC_Settings.class)); + return true; default: return super.onOptionsItemSelected(item); } } + + private void injectJS() { + try { + iitc_view.getWebViewClient().loadIITC_JS(this); + } catch (IOException e1) { + e1.printStackTrace(); + } catch (NullPointerException e2) { + e2.printStackTrace(); + } + } + + private String addUrlParam(String url) { + SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this); + this.desktop = sharedPref.getBoolean("pref_force_desktop", false); + + if (desktop) + return (url + "?vp=f"); + else + return (url + "?vp=m"); + } } diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java new file mode 100644 index 00000000..a2df2969 --- /dev/null +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java @@ -0,0 +1,16 @@ +package com.cradle.iitc_mobile; + +import android.app.Activity; +import android.os.Bundle; + +public class IITC_Settings extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + // Display the fragment as the main content. + getFragmentManager().beginTransaction() + .replace(android.R.id.content, new IITC_SettingsFragment()) + .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 new file mode 100644 index 00000000..07a0f371 --- /dev/null +++ b/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java @@ -0,0 +1,31 @@ +package com.cradle.iitc_mobile; + +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.content.pm.PackageManager.NameNotFoundException; +import android.os.Bundle; +import android.preference.ListPreference; +import android.preference.PreferenceFragment; + +public class IITC_SettingsFragment extends PreferenceFragment { + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + addPreferencesFromResource(R.xml.preferences); + + // 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); + version = info.versionName; + } + catch (NameNotFoundException e) { + } + pref_build_version.setSummary(version); + } +}