diff options
| author | koem <koem@petoria.de> | 2013-07-19 10:59:37 -0700 |
|---|---|---|
| committer | rsudev <rasch@munin-soft.de> | 2013-07-19 23:38:45 +0200 |
| commit | 86c1882b5157fb85bf66d9c7c8d178d7e08a0f89 (patch) | |
| tree | 611d7298e86e06a35d477835c17a7590991691a5 /main/src | |
| parent | 00165dafe3e709eac2775a311b47c354ad5aae7c (diff) | |
| download | cgeo-86c1882b5157fb85bf66d9c7c8d178d7e08a0f89.zip cgeo-86c1882b5157fb85bf66d9c7c8d178d7e08a0f89.tar.gz cgeo-86c1882b5157fb85bf66d9c7c8d178d7e08a0f89.tar.bz2 | |
Fixes #2992 - Settings: show "authorize c:geo again" when appropriate
This was a little more complicated than expected ... changing titles of settings is a task for someone who killed his grandmother.
When authorization is already done, settings for twitter auth and OCDE auth show "authorize c:geo again".
Diffstat (limited to 'main/src')
5 files changed, 49 insertions, 4 deletions
diff --git a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java index 751443e..8dc8b03 100644 --- a/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java +++ b/main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java @@ -82,6 +82,7 @@ public abstract class OAuthAuthorizationActivity extends AbstractActivity { pinEntryButton.setVisibility(View.GONE); + setResult(RESULT_OK); finish(); } else { showToast(getErrAuthProcess()); diff --git a/main/src/cgeo/geocaching/settings/AuthorizeOcDePreference.java b/main/src/cgeo/geocaching/settings/AuthorizeOcDePreference.java index 4ef3086..28807eb 100644 --- a/main/src/cgeo/geocaching/settings/AuthorizeOcDePreference.java +++ b/main/src/cgeo/geocaching/settings/AuthorizeOcDePreference.java @@ -25,16 +25,21 @@ public class AuthorizeOcDePreference extends Preference { @Override protected View onCreateView(ViewGroup parent) { + final SettingsActivity activity = (SettingsActivity) getContext(); + setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent authIntent = new Intent(preference.getContext(), OCAuthorizationActivity.class); - preference.getContext().startActivity(authIntent); + activity.startActivityForResult(authIntent, + SettingsActivity.OAUTH_OCDE_REQUEST); return false; // no shared preference has to be changed } }); + + activity.setOCDEAuthTitle(); return super.onCreateView(parent); } } diff --git a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java b/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java index 1a6d908..ed3e159 100644 --- a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java +++ b/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java @@ -25,16 +25,21 @@ public class AuthorizeTwitterPreference extends Preference { @Override protected View onCreateView(ViewGroup parent) { + final SettingsActivity activity = (SettingsActivity) getContext(); + setOnPreferenceClickListener(new OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference preference) { Intent authIntent = new Intent(preference.getContext(), TwitterAuthorizationActivity.class); - preference.getContext().startActivity(authIntent); + activity.startActivityForResult(authIntent, + SettingsActivity.OAUTH_TWITTER_REQUEST); return false; // no shared preference has to be changed } }); + + activity.setTwitterAuthTitle(); return super.onCreateView(parent); } } diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java index e44f9c0..aabb13a 100644 --- a/main/src/cgeo/geocaching/settings/Settings.java +++ b/main/src/cgeo/geocaching/settings/Settings.java @@ -316,6 +316,11 @@ public final class Settings { return getString(R.string.pref_ocde_tokensecret, ""); } + public static boolean hasOCDEAuthorization() { + return StringUtils.isNotBlank(getOCDETokenPublic()) + && StringUtils.isNotBlank(getOCDETokenSecret()); + } + public static void setOCDETokens(final String tokenPublic, final String tokenSecret, boolean enableOcDe) { putString(R.string.pref_ocde_tokenpublic, tokenPublic); @@ -735,6 +740,11 @@ public final class Settings { } + public static boolean hasTwitterAuthorization() { + return StringUtils.isNotBlank(getTokenPublic()) + && StringUtils.isNotBlank(getTokenSecret()); + } + public static void setTwitterTokens(final String tokenPublic, final String tokenSecret, boolean enableTwitter) { putString(R.string.pref_twitter_token_public, tokenPublic); @@ -753,7 +763,7 @@ public final class Settings { } public static ImmutablePair<String, String> getTempToken() { - String tokenPublic = getString(R.string.pref_twitter_token_public, null); + String tokenPublic = getString(R.string.pref_temp_twitter_token_public, null); String tokenSecret = getString(R.string.pref_temp_twitter_token_secret, null); return new ImmutablePair<String, String>(tokenPublic, tokenSecret); } diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java index 1fc2ba4..61046b3 100644 --- a/main/src/cgeo/geocaching/settings/SettingsActivity.java +++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java @@ -64,6 +64,8 @@ public class SettingsActivity extends PreferenceActivity { private static final int INTENT_GOTO_SERVICES = 1; private static final int DIR_CHOOSER_MAPS_DIRECTORY_REQUEST = 4; + static final int OAUTH_OCDE_REQUEST = 5; + static final int OAUTH_TWITTER_REQUEST = 6; private EditText signatureText; @@ -377,7 +379,7 @@ public class SettingsActivity extends PreferenceActivity { redrawScreen(R.string.pref_fakekey_services_screen); } - private void redrawScreen(int key) { + void redrawScreen(int key) { PreferenceScreen screen = (PreferenceScreen) SettingsActivity .findPreference(this, getKey(key)); if (screen == null) { @@ -393,6 +395,20 @@ public class SettingsActivity extends PreferenceActivity { Settings.putString(R.string.pref_webDeviceName, Settings.getWebDeviceName()); } + void setOCDEAuthTitle() { + SettingsActivity.findPreference(this, getKey(R.string.pref_fakekey_ocde_authorization)) + .setTitle(getString(Settings.hasOCDEAuthorization() + ? R.string.init_reregister_oc_de + : R.string.init_register_oc_de)); + } + + void setTwitterAuthTitle() { + SettingsActivity.findPreference(this, getKey(R.string.pref_fakekey_twitter_authorization)) + .setTitle(getString(Settings.hasTwitterAuthorization() + ? R.string.init_twitter_reauthorize + : R.string.init_twitter_authorize)); + } + public static void jumpToServicesPage(final Context fromActivity) { final Intent intent = new Intent(fromActivity, SettingsActivity.class); intent.putExtra(INTENT_GOTO, INTENT_GOTO_SERVICES); @@ -426,6 +442,14 @@ public class SettingsActivity extends PreferenceActivity { SettingsActivity.findPreference(this, getKey(R.string.pref_mapDirectory)).setSummary( Settings.getMapFileDirectory()); break; + case OAUTH_OCDE_REQUEST: + setOCDEAuthTitle(); + redrawScreen(R.string.pref_fakekey_services_screen); + break; + case OAUTH_TWITTER_REQUEST: + setTwitterAuthTitle(); + redrawScreen(R.string.pref_fakekey_services_screen); + break; default: throw new IllegalArgumentException(); } |
