diff options
Diffstat (limited to 'main/src/cgeo/geocaching/settings')
5 files changed, 90 insertions, 39 deletions
diff --git a/main/src/cgeo/geocaching/settings/OAuthPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java index 3550947..06982f5 100644 --- a/main/src/cgeo/geocaching/settings/OAuthPreference.java +++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java @@ -23,8 +23,8 @@ public class OAuthPreference extends Preference { OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class), TWITTER(R.string.pref_fakekey_twitter_authorization, TwitterAuthorizationActivity.class); - public int prefKeyId; - public Class<?> authActivity; + public final int prefKeyId; + public final Class<?> authActivity; OAuthActivityMapping(int prefKeyId, Class<?> clazz) { this.prefKeyId = prefKeyId; diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java index 3e838ab..2ca8df1 100644 --- a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java +++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java @@ -8,7 +8,6 @@ import cgeo.geocaching.ui.dialog.Dialogs; import cgeo.geocaching.utils.Log; import ch.boye.httpclientandroidlib.HttpResponse; - import org.apache.commons.lang3.StringUtils; import android.app.ProgressDialog; diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index 0732866..ee97c13 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -313,16 +313,16 @@ public class Settings { return getBoolean(R.string.pref_connectorOXActive, false); } - public static boolean isPremiumMember() { + public static boolean isGCPremiumMember() { // Basic Member, Premium Member, ??? - return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getMemberStatus()); + return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getGCMemberStatus()); } - public static String getMemberStatus() { + public static String getGCMemberStatus() { return getString(R.string.pref_memberstatus, ""); } - public static boolean setMemberStatus(final String memberStatus) { + public static boolean setGCMemberStatus(final String memberStatus) { if (StringUtils.isBlank(memberStatus)) { return remove(R.string.pref_memberstatus); } @@ -478,7 +478,7 @@ public class Settings { } public static boolean getLoadDirImg() { - return !isPremiumMember() && getBoolean(R.string.pref_loaddirectionimg, true); + return !isGCPremiumMember() && getBoolean(R.string.pref_loaddirectionimg, true); } public static void setGcCustomDate(final String format) { @@ -506,7 +506,7 @@ public class Settings { } public static boolean isShowCaptcha() { - return !isPremiumMember() && getBoolean(R.string.pref_showcaptcha, false); + return !isGCPremiumMember() && getBoolean(R.string.pref_showcaptcha, false); } public static boolean isExcludeDisabledCaches() { diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 58acfc1..bcf6715 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -1,6 +1,7 @@ package cgeo.geocaching.settings; import cgeo.geocaching.CgeoApplication; +import cgeo.geocaching.DataStore; import cgeo.geocaching.Intents; import cgeo.geocaching.R; import cgeo.geocaching.SelectMapfileActivity; @@ -19,8 +20,10 @@ import cgeo.geocaching.utils.Log; import org.apache.commons.lang3.StringUtils; import org.openintents.intents.FileManagerIntents; +import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; +import android.content.res.Resources; import android.net.Uri; import android.os.Build; import android.os.Bundle; @@ -52,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 @@ -89,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.pref_fakekey_main_screen); - try { - if (main != null) { - int index = getPreference(R.string.pref_fakekey_services_screen).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); } } @@ -121,6 +126,7 @@ public class SettingsActivity extends PreferenceActivity { initSend2CgeoPreferences(); initServicePreferences(); initNavigationMenuPreferences(); + initMaintenanceButtons(); for (int k : new int[] { R.string.pref_username, R.string.pref_password, R.string.pref_pass_vote, R.string.pref_signature, @@ -141,9 +147,9 @@ public class SettingsActivity extends PreferenceActivity { getPreference(appEnum.preferenceKey).setEnabled(true); } } - getPreference(R.string.pref_fakekey_basicmembers_screen) - .setEnabled(!Settings.isPremiumMember()); - redrawScreen(R.string.pref_fakekey_navigation_menu_screen); + getPreference(R.string.preference_screen_basicmembers) + .setEnabled(!Settings.isGCPremiumMember()); + redrawScreen(R.string.preference_screen_navigation_menu); } private void initServicePreferences() { @@ -310,6 +316,35 @@ public class SettingsActivity extends PreferenceActivity { }); } + public void initMaintenanceButtons() { + Preference dirMaintenance = getPreference(R.string.pref_fakekey_preference_maintenance_directories); + dirMaintenance.setOnPreferenceClickListener(new OnPreferenceClickListener() { + @Override + public boolean onPreferenceClick(final Preference preference) { + // disable the button, as the cleanup runs in background and should not be invoked a second time + preference.setEnabled(false); + + Resources res = getResources(); + final SettingsActivity activity = SettingsActivity.this; + final ProgressDialog dialog = ProgressDialog.show(activity, res.getString(R.string.init_maintenance), res.getString(R.string.init_maintenance_directories), true, false); + new Thread() { + @Override + public void run() { + DataStore.removeObsoleteCacheDirectories(); + activity.runOnUiThread(new Runnable() { + @Override + public void run() { + dialog.dismiss(); + } + }); + } + }.start(); + + return true; + } + }); + } + private void initDbLocationPreference() { Preference p = getPreference(R.string.pref_dbonsdcard); p.setPersistent(false); @@ -336,21 +371,29 @@ public class SettingsActivity extends PreferenceActivity { } void initBasicMemberPreferences() { - getPreference(R.string.pref_fakekey_basicmembers_screen) - .setEnabled(!Settings.isPremiumMember()); + getPreference(R.string.preference_screen_basicmembers) + .setEnabled(!Settings.isGCPremiumMember()); getPreference(R.string.pref_loaddirectionimg) - .setEnabled(!Settings.isPremiumMember()); + .setEnabled(!Settings.isGCPremiumMember()); getPreference(R.string.pref_showcaptcha) - .setEnabled(!Settings.isPremiumMember()); + .setEnabled(!Settings.isGCPremiumMember()); - redrawScreen(R.string.pref_fakekey_services_screen); + redrawScreen(R.string.preference_screen_services); } - void redrawScreen(int key) { - PreferenceScreen screen = (PreferenceScreen) getPreference(key); - if (screen == null) { + /** + * Refresh a preference screen. Has no effect when called for a preference, that is not actually a preference + * screen. + * + * @param key + * Key of a preference screen. + */ + void redrawScreen(final int key) { + final Preference preference = getPreference(key); + if (!(preference instanceof PreferenceScreen)) { return; } + final PreferenceScreen screen = (PreferenceScreen) preference; ListAdapter adapter = screen.getRootAdapter(); if (adapter instanceof BaseAdapter) { ((BaseAdapter) adapter).notifyDataSetChanged(); @@ -399,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); } @@ -445,15 +488,15 @@ public class SettingsActivity extends PreferenceActivity { break; case R.string.pref_fakekey_ocde_authorization: setOCDEAuthTitle(); - redrawScreen(R.string.pref_fakekey_services_screen); + redrawScreen(R.string.preference_screen_ocde); break; case R.string.pref_fakekey_ocpl_authorization: setOCPLAuthTitle(); - redrawScreen(R.string.pref_fakekey_services_screen); + redrawScreen(R.string.preference_screen_ocpl); break; case R.string.pref_fakekey_twitter_authorization: setTwitterAuthTitle(); - redrawScreen(R.string.pref_fakekey_services_screen); + redrawScreen(R.string.preference_screen_twitter); break; default: throw new IllegalArgumentException(); @@ -582,6 +625,13 @@ public class SettingsActivity extends PreferenceActivity { preferenceActivity.addPreferencesFromResource(preferencesResId); } + @SuppressWarnings("deprecation") + @Override + public void setPreferenceScreen(PreferenceScreen preferenceScreen) { + // TODO replace with fragment based code + super.setPreferenceScreen(preferenceScreen); + } + private static boolean isPreference(final Preference preference, int preferenceKeyId) { return getKey(preferenceKeyId).equals(preference.getKey()); } diff --git a/main/src/cgeo/geocaching/settings/TemplateTextPreference.java b/main/src/cgeo/geocaching/settings/TemplateTextPreference.java index a703231..667b02b 100644 --- a/main/src/cgeo/geocaching/settings/TemplateTextPreference.java +++ b/main/src/cgeo/geocaching/settings/TemplateTextPreference.java @@ -2,6 +2,7 @@ package cgeo.geocaching.settings; import cgeo.geocaching.R; import cgeo.geocaching.activity.ActivityMixin; +import cgeo.geocaching.ui.dialog.Dialogs; import cgeo.geocaching.utils.LogTemplateProvider; import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate; @@ -49,6 +50,7 @@ public class TemplateTextPreference extends DialogPreference { editText = (EditText) view.findViewById(R.id.signature_dialog_text); editText.setText(getPersistedString(initialValue != null ? initialValue : StringUtils.EMPTY)); + Dialogs.moveCursorToEnd(editText); Button button = (Button) view.findViewById(R.id.signature_templates); button.setOnClickListener(new View.OnClickListener() { |
