diff options
| -rw-r--r-- | main/res/values/preference_keys.xml | 2 | ||||
| -rw-r--r-- | main/res/xml/preferences.xml | 6 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/ec/ECConnector.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/connector/gc/GCConnector.java | 2 | ||||
| -rw-r--r-- | main/src/cgeo/geocaching/settings/SettingsActivity.java | 34 |
5 files changed, 26 insertions, 20 deletions
diff --git a/main/res/values/preference_keys.xml b/main/res/values/preference_keys.xml index f542c33..d231795 100644 --- a/main/res/values/preference_keys.xml +++ b/main/res/values/preference_keys.xml @@ -8,9 +8,11 @@ <string name="preference_screen_main">fakekey_main_screen</string> <string name="preference_screen_services">fakekey_services_screen</string> + <string name="preference_screen_gc">preference_screen_gc</string> <string name="preference_screen_basicmembers">fakekey_basicmembers_screen</string> <string name="preference_screen_ocde">preference_screen_ocde</string> <string name="preference_screen_ocpl">preference_screen_ocpl</string> + <string name="preference_screen_ec">preference_screen_ec</string> <string name="preference_screen_twitter">preference_screen_twitter</string> <string name="preference_screen_navigation_menu">fakekey_navigation_menu_screen</string> <string name="pref_fakekey_ocde_authorization">fakekey_ocde_authorization</string> diff --git a/main/res/xml/preferences.xml b/main/res/xml/preferences.xml index c574eb4..ddd3dff 100644 --- a/main/res/xml/preferences.xml +++ b/main/res/xml/preferences.xml @@ -8,7 +8,9 @@ android:key="@string/preference_screen_services" android:title="@string/settings_title_services" > <PreferenceCategory android:title="@string/settings_category_geocaching" > - <PreferenceScreen android:title="@string/settings_title_gc" > + <PreferenceScreen + android:key="@string/preference_screen_gc" + android:title="@string/settings_title_gc" > <PreferenceCategory android:title="@string/settings_settings" > <cgeo.geocaching.settings.CheckBoxWithPopupPreference android:defaultValue="true" @@ -130,7 +132,7 @@ android:title="@string/settings_open_website" /> </PreferenceCategory> </PreferenceScreen> - <PreferenceScreen android:title="@string/settings_title_ec" > + <PreferenceScreen android:title="@string/settings_title_ec" android:key="@string/preference_screen_ec"> <PreferenceCategory android:title="@string/settings_settings" > <CheckBoxPreference android:defaultValue="false" diff --git a/main/src/cgeo/geocaching/connector/ec/ECConnector.java b/main/src/cgeo/geocaching/connector/ec/ECConnector.java index 6da076b..71716fe 100644 --- a/main/src/cgeo/geocaching/connector/ec/ECConnector.java +++ b/main/src/cgeo/geocaching/connector/ec/ECConnector.java @@ -140,7 +140,7 @@ public class ECConnector extends AbstractConnector implements ISearchByGeocode, // invoke settings activity to insert login details if (status == StatusCode.NO_LOGIN_INFO_STORED && fromActivity != null) { - SettingsActivity.jumpToServicesPage(fromActivity); + SettingsActivity.openForScreen(R.string.preference_screen_ec, fromActivity); } } return status == StatusCode.NO_ERROR; diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java index 9c6b831..5f28d17 100644 --- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java +++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java @@ -331,7 +331,7 @@ public class GCConnector extends AbstractConnector implements ISearchByGeocode, // invoke settings activity to insert login details if (status == StatusCode.NO_LOGIN_INFO_STORED && fromActivity != null) { - SettingsActivity.jumpToServicesPage(fromActivity); + SettingsActivity.openForScreen(R.string.preference_screen_gc, fromActivity); } } return status == StatusCode.NO_ERROR; diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index cdadb13..937ec2a 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -55,8 +55,7 @@ import java.util.Locale; */ public class SettingsActivity extends PreferenceActivity { - private static final String INTENT_GOTO = "GOTO"; - private static final int INTENT_GOTO_SERVICES = 1; + private static final String INTENT_OPEN_SCREEN = "OPEN_SCREEN"; /** * Enumeration for directory choosers. This is how we can retrieve information about the @@ -92,18 +91,21 @@ public class SettingsActivity extends PreferenceActivity { initPreferences(); Intent intent = getIntent(); - int gotoPage = intent.getIntExtra(INTENT_GOTO, 0); - if (gotoPage == INTENT_GOTO_SERVICES) { - // start with services screen - PreferenceScreen main = (PreferenceScreen) getPreference(R.string.preference_screen_main); - try { - if (main != null) { - int index = getPreference(R.string.preference_screen_services).getOrder(); - main.onItemClick(null, null, index, 0); - } - } catch (RuntimeException e) { - Log.e("could not open services preferences", e); - } + openInitialScreen(intent.getIntExtra(INTENT_OPEN_SCREEN, 0)); + } + + private void openInitialScreen(int initialScreen) { + if (initialScreen == 0) { + return; + } + PreferenceScreen screen = (PreferenceScreen) getPreference(initialScreen); + if (screen == null) { + return; + } + try { + setPreferenceScreen(screen); + } catch (RuntimeException e) { + Log.e("could not open preferences " + initialScreen, e); } } @@ -440,9 +442,9 @@ public class SettingsActivity extends PreferenceActivity { : R.string.settings_authorize)); } - public static void jumpToServicesPage(final Context fromActivity) { + public static void openForScreen(final int preferenceScreenKey, final Context fromActivity) { final Intent intent = new Intent(fromActivity, SettingsActivity.class); - intent.putExtra(INTENT_GOTO, INTENT_GOTO_SERVICES); + intent.putExtra(INTENT_OPEN_SCREEN, preferenceScreenKey); fromActivity.startActivity(intent); } |
