From 0e298c3526b1c954371f350e6ddf2babd0ccfd51 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 2 Apr 2013 17:03:35 +0200 Subject: [PATCH] added IITC version info to settings --- mobile/AndroidManifest.xml | 2 +- mobile/res/values/strings.xml | 1 + mobile/res/xml/preferences.xml | 6 ++++++ .../src/com/cradle/iitc_mobile/IITC_Mobile.java | 4 +++- .../com/cradle/iitc_mobile/IITC_Settings.java | 6 +++++- .../iitc_mobile/IITC_SettingsFragment.java | 13 +++++++++++-- .../cradle/iitc_mobile/IITC_WebViewClient.java | 17 +++++++++++++++++ 7 files changed, 44 insertions(+), 5 deletions(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 8529d8a4..85ba5142 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -2,7 +2,7 @@ + android:versionName="0.2.5" > Get Location local Build Version + IITC Version Force desktop mode Nice for tablets, looks awful on smartphones diff --git a/mobile/res/xml/preferences.xml b/mobile/res/xml/preferences.xml index f0fa675c..3a00c39c 100644 --- a/mobile/res/xml/preferences.xml +++ b/mobile/res/xml/preferences.xml @@ -21,5 +21,11 @@ android:title="@string/build_version" android:enabled="false" android:selectable="false" /> + + \ 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 1bf37ed9..8c3255f7 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -128,7 +128,9 @@ public class IITC_Mobile extends Activity { iitc_view.loadUrl("javascript: window.map.locate({setView : true, maxZoom: 13});"); return true; case R.id.settings: - startActivity(new Intent(this, IITC_Settings.class)); + Intent intent = new Intent(this, IITC_Settings.class); + intent.putExtra("iitc_version", iitc_view.getWebViewClient().getIITCVersion()); + startActivity(intent); return true; default: return super.onOptionsItemSelected(item); diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java index a2df2969..2e49ab2f 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Settings.java @@ -4,13 +4,17 @@ import android.app.Activity; import android.os.Bundle; public class IITC_Settings extends Activity { + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + IITC_SettingsFragment settings = new IITC_SettingsFragment(); + settings.setArguments(getIntent().getExtras()); + // Display the fragment as the main content. getFragmentManager().beginTransaction() - .replace(android.R.id.content, new IITC_SettingsFragment()) + .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 7580f634..34e3c0c0 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_SettingsFragment.java @@ -11,12 +11,15 @@ import android.preference.Preference.OnPreferenceChangeListener; import android.preference.PreferenceFragment; public class IITC_SettingsFragment extends PreferenceFragment { - - + + String iitc_version; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + iitc_version = getArguments().getString("iitc_version"); + addPreferencesFromResource(R.xml.preferences); // set build version @@ -28,15 +31,21 @@ public class IITC_SettingsFragment extends PreferenceFragment { version = info.versionName; } catch (NameNotFoundException e) { + e.printStackTrace(); } pref_build_version.setSummary(version); + // set iitc version + ListPreference pref_iitc_version = (ListPreference) findPreference("pref_iitc_version"); + pref_iitc_version.setSummary(iitc_version); + // 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; } }); diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java index 2b142058..43efed0d 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebViewClient.java @@ -21,6 +21,7 @@ public class IITC_WebViewClient extends WebViewClient { private static final ByteArrayInputStream empty = new ByteArrayInputStream("".getBytes()); private WebResourceResponse iitcjs; + private String js = null; public IITC_WebViewClient(Context c) { try { @@ -30,6 +31,20 @@ public class IITC_WebViewClient extends WebViewClient { } } + public String getIITCVersion() { + String header = js.substring(js.indexOf("==UserScript=="), js.indexOf("==/UserScript==")); + // remove new line comments + header = header.replace("\n//", ""); + // get a list of key-value + String[] attributes = header.split(" +"); + String iitc_version = "not found"; + for (int i = 0; i < attributes.length; i++) { + // search vor version and use the value + if (attributes[i].contains("@version")) iitc_version = attributes[i+1]; + } + return iitc_version; + } + public void loadIITC_JS(Context c) throws java.io.IOException { // in developer options, 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 @@ -49,6 +64,8 @@ public class IITC_WebViewClient extends WebViewClient { js = new String(buffer); } + this.js = js; + // 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