aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/settings
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/settings')
-rw-r--r--main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java46
-rw-r--r--main/src/cgeo/geocaching/settings/LogSignaturePreference.java60
-rw-r--r--main/src/cgeo/geocaching/settings/OAuthPreference.java (renamed from main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java)46
-rw-r--r--main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java2
-rw-r--r--main/src/cgeo/geocaching/settings/Settings.java131
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java102
-rw-r--r--main/src/cgeo/geocaching/settings/TemplateTextPreference.java111
7 files changed, 233 insertions, 265 deletions
diff --git a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java b/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java
deleted file mode 100644
index 1fdd0de..0000000
--- a/main/src/cgeo/geocaching/settings/AuthorizeTwitterPreference.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package cgeo.geocaching.settings;
-
-import cgeo.geocaching.R;
-import cgeo.geocaching.twitter.TwitterAuthorizationActivity;
-
-import android.content.Context;
-import android.content.Intent;
-import android.preference.Preference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class AuthorizeTwitterPreference extends Preference {
-
- public AuthorizeTwitterPreference(Context context) {
- super(context);
- }
-
- public AuthorizeTwitterPreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public AuthorizeTwitterPreference(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @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);
- activity.startActivityForResult(authIntent,
- R.string.pref_fakekey_twitter_authorization);
-
- return false; // no shared preference has to be changed
- }
- });
-
- activity.setTwitterAuthTitle();
- return super.onCreateView(parent);
- }
-}
diff --git a/main/src/cgeo/geocaching/settings/LogSignaturePreference.java b/main/src/cgeo/geocaching/settings/LogSignaturePreference.java
deleted file mode 100644
index d0c9739..0000000
--- a/main/src/cgeo/geocaching/settings/LogSignaturePreference.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package cgeo.geocaching.settings;
-
-import cgeo.geocaching.R;
-
-import android.content.Context;
-import android.preference.DialogPreference;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.Button;
-import android.widget.EditText;
-
-public class LogSignaturePreference extends DialogPreference {
-
- private SettingsActivity settingsActivity;
- private EditText editText;
-
- public LogSignaturePreference(Context context, AttributeSet attrs) {
- super(context, attrs);
- init();
- }
-
- public LogSignaturePreference(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- init();
- }
-
- private void init() {
- setDialogLayoutResource(R.layout.log_signature_preference_dialog);
- }
-
- @Override
- protected void onBindDialogView(View view) {
- settingsActivity = (SettingsActivity) this.getContext();
-
- editText = (EditText) view.findViewById(R.id.signature_dialog_text);
- editText.setText(getPersistedString(""));
- settingsActivity.setSignatureTextView(editText);
-
- Button templates = (Button) view.findViewById(R.id.signature_templates);
- settingsActivity.registerForContextMenu(templates);
- templates.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View templates) {
- settingsActivity.openContextMenu(templates);
- }
- });
-
- super.onBindDialogView(view);
- }
-
- @Override
- protected void onDialogClosed(boolean positiveResult) {
- if (positiveResult) {
- String text = editText.getText().toString();
- persistString(text);
- callChangeListener(text);
- }
- super.onDialogClosed(positiveResult);
- }
-}
diff --git a/main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java b/main/src/cgeo/geocaching/settings/OAuthPreference.java
index f5d6a57..3550947 100644
--- a/main/src/cgeo/geocaching/settings/AuthorizeOcPreference.java
+++ b/main/src/cgeo/geocaching/settings/OAuthPreference.java
@@ -1,9 +1,10 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.connector.oc.OCDEAuthorizationActivity;
import cgeo.geocaching.connector.oc.OCPLAuthorizationActivity;
+import cgeo.geocaching.twitter.TwitterAuthorizationActivity;
import android.content.Context;
import android.content.Intent;
@@ -12,49 +13,50 @@ import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
-public class AuthorizeOcPreference extends Preference {
+public class OAuthPreference extends Preference {
private static final int NO_KEY = -1;
- private enum OCAuthorizations {
+ private enum OAuthActivityMapping {
NONE(NO_KEY, null),
OCDE(R.string.pref_fakekey_ocde_authorization, OCDEAuthorizationActivity.class),
- OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class);
+ OCPL(R.string.pref_fakekey_ocpl_authorization, OCPLAuthorizationActivity.class),
+ TWITTER(R.string.pref_fakekey_twitter_authorization, TwitterAuthorizationActivity.class);
public int prefKeyId;
public Class<?> authActivity;
- OCAuthorizations(int prefKeyId, Class<?> clazz) {
+ OAuthActivityMapping(int prefKeyId, Class<?> clazz) {
this.prefKeyId = prefKeyId;
this.authActivity = clazz;
}
}
- private final OCAuthorizations ocAuth;
+ private final OAuthActivityMapping oAuthMapping;
- private OCAuthorizations getAuthorization() {
+ private OAuthActivityMapping getAuthorization() {
final String prefKey = getKey();
- for (OCAuthorizations auth : OCAuthorizations.values()) {
- if (auth.prefKeyId != NO_KEY && prefKey.equals(cgeoapplication.getInstance().getString(auth.prefKeyId))) {
+ for (OAuthActivityMapping auth : OAuthActivityMapping.values()) {
+ if (auth.prefKeyId != NO_KEY && prefKey.equals(CgeoApplication.getInstance().getString(auth.prefKeyId))) {
return auth;
}
}
- return OCAuthorizations.NONE;
+ return OAuthActivityMapping.NONE;
}
- public AuthorizeOcPreference(Context context) {
+ public OAuthPreference(Context context) {
super(context);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
- public AuthorizeOcPreference(Context context, AttributeSet attrs) {
+ public OAuthPreference(Context context, AttributeSet attrs) {
super(context, attrs);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
- public AuthorizeOcPreference(Context context, AttributeSet attrs, int defStyle) {
+ public OAuthPreference(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
- this.ocAuth = getAuthorization();
+ this.oAuthMapping = getAuthorization();
}
@Override
@@ -64,17 +66,17 @@ public class AuthorizeOcPreference extends Preference {
setOnPreferenceClickListener(new OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
- if (ocAuth.authActivity != null) {
- Intent authIntent = new Intent(preference.getContext(),
- ocAuth.authActivity);
- activity.startActivityForResult(authIntent,
- ocAuth.prefKeyId);
+ if (oAuthMapping.authActivity != null) {
+ Intent authIntent = new Intent(preference.getContext(),
+ oAuthMapping.authActivity);
+ activity.startActivityForResult(authIntent,
+ oAuthMapping.prefKeyId);
}
return false; // no shared preference has to be changed
}
});
- activity.setOcAuthTitle(ocAuth.prefKeyId);
+ activity.setOcAuthTitle(oAuthMapping.prefKeyId);
return super.onCreateView(parent);
}
}
diff --git a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
index a019c4a..fbf08fa 100644
--- a/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
+++ b/main/src/cgeo/geocaching/settings/RegisterSend2CgeoPreference.java
@@ -99,7 +99,7 @@ public class RegisterSend2CgeoPreference extends Preference {
if (response != null && response.getStatusLine().getStatusCode() == 200) {
//response was OK
- String[] strings = Network.getResponseData(response).split(",");
+ String[] strings = StringUtils.split(Network.getResponseData(response), ',');
try {
pin = Integer.parseInt(strings[1].trim());
} catch (Exception e) {
diff --git a/main/src/cgeo/geocaching/settings/Settings.java b/main/src/cgeo/geocaching/settings/Settings.java
index 71c6d4a..146182a 100644
--- a/main/src/cgeo/geocaching/settings/Settings.java
+++ b/main/src/cgeo/geocaching/settings/Settings.java
@@ -1,8 +1,7 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.R;
-import cgeo.geocaching.StoredList;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.connector.gc.GCConstants;
import cgeo.geocaching.connector.gc.Login;
@@ -10,6 +9,7 @@ import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.LiveMapStrategy.Strategy;
import cgeo.geocaching.enumerations.LogType;
import cgeo.geocaching.geopoint.Geopoint;
+import cgeo.geocaching.list.StoredList;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.google.GoogleMapProvider;
import cgeo.geocaching.maps.interfaces.GeoPointImpl;
@@ -24,6 +24,7 @@ import cgeo.geocaching.utils.Log;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.eclipse.jdt.annotation.Nullable;
import android.content.Context;
import android.content.SharedPreferences;
@@ -41,7 +42,7 @@ import java.util.Locale;
/**
* General c:geo preferences/settings set by the user
*/
-public final class Settings {
+public class Settings {
public static final int SHOW_WP_THRESHOLD_DEFAULT = 10;
public static final int SHOW_WP_THRESHOLD_MAX = 50;
@@ -69,7 +70,7 @@ public final class Settings {
}
private static final SharedPreferences sharedPrefs = PreferenceManager
- .getDefaultSharedPreferences(cgeoapplication.getInstance().getBaseContext());
+ .getDefaultSharedPreferences(CgeoApplication.getInstance().getBaseContext());
static {
migrateSettings();
Log.setDebug(sharedPrefs.getBoolean(getKey(R.string.pref_debug), false));
@@ -81,8 +82,8 @@ public final class Settings {
*/
private static MapSource mapSource;
- private Settings() {
- // this class is not to be instantiated;
+ protected Settings() {
+ throw new InstantiationError();
}
private static void migrateSettings() {
@@ -90,7 +91,7 @@ public final class Settings {
int oldVersion = getInt(R.string.pref_settingsversion, 0);
if (oldVersion < 1) {
final String oldPreferencesName = "cgeo.pref";
- final SharedPreferences old = cgeoapplication.getInstance().getSharedPreferences(oldPreferencesName, Context.MODE_PRIVATE);
+ final SharedPreferences old = CgeoApplication.getInstance().getSharedPreferences(oldPreferencesName, Context.MODE_PRIVATE);
final Editor e = sharedPrefs.edit();
e.putString(getKey(R.string.pref_temp_twitter_token_secret), old.getString(getKey(R.string.pref_temp_twitter_token_secret), null));
@@ -191,7 +192,7 @@ public final class Settings {
}
private static String getKey(final int prefKeyId) {
- return cgeoapplication.getInstance().getString(prefKeyId);
+ return CgeoApplication.getInstance().getString(prefKeyId);
}
static String getString(final int prefKeyId, final String defaultValue) {
@@ -214,13 +215,13 @@ public final class Settings {
return sharedPrefs.getFloat(getKey(prefKeyId), defaultValue);
}
- static boolean putString(final int prefKeyId, final String value) {
+ protected static boolean putString(final int prefKeyId, final String value) {
final SharedPreferences.Editor edit = sharedPrefs.edit();
edit.putString(getKey(prefKeyId), value);
return edit.commit();
}
- private static boolean putBoolean(final int prefKeyId, final boolean value) {
+ protected static boolean putBoolean(final int prefKeyId, final boolean value) {
final SharedPreferences.Editor edit = sharedPrefs.edit();
edit.putBoolean(getKey(prefKeyId), value);
return edit.commit();
@@ -257,7 +258,7 @@ public final class Settings {
public static void setLanguage(boolean useEnglish) {
final Configuration config = new Configuration();
config.locale = useEnglish ? Locale.ENGLISH : Locale.getDefault();
- final Resources resources = cgeoapplication.getInstance().getResources();
+ final Resources resources = CgeoApplication.getInstance().getResources();
resources.updateConfiguration(config, resources.getDisplayMetrics());
}
@@ -295,11 +296,7 @@ public final class Settings {
public static boolean isPremiumMember() {
// Basic Member, Premium Member, ???
- String memberStatus = Settings.getMemberStatus();
- if (memberStatus == null) {
- return false;
- }
- return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(memberStatus);
+ return GCConstants.MEMBER_STATUS_PM.equalsIgnoreCase(Settings.getMemberStatus());
}
public static String getMemberStatus() {
@@ -317,7 +314,7 @@ public final class Settings {
return new ImmutablePair<String, String>(getString(tokenPublicPrefKey, null), getString(tokenSecretPrefKey, null));
}
- public static void setTokens(final int tokenPublicPrefKey, final String tokenPublic, final int tokenSecretPrefKey, final String tokenSecret) {
+ public static void setTokens(final int tokenPublicPrefKey, @Nullable final String tokenPublic, final int tokenSecretPrefKey, @Nullable final String tokenSecret) {
if (tokenPublic == null) {
remove(tokenPublicPrefKey);
} else {
@@ -441,6 +438,10 @@ public final class Settings {
return MapsforgeMapProvider.isValidMapFile(mapFileIn);
}
+ public static boolean isScaleMapsforgeText() {
+ return getBoolean(R.string.pref_mapsforge_scale_text, true);
+ }
+
public static CoordInputFormatEnum getCoordInputFormat() {
return CoordInputFormatEnum.fromInt(getInt(R.string.pref_coordinputformat, 0));
}
@@ -449,10 +450,6 @@ public final class Settings {
putInt(R.string.pref_coordinputformat, format.ordinal());
}
- static void setLogOffline(final boolean offline) {
- putBoolean(R.string.pref_log_offline, offline);
- }
-
public static boolean getLogOffline() {
return getBoolean(R.string.pref_log_offline, false);
}
@@ -471,7 +468,7 @@ public final class Settings {
/**
* @return User selected date format on GC.com
- * @see Login#gcCustomDateFormats
+ * @see Login#GC_CUSTOM_DATE_FORMATS
*/
public static String getGcCustomDate() {
return getString(R.string.pref_gccustomdate, null);
@@ -481,11 +478,6 @@ public final class Settings {
return getBoolean(R.string.pref_excludemine, false);
}
- public static void setUseEnglish(final boolean english) {
- putBoolean(R.string.pref_useenglish, english);
- setLanguage(english);
- }
-
public static boolean isUseEnglish() {
return getBoolean(R.string.pref_useenglish, false);
}
@@ -548,16 +540,9 @@ public final class Settings {
static boolean getImperialUnitsDefault() {
final String countryCode = Locale.getDefault().getCountry();
- if ("US".equals(countryCode)) {
- return true; // USA
- }
- if ("LR".equals(countryCode)) {
- return true; // Liberia
- }
- if ("MM".equals(countryCode)) {
- return true; // Burma
- }
- return false;
+ return "US".equals(countryCode) // USA
+ || "LR".equals(countryCode) // Liberia
+ || "MM".equals(countryCode); // Burma
}
public static boolean isLiveMap() {
@@ -754,8 +739,8 @@ public final class Settings {
&& StringUtils.isNotBlank(getTokenSecret());
}
- public static void setTwitterTokens(final String tokenPublic,
- final String tokenSecret, boolean enableTwitter) {
+ public static void setTwitterTokens(@Nullable final String tokenPublic,
+ @Nullable final String tokenSecret, boolean enableTwitter) {
putString(R.string.pref_twitter_token_public, tokenPublic);
putString(R.string.pref_twitter_token_secret, tokenSecret);
if (tokenPublic != null) {
@@ -765,8 +750,8 @@ public final class Settings {
setUseTwitter(enableTwitter);
}
- public static void setTwitterTempTokens(final String tokenPublic,
- final String tokenSecret) {
+ public static void setTwitterTempTokens(@Nullable final String tokenPublic,
+ @Nullable final String tokenSecret) {
putString(R.string.pref_temp_twitter_token_public, tokenPublic);
putString(R.string.pref_temp_twitter_token_secret, tokenSecret);
}
@@ -803,22 +788,12 @@ public final class Settings {
String.valueOf(NavigationAppsEnum.COMPASS.id)));
}
- public static void setDefaultNavigationTool(final int defaultNavigationTool) {
- putString(R.string.pref_defaultNavigationTool,
- String.valueOf(defaultNavigationTool));
- }
-
public static int getDefaultNavigationTool2() {
return Integer.parseInt(getString(
R.string.pref_defaultNavigationTool2,
String.valueOf(NavigationAppsEnum.INTERNAL_MAP.id)));
}
- public static void setDefaultNavigationTool2(final int defaultNavigationTool) {
- putString(R.string.pref_defaultNavigationTool2,
- String.valueOf(defaultNavigationTool));
- }
-
public static Strategy getLiveMapStrategy() {
return Strategy.getById(getInt(R.string.pref_livemapstrategy, Strategy.AUTO.id));
}
@@ -931,13 +906,11 @@ public final class Settings {
}
public static String getCacheTwitterMessage() {
- // TODO make customizable from UI
- return "I found [NAME] ([URL])";
+ return getString(R.string.pref_twitter_cache_message, "I found [NAME] ([URL]).");
}
public static String getTrackableTwitterMessage() {
- // TODO make customizable from UI
- return "I touched [NAME] ([URL])!";
+ return getString(R.string.pref_twitter_trackable_message, "I touched [NAME] ([URL]).");
}
public static int getLogImageScale() {
@@ -948,11 +921,6 @@ public final class Settings {
putInt(R.string.pref_logImageScale, scale);
}
- // Only for tests!
- static void setExcludeDisabledCaches(final boolean exclude) {
- putBoolean(R.string.pref_excludedisabled, exclude);
- }
-
public static void setExcludeMine(final boolean exclude) {
putBoolean(R.string.pref_excludemine, exclude);
}
@@ -971,28 +939,47 @@ public final class Settings {
return a && b;
}
- static void setStoreOfflineMaps(final boolean offlineMaps) {
- putBoolean(R.string.pref_offlinemaps, offlineMaps);
+ public static long getFieldnoteExportDate() {
+ return getLong(R.string.pref_fieldNoteExportDate, 0);
+ }
+
+ /**
+ * remember date of last field note export
+ *
+ * @param date
+ */
+ public static void setFieldnoteExportDate(final long date) {
+ putLong(R.string.pref_fieldNoteExportDate, date);
}
- static void setStoreOfflineWpMaps(final boolean offlineWpMaps) {
- putBoolean(R.string.pref_offlinewpmaps, offlineWpMaps);
+ public static boolean isUseNavigationApp(NavigationAppsEnum navApp) {
+ return getBoolean(navApp.preferenceKey, true);
}
- static void setUseImperialUnits(final boolean imperial) {
- putBoolean(R.string.pref_units, imperial);
+ /**
+ * remember the state of the "Upload" checkbox in the field notes export dialog
+ *
+ * @param upload
+ */
+ public static void setFieldNoteExportUpload(boolean upload) {
+ putBoolean(R.string.pref_fieldNoteExportUpload, upload);
}
- public static long getFieldnoteExportDate() {
- return getLong(R.string.pref_fieldnoteExportDate, 0);
+ public static boolean getFieldNoteExportUpload() {
+ return getBoolean(R.string.pref_fieldNoteExportUpload, true);
}
- public static void setFieldnoteExportDate(final long date) {
- putLong(R.string.pref_fieldnoteExportDate, date);
+ /**
+ * remember the state of the "Only new" checkbox in the field notes export dialog
+ *
+ * @param onlyNew
+ */
+ public static void setFieldNoteExportOnlyNew(boolean onlyNew) {
+ putBoolean(R.string.pref_fieldNoteExportOnlyNew, onlyNew);
}
- public static boolean isUseNavigationApp(NavigationAppsEnum navApp) {
- return getBoolean(navApp.preferenceKey, true);
+ public static boolean getFieldNoteExportOnlyNew() {
+ return getBoolean(R.string.pref_fieldNoteExportOnlyNew, false);
}
}
diff --git a/main/src/cgeo/geocaching/settings/SettingsActivity.java b/main/src/cgeo/geocaching/settings/SettingsActivity.java
index 38b9932..629debd 100644
--- a/main/src/cgeo/geocaching/settings/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/settings/SettingsActivity.java
@@ -1,21 +1,20 @@
package cgeo.geocaching.settings;
+import cgeo.geocaching.CgeoApplication;
import cgeo.geocaching.Intents;
import cgeo.geocaching.R;
import cgeo.geocaching.SelectMapfileActivity;
-import cgeo.geocaching.cgeoapplication;
import cgeo.geocaching.activity.ActivityMixin;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory;
import cgeo.geocaching.apps.cache.navi.NavigationAppFactory.NavigationAppsEnum;
import cgeo.geocaching.compatibility.Compatibility;
+import cgeo.geocaching.connector.gc.GCConnector;
import cgeo.geocaching.connector.gc.Login;
import cgeo.geocaching.files.SimpleDirChooser;
import cgeo.geocaching.maps.MapProviderFactory;
import cgeo.geocaching.maps.interfaces.MapSource;
import cgeo.geocaching.utils.DatabaseBackupUtils;
import cgeo.geocaching.utils.Log;
-import cgeo.geocaching.utils.LogTemplateProvider;
-import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate;
import org.apache.commons.lang3.StringUtils;
import org.openintents.intents.FileManagerIntents;
@@ -33,17 +32,10 @@ import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
-import android.view.ContextMenu;
-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;
import java.util.List;
import java.util.Locale;
@@ -63,8 +55,6 @@ public class SettingsActivity extends PreferenceActivity {
private static final String INTENT_GOTO = "GOTO";
private static final int INTENT_GOTO_SERVICES = 1;
- private EditText signatureText;
-
/**
* Enumeration for directory choosers. This is how we can retrieve information about the
* directory and preference key in onActivityResult() easily just by knowing
@@ -72,18 +62,20 @@ public class SettingsActivity extends PreferenceActivity {
*/
private enum DirChooserType {
GPX_IMPORT_DIR(1, R.string.pref_gpxImportDir,
- Environment.getExternalStorageDirectory().getPath() + "/gpx"),
+ Environment.getExternalStorageDirectory().getPath() + "/gpx", false),
GPX_EXPORT_DIR(2, R.string.pref_gpxExportDir,
- Environment.getExternalStorageDirectory().getPath() + "/gpx"),
- THEMES_DIR(3, R.string.pref_renderthemepath, "");
+ Environment.getExternalStorageDirectory().getPath() + "/gpx", true),
+ THEMES_DIR(3, R.string.pref_renderthemepath, "", false);
public final int requestCode;
public final int keyId;
public final String defaultValue;
+ public final boolean writeMode;
- DirChooserType(final int requestCode, final int keyId, final String defaultValue) {
+ DirChooserType(final int requestCode, final int keyId, final String defaultValue, final boolean writeMode) {
this.requestCode = requestCode;
this.keyId = keyId;
this.defaultValue = defaultValue;
+ this.writeMode = writeMode;
}
}
@@ -130,7 +122,7 @@ public class SettingsActivity extends PreferenceActivity {
R.string.pref_gpxExportDir, R.string.pref_gpxImportDir,
R.string.pref_mapDirectory, R.string.pref_defaultNavigationTool,
R.string.pref_defaultNavigationTool2, R.string.pref_webDeviceName,
- R.string.pref_fakekey_preference_backup_info, }) {
+ R.string.pref_fakekey_preference_backup_info, R.string.pref_twitter_cache_message, R.string.pref_twitter_trackable_message }) {
bindSummaryToStringValue(k);
}
getPreference(R.string.pref_units).setDefaultValue(Settings.getImperialUnitsDefault());
@@ -151,52 +143,30 @@ public class SettingsActivity extends PreferenceActivity {
getPreference(R.string.pref_connectorOCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorOCPLActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
getPreference(R.string.pref_connectorGCActive).setOnPreferenceChangeListener(VALUE_CHANGE_LISTENER);
+ setWebsite(R.string.pref_fakekey_gc_website, GCConnector.getInstance().getHost());
+ setWebsite(R.string.pref_fakekey_ocde_website, "opencaching.de");
+ setWebsite(R.string.pref_fakekey_ocpl_website, "opencaching.pl");
+ setWebsite(R.string.pref_fakekey_gcvote_website, "gcvote.com");
+ setWebsite(R.string.pref_fakekey_sendtocgeo_website, "send2.cgeo.org");
}
- private static String getKey(final int prefKeyId) {
- return cgeoapplication.getInstance().getString(prefKeyId);
- }
-
- private Preference getPreference(final int keyId) {
- return SettingsActivity.findPreference(this, getKey(keyId));
- }
-
- // workaround, because OnContextItemSelected nor onMenuItemSelected is never called
- OnMenuItemClickListener TEMPLATE_CLICK = new OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(final MenuItem item) {
- LogTemplate template = LogTemplateProvider.getTemplate(item.getItemId());
- if (template != null) {
- insertSignatureTemplate(template);
+ private void setWebsite(final int preferenceKey, final String host) {
+ Preference preference = getPreference(preferenceKey);
+ preference.setOnPreferenceClickListener(new OnPreferenceClickListener() {
+ @Override
+ public boolean onPreferenceClick(final Preference preference) {
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://" + host)));
return true;
}
- return false;
- }
- };
-
- // workaround, because OnContextItemSelected and onMenuItemSelected are never called
- void setSignatureTextView(final EditText view) {
- this.signatureText = view;
+ });
}
- @Override
- public void onCreateContextMenu(final ContextMenu menu, final View v,
- final ContextMenuInfo menuInfo) {
- // context menu for signature templates
- if (v.getId() == R.id.signature_templates) {
- menu.setHeaderTitle(R.string.init_signature_template_button);
- ArrayList<LogTemplate> templates = LogTemplateProvider.getTemplates();
- for (int i = 0; i < templates.size(); ++i) {
- menu.add(0, templates.get(i).getItemId(), 0, templates.get(i).getResourceId());
- menu.getItem(i).setOnMenuItemClickListener(TEMPLATE_CLICK);
- }
- }
- super.onCreateContextMenu(menu, v, menuInfo);
+ private static String getKey(final int prefKeyId) {
+ return CgeoApplication.getInstance().getString(prefKeyId);
}
- private void insertSignatureTemplate(final LogTemplate template) {
- String insertText = "[" + template.getTemplateString() + "]";
- ActivityMixin.insertAtPosition(signatureText, insertText, true);
+ private Preference getPreference(final int keyId) {
+ return SettingsActivity.findPreference(this, getKey(keyId));
}
/**
@@ -289,6 +259,7 @@ public class SettingsActivity extends PreferenceActivity {
// OI file manager not available
final Intent dirChooser = new Intent(this, SimpleDirChooser.class);
dirChooser.putExtra(Intents.EXTRA_START_DIR, startDirectory);
+ dirChooser.putExtra(SimpleDirChooser.EXTRA_CHOOSE_FOR_WRITING, dct.writeMode);
startActivityForResult(dirChooser, dct.requestCode);
}
}
@@ -337,7 +308,7 @@ public class SettingsActivity extends PreferenceActivity {
@Override
public boolean onPreferenceClick(final Preference preference) {
boolean oldValue = Settings.isDbOnSDCard();
- ((cgeoapplication) SettingsActivity.this.getApplication())
+ ((CgeoApplication) SettingsActivity.this.getApplication())
.moveDatabase(SettingsActivity.this);
return oldValue != Settings.isDbOnSDCard();
}
@@ -390,6 +361,9 @@ public class SettingsActivity extends PreferenceActivity {
case R.string.pref_fakekey_ocpl_authorization:
setOCPLAuthTitle();
break;
+ case R.string.pref_fakekey_twitter_authorization:
+ setTwitterAuthTitle();
+ break;
default:
Log.e(String.format(Locale.ENGLISH, "Invalid key %d in SettingsActivity.setTitle()", prefKeyId));
}
@@ -398,22 +372,22 @@ public class SettingsActivity extends PreferenceActivity {
void setOCDEAuthTitle() {
getPreference(R.string.pref_fakekey_ocde_authorization)
.setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocde_tokenpublic, R.string.pref_ocde_tokensecret)
- ? R.string.init_reregister_oc_de
- : R.string.init_register_oc_de));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
void setOCPLAuthTitle() {
getPreference(R.string.pref_fakekey_ocpl_authorization)
.setTitle(getString(Settings.hasOCAuthorization(R.string.pref_ocpl_tokenpublic, R.string.pref_ocpl_tokensecret)
- ? R.string.init_reregister_oc_pl
- : R.string.init_register_oc_pl));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
void setTwitterAuthTitle() {
getPreference(R.string.pref_fakekey_twitter_authorization)
.setTitle(getString(Settings.hasTwitterAuthorization()
- ? R.string.init_twitter_reauthorize
- : R.string.init_twitter_authorize));
+ ? R.string.settings_reauthorize
+ : R.string.settings_authorize));
}
public static void jumpToServicesPage(final Context fromActivity) {
@@ -518,7 +492,7 @@ public class SettingsActivity extends PreferenceActivity {
preference.setSummary(mapSource.getName());
} else if (isPreference(preference, R.string.pref_connectorOCActive) || isPreference(preference, R.string.pref_connectorOCPLActive) || isPreference(preference, R.string.pref_connectorGCActive)) {
// // reset log-in status if connector activation was changed
- cgeoapplication.getInstance().checkLogin = true;
+ CgeoApplication.getInstance().checkLogin = true;
} else if (preference instanceof ListPreference) {
// For list preferences, look up the correct display value in
// the preference's 'entries' list.
@@ -549,7 +523,7 @@ public class SettingsActivity extends PreferenceActivity {
if (Login.isActualLoginStatus()) {
Login.logout();
}
- cgeoapplication.getInstance().checkLogin = true;
+ CgeoApplication.getInstance().checkLogin = true;
}
return true;
}
diff --git a/main/src/cgeo/geocaching/settings/TemplateTextPreference.java b/main/src/cgeo/geocaching/settings/TemplateTextPreference.java
new file mode 100644
index 0000000..9eaaa67
--- /dev/null
+++ b/main/src/cgeo/geocaching/settings/TemplateTextPreference.java
@@ -0,0 +1,111 @@
+package cgeo.geocaching.settings;
+
+import cgeo.geocaching.R;
+import cgeo.geocaching.activity.ActivityMixin;
+import cgeo.geocaching.utils.LogTemplateProvider;
+import cgeo.geocaching.utils.LogTemplateProvider.LogTemplate;
+
+import org.apache.commons.lang3.StringUtils;
+
+import android.app.AlertDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.res.TypedArray;
+import android.preference.DialogPreference;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.Button;
+import android.widget.EditText;
+
+import java.util.ArrayList;
+
+public class TemplateTextPreference extends DialogPreference {
+
+ /**
+ * default value, if none is given in the preference XML.
+ */
+ private static final String DEFAULT_VALUE = StringUtils.EMPTY;
+ private SettingsActivity settingsActivity;
+ private EditText editText;
+ private String initialValue;
+
+ public TemplateTextPreference(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ init();
+ }
+
+ public TemplateTextPreference(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ init();
+ }
+
+ private void init() {
+ setDialogLayoutResource(R.layout.template_preference_dialog);
+ }
+
+ @Override
+ protected void onBindDialogView(View view) {
+ settingsActivity = (SettingsActivity) this.getContext();
+
+ editText = (EditText) view.findViewById(R.id.signature_dialog_text);
+ editText.setText(getPersistedString(initialValue != null ? initialValue.toString() : StringUtils.EMPTY));
+
+ Button button = (Button) view.findViewById(R.id.signature_templates);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View button) {
+ AlertDialog.Builder alert = new AlertDialog.Builder(TemplateTextPreference.this.getContext());
+ alert.setTitle(R.string.init_signature_template_button);
+ final ArrayList<LogTemplate> templates = LogTemplateProvider.getTemplates();
+ String[] items = new String[templates.size()];
+ for (int i = 0; i < templates.size(); i++) {
+ items[i] = settingsActivity.getResources().getString(templates.get(i).getResourceId());
+ }
+ alert.setItems(items, new DialogInterface.OnClickListener() {
+
+ @Override
+ public void onClick(DialogInterface dialog, int position) {
+ dialog.dismiss();
+ final LogTemplate template = templates.get(position);
+ insertSignatureTemplate(template);
+ }
+ });
+ alert.create().show();
+ }
+ });
+
+ super.onBindDialogView(view);
+ }
+
+ private void insertSignatureTemplate(final LogTemplate template) {
+ String insertText = "[" + template.getTemplateString() + "]";
+ ActivityMixin.insertAtPosition(editText, insertText, true);
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ if (positiveResult) {
+ String text = editText.getText().toString();
+ persistString(text);
+ callChangeListener(text);
+ }
+ super.onDialogClosed(positiveResult);
+ }
+
+ @Override
+ protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
+ if (restorePersistedValue) {
+ // Restore existing state
+ initialValue = this.getPersistedString(DEFAULT_VALUE);
+ } else {
+ // Set default state from the XML attribute
+ initialValue = defaultValue.toString();
+ persistString(initialValue);
+ }
+ }
+
+ @Override
+ protected Object onGetDefaultValue(TypedArray array, int index) {
+ return array.getString(index);
+ }
+}