aboutsummaryrefslogtreecommitdiffstats
path: root/main/src
diff options
context:
space:
mode:
authorkoem <koem@petoria.de>2013-07-17 17:12:52 +0200
committerkoem <koem@petoria.de>2013-07-19 10:32:46 +0200
commit5ec685e4c4f44e0101a75c63ebea39d2ae87d7dc (patch)
treeea468dbdfd21f3ecbc30e00868c2fc2a75e485ef /main/src
parent141c5696becd8a63d25132f1b5b139fbc6a3c179 (diff)
downloadcgeo-5ec685e4c4f44e0101a75c63ebea39d2ae87d7dc.zip
cgeo-5ec685e4c4f44e0101a75c63ebea39d2ae87d7dc.tar.gz
cgeo-5ec685e4c4f44e0101a75c63ebea39d2ae87d7dc.tar.bz2
Fixex #2978 - Settings: "System" instead of "More Options"
- moved basic member settings to subscreen in gc-services - new settings screen "Navigation" - renamed "More Option" to "System"
Diffstat (limited to 'main/src')
-rw-r--r--main/src/cgeo/geocaching/connector/gc/GCConnector.java2
-rw-r--r--main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java16
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java32
3 files changed, 34 insertions, 16 deletions
diff --git a/main/src/cgeo/geocaching/connector/gc/GCConnector.java b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
index 44d6e8f..e6fff79 100644
--- a/main/src/cgeo/geocaching/connector/gc/GCConnector.java
+++ b/main/src/cgeo/geocaching/connector/gc/GCConnector.java
@@ -309,7 +309,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.startWithServicesPage(fromActivity);
+ SettingsActivity.jumpToServicesPage(fromActivity);
}
}
return status == StatusCode.NO_ERROR;
diff --git a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
index 877a6c7..3ecd1b2 100644
--- a/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
+++ b/main/src/cgeo/geocaching/settings/CheckGcCredentialsPreference.java
@@ -1,6 +1,5 @@
package cgeo.geocaching.settings;
-import cgeo.geocaching.settings.Settings;
import cgeo.geocaching.R;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.connector.gc.Login;
@@ -12,7 +11,6 @@ import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
import android.annotation.SuppressLint;
-import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.res.Resources;
@@ -48,7 +46,7 @@ public class CheckGcCredentialsPreference extends Preference {
private class GcLoginCheck implements OnPreferenceClickListener {
private Resources res;
- private Activity activity;
+ private SettingsActivity activity;
private ProgressDialog loginDialog;
@SuppressLint("HandlerLeak")
@@ -76,17 +74,19 @@ public class CheckGcCredentialsPreference extends Preference {
} catch (Exception e) {
ActivityMixin.showToast(activity, R.string.err_login_failed);
Log.e("SettingsActivity.logInHandler", e);
- }
-
- if (loginDialog != null && loginDialog.isShowing()) {
- loginDialog.dismiss();
+ } finally {
+ if (loginDialog != null && loginDialog.isShowing()) {
+ loginDialog.dismiss();
+ }
+ // enable/disable basic member preferences
+ activity.initBasicMemberPreferences();
}
}
};
@Override
public boolean onPreferenceClick(Preference preference) {
- this.activity = (Activity) CheckGcCredentialsPreference.this.getContext();
+ this.activity = (SettingsActivity) CheckGcCredentialsPreference.this.getContext();
this.res = activity.getResources();
ImmutablePair<String, String> credentials = Settings.getGcLogin();
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index 23ae7bd..1fc2ba4 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -38,7 +38,9 @@ import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
+import android.widget.BaseAdapter;
import android.widget.EditText;
+import android.widget.ListAdapter;
import java.io.File;
import java.util.ArrayList;
@@ -156,7 +158,7 @@ public class SettingsActivity extends PreferenceActivity {
}
};
- // workaround, because OnContextItemSelected nor onMenuItemSelected is never called
+ // workaround, because OnContextItemSelected and onMenuItemSelected are never called
void setSignatureTextView(final EditText view) {
this.signatureText = view;
}
@@ -364,18 +366,34 @@ public class SettingsActivity extends PreferenceActivity {
});
}
- private void initBasicMemberPreferences() {
- SettingsActivity.findPreference(this, getKey(R.string.pref_loaddirectionimg)).setEnabled(
- !Settings.isPremiumMember());
- SettingsActivity.findPreference(this, getKey(R.string.pref_showcaptcha)).setEnabled(
- !Settings.isPremiumMember());
+ void initBasicMemberPreferences() {
+ SettingsActivity.findPreference(this, getKey(R.string.pref_fakekey_basicmembers_screen))
+ .setEnabled(!Settings.isPremiumMember());
+ SettingsActivity.findPreference(this, getKey(R.string.pref_loaddirectionimg))
+ .setEnabled(!Settings.isPremiumMember());
+ SettingsActivity.findPreference(this, getKey(R.string.pref_showcaptcha))
+ .setEnabled(!Settings.isPremiumMember());
+
+ redrawScreen(R.string.pref_fakekey_services_screen);
+ }
+
+ private void redrawScreen(int key) {
+ PreferenceScreen screen = (PreferenceScreen) SettingsActivity
+ .findPreference(this, getKey(key));
+ if (screen == null) {
+ return;
+ }
+ ListAdapter adapter = screen.getRootAdapter();
+ if (adapter instanceof BaseAdapter) {
+ ((BaseAdapter) adapter).notifyDataSetChanged();
+ }
}
private static void initSend2CgeoPreferences() {
Settings.putString(R.string.pref_webDeviceName, Settings.getWebDeviceName());
}
- public static void startWithServicesPage(final Context fromActivity) {
+ public static void jumpToServicesPage(final Context fromActivity) {
final Intent intent = new Intent(fromActivity, SettingsActivity.class);
intent.putExtra(INTENT_GOTO, INTENT_GOTO_SERVICES);
fromActivity.startActivity(intent);