diff options
| author | Arne Schwabe <arne@rfc2549.org> | 2014-04-26 21:51:41 +0200 |
|---|---|---|
| committer | Arne Schwabe <arne@rfc2549.org> | 2014-05-17 13:08:16 +0200 |
| commit | 786eccacbb285696d504d08ba02c61400ce063a2 (patch) | |
| tree | 1f573c98796326d9732cd56f0b3e8fa1bdfb44b9 /main | |
| parent | 7ed9d23ec6a4ca513ef6b8b2fced47aac26d7c49 (diff) | |
| download | cgeo-786eccacbb285696d504d08ba02c61400ce063a2.zip cgeo-786eccacbb285696d504d08ba02c61400ce063a2.tar.gz cgeo-786eccacbb285696d504d08ba02c61400ce063a2.tar.bz2 | |
Allow the user to choose always displaying the overflow button
Manually Cherry pick from rsudev/actionbar_schwabe: Always display the overflow menu button.
Allow user to decide if the overflow should be shown or not. Since this
only works on 3.0-4.3 hide the option on other platforms.
Diffstat (limited to 'main')
| -rw-r--r-- | main/res/values/preference_keys.xml | 2 | ||||
| -rw-r--r-- | main/res/values/strings.xml | 2 | ||||
| -rw-r--r-- | main/res/xml/preferences.xml | 7 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/CgeoApplication.java | 22 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/settings/Settings.java | 4 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/settings/SettingsActivity.java | 11 |
6 files changed, 48 insertions, 0 deletions
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml index c26f5b3..94a6d2a 100644 --- a/main/res/values/preference_keys.xml +++ b/main/res/values/preference_keys.xml @@ -46,6 +46,7 @@ <string name="pref_showaddress">showaddress</string> <string name="pref_useenglish">useenglish</string> <string name="pref_units">units</string> + <string name="pref_alwaysshowoverflowmenu">alwaysshowoverflowmenu</string> <string name="pref_autoloaddesc">autoloaddesc</string> <string name="pref_ratingwanted">ratingwanted</string> <string name="pref_friendlogswanted">friendlogswanted</string> @@ -168,4 +169,5 @@ <string name="pref_twitter_cache_message">twitter_cache_message</string> <string name="pref_twitter_trackable_message">twitter_trackable_message</string> <string name="pref_ec_icons">ec_icons</string> + <string name="pref_appearance">pref_appearence</string> </resources>
\ No newline at end of file diff --git a/main/res/values/strings.xml b/main/res/values/strings.xml index 0a8d3fd..b164070 100644 --- a/main/res/values/strings.xml +++ b/main/res/values/strings.xml @@ -466,6 +466,8 @@ <string name="init_captcha">Show CAPTCHA</string> <string name="init_summary_captcha">Show CAPTCHA if necessary (only Basic Member)</string> <string name="init_useenglish">Use English</string> + <string name="init_showoverflowmenu">Always show overflow menu</string> + <string name="init_showoverflow_summary">Always show the overflow menu (three dots ⋮) even if the device has a menu button (Restart needed)</string> <string name="init_summary_useenglish">Use English language for c:geo (Restart needed)</string> <string name="init_exclude">Exclude Own and Found</string> <string name="init_summary_exclude">Exclude caches you own or have found</string> diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml index 76a6407..0bb419e 100644 --- a/main/res/xml/preferences.xml +++ b/main/res/xml/preferences.xml @@ -375,6 +375,7 @@ </PreferenceCategory> </PreferenceScreen> <PreferenceScreen + android:key="@string/pref_appearance" android:icon="?attr/settings_eye" android:title="@string/settings_title_appearance" > <CheckBoxPreference @@ -402,6 +403,12 @@ android:key="@string/pref_units" android:summary="@string/init_summary_units" android:title="@string/init_units" /> + <!-- this preference is only shown on < 4.4 devices, 4.4 unconditionally enables it --> + <CheckBoxPreference + android:title="@string/init_showoverflowmenu" + android:summary="@string/init_showoverflow_summary" + android:key="@string/pref_alwaysshowoverflowmenu" + android:defaultValue="false" /> </PreferenceScreen> <PreferenceScreen android:icon="?attr/settings_details" diff --git a/main/src/cgeo/geocaching/CgeoApplication.java b/main/src/cgeo/geocaching/CgeoApplication.java index d503969..1456b0e 100644 --- a/main/src/cgeo/geocaching/CgeoApplication.java +++ b/main/src/cgeo/geocaching/CgeoApplication.java @@ -3,6 +3,7 @@ package cgeo.geocaching; import cgeo.geocaching.sensors.DirectionProvider; import cgeo.geocaching.sensors.GeoDataProvider; import cgeo.geocaching.sensors.IGeoData; +import cgeo.geocaching.settings.Settings; import cgeo.geocaching.utils.Log; import rx.Observable; @@ -10,6 +11,9 @@ import rx.functions.Action1; import rx.observables.ConnectableObservable; import android.app.Application; +import android.view.ViewConfiguration; + +import java.lang.reflect.Field; import java.io.IOException; import java.lang.Thread.UncaughtExceptionHandler; @@ -66,6 +70,24 @@ public class CgeoApplication extends Application { } @Override + public void onCreate() { + if (Settings.isAlwaysShowOverlfowMenu()) { + try { + ViewConfiguration config = ViewConfiguration.get(this); + Field menuKeyField = ViewConfiguration.class.getDeclaredField("sHasPermanentMenuKey"); + + if (menuKeyField != null) { + menuKeyField.setAccessible(true); + menuKeyField.setBoolean(config, false); + } + } catch (Exception ex) { + // Ignore + } + } + } + + + @Override public void onLowMemory() { Log.i("Cleaning applications cache."); DataStore.removeAllFromCache(); diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 7a4dfdd..a527fc5 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -557,6 +557,10 @@ public class Settings { return getBoolean(R.string.pref_units, getImperialUnitsDefault()); } + public static boolean isAlwaysShowOverlfowMenu() { + return getBoolean(R.string.pref_alwaysshowoverflowmenu, false); + } + static boolean getImperialUnitsDefault() { final String countryCode = Locale.getDefault().getCountry(); return "US".equals(countryCode) // USA diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 74a9b32..c7933bd 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -90,8 +90,19 @@ public class SettingsActivity extends PreferenceActivity { SettingsActivity.addPreferencesFromResource(this, R.xml.preferences); initPreferences(); + /* Remove the show overflow preference on Android version where the platform always or never + * shows the overflow menu and the app cannot influence the behaviour + */ + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB || Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN_MR2) { + Preference pref = findPreference(this, getString(R.string.pref_alwaysshowoverflowmenu)); + PreferenceScreen appearence = (PreferenceScreen) findPreference(this, getString(R.string.pref_appearance)); + appearence.removePreference(pref); + + } Intent intent = getIntent(); openInitialScreen(intent.getIntExtra(INTENT_OPEN_SCREEN, 0)); + + } private void openInitialScreen(int initialScreen) { |
