aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorkoem <koem@petoria.de>2013-07-19 10:59:37 -0700
committerrsudev <rasch@munin-soft.de>2013-07-19 23:38:45 +0200
commit86c1882b5157fb85bf66d9c7c8d178d7e08a0f89 (patch)
tree611d7298e86e06a35d477835c17a7590991691a5 /main/src
parent00165dafe3e709eac2775a311b47c354ad5aae7c (diff)
downloadcgeo-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')
-rw-r--r--main/src/cgeo/geocaching/network/OAuthAuthorizationActivity.java1
-rw-r--r--main/src/cgeo/geocaching/settings/AuthorizeOcDePreference.java7
-rw-r--r--main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java7
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java12
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java26
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();
}