aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/settings/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/settings/SettingsActivity.java')
-rw-r--r--main/src/cgeo/geocaching/settings/SettingsActivity.java102
1 files changed, 38 insertions, 64 deletions
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;
}