aboutsummaryrefslogtreecommitdiffstats
path: root/main/src/cgeo/geocaching/SettingsActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/cgeo/geocaching/SettingsActivity.java')
-rw-r--r--main/src/cgeo/geocaching/SettingsActivity.java154
1 files changed, 91 insertions, 63 deletions
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java
index 823b52f..64a086d 100644
--- a/main/src/cgeo/geocaching/SettingsActivity.java
+++ b/main/src/cgeo/geocaching/SettingsActivity.java
@@ -5,7 +5,6 @@ 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.Login;
-import cgeo.geocaching.enumerations.CacheType;
import cgeo.geocaching.enumerations.StatusCode;
import cgeo.geocaching.files.SimpleDirChooser;
import cgeo.geocaching.maps.MapProviderFactory;
@@ -24,6 +23,7 @@ import ch.boye.httpclientandroidlib.HttpResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.ImmutablePair;
+import org.openintents.intents.FileManagerIntents;
import android.app.ProgressDialog;
import android.content.Context;
@@ -84,7 +84,7 @@ public class SettingsActivity extends AbstractActivity {
} catch (Exception e) {
showToast(res.getString(R.string.err_login_failed));
- Log.e("SettingsActivity.logInHandler: " + e.toString());
+ Log.e("SettingsActivity.logInHandler", e);
}
if (loginDialog != null && loginDialog.isShowing()) {
@@ -112,7 +112,7 @@ public class SettingsActivity extends AbstractActivity {
} catch (Exception e) {
showToast(res.getString(R.string.init_sendToCgeo_register_fail));
- Log.e("SettingsActivity.webHandler: " + e.toString());
+ Log.e("SettingsActivity.webHandler", e);
}
if (webDialog != null && webDialog.isShowing()) {
@@ -242,6 +242,21 @@ public class SettingsActivity extends AbstractActivity {
}
});
+ // opencaching.de settings
+ final CheckBox ocCheck = (CheckBox) findViewById(R.id.oc_option);
+ ocCheck.setChecked(Settings.isOCConnectorActive());
+ ocCheck.setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ Settings.setOCConnectorActive(ocCheck.isChecked());
+ }
+ });
+ EditText ocUserEdit = (EditText) findViewById(R.id.oc_username);
+ if (ocUserEdit.getText().length() == 0) {
+ ocUserEdit.setText(Settings.getOCConnectorUserName());
+ }
+
// gcvote settings
final ImmutablePair<String, String> gcvoteLogin = Settings.getGCvoteLogin();
if (null != gcvoteLogin && null != gcvoteLogin.right) {
@@ -495,16 +510,6 @@ public class SettingsActivity extends AbstractActivity {
}
});
- final CheckBox gnavButton = (CheckBox) findViewById(R.id.gnav);
- gnavButton.setChecked(Settings.isUseGoogleNavigation());
- gnavButton.setOnClickListener(new View.OnClickListener() {
-
- @Override
- public void onClick(View v) {
- Settings.setUseGoogleNavigation(gnavButton.isChecked());
- }
- });
-
final CheckBox logOffline = (CheckBox) findViewById(R.id.log_offline);
logOffline.setChecked(Settings.getLogOffline());
logOffline.setOnClickListener(new View.OnClickListener() {
@@ -577,9 +582,7 @@ public class SettingsActivity extends AbstractActivity {
@Override
public void onClick(View v) {
- Intent dirChooser = new Intent(SettingsActivity.this, SimpleDirChooser.class);
- dirChooser.putExtra(SimpleDirChooser.START_DIR, Settings.getCustomRenderThemeBaseFolder());
- startActivityForResult(dirChooser, SELECT_THEMEFOLDER_REQUEST);
+ selectDirectory(Settings.getCustomRenderThemeBaseFolder(), SELECT_THEMEFOLDER_REQUEST);
}
});
@@ -591,9 +594,7 @@ public class SettingsActivity extends AbstractActivity {
@Override
public void onClick(View v) {
- Intent dirChooser = new Intent(SettingsActivity.this, SimpleDirChooser.class);
- dirChooser.putExtra(SimpleDirChooser.START_DIR, Settings.getGpxExportDir());
- startActivityForResult(dirChooser, SELECT_GPX_EXPORT_REQUEST);
+ selectDirectory(Settings.getGpxExportDir(), SELECT_GPX_EXPORT_REQUEST);
}
});
@@ -605,9 +606,7 @@ public class SettingsActivity extends AbstractActivity {
@Override
public void onClick(View v) {
- Intent dirChooser = new Intent(SettingsActivity.this, SimpleDirChooser.class);
- dirChooser.putExtra(SimpleDirChooser.START_DIR, Settings.getGpxImportDir());
- startActivityForResult(dirChooser, SELECT_GPX_IMPORT_REQUEST);
+ selectDirectory(Settings.getGpxImportDir(), SELECT_GPX_IMPORT_REQUEST);
}
});
@@ -775,7 +774,7 @@ public class SettingsActivity extends AbstractActivity {
*/
public void backup(View view) {
// avoid overwriting an existing backup with an empty database (can happen directly after reinstalling the app)
- if (app.getAllStoredCachesCount(true, CacheType.ALL) == 0) {
+ if (cgData.getAllCachesCount() == 0) {
helpDialog(res.getString(R.string.init_backup), res.getString(R.string.init_backup_unnecessary));
return;
}
@@ -784,7 +783,7 @@ public class SettingsActivity extends AbstractActivity {
new Thread() {
@Override
public void run() {
- final String backupFileName = app.backupDatabase();
+ final String backupFileName = cgData.backupDatabase();
runOnUiThread(new Runnable() {
@Override
public void run() {
@@ -800,7 +799,7 @@ public class SettingsActivity extends AbstractActivity {
private void refreshBackupLabel() {
TextView lastBackup = (TextView) findViewById(R.id.backup_last);
- File lastBackupFile = cgeoapplication.isRestoreFile();
+ File lastBackupFile = cgData.getRestoreFile();
if (lastBackupFile != null) {
lastBackup.setText(res.getString(R.string.init_backup_last) + " " + Formatter.formatTime(lastBackupFile.lastModified()) + ", " + Formatter.formatDate(lastBackupFile.lastModified()));
} else {
@@ -829,6 +828,7 @@ public class SettingsActivity extends AbstractActivity {
String signatureNew = ((EditText) findViewById(R.id.signature)).getText().toString();
String mapDirectoryNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.map_directory)).getText().toString());
String themesDirectoryNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.themefolder)).getText().toString());
+ String ocUserName = StringUtils.trimToEmpty(((EditText) findViewById(R.id.oc_username)).getText().toString());
String altitudeNew = StringUtils.trimToNull(((EditText) findViewById(R.id.altitude)).getText().toString());
int altitudeNewInt = parseNumber(altitudeNew, 0);
@@ -842,6 +842,7 @@ public class SettingsActivity extends AbstractActivity {
final boolean status4 = Settings.setAltCorrection(altitudeNewInt);
final boolean status5 = Settings.setMapFileDirectory(mapDirectoryNew);
final boolean status6 = Settings.setCustomRenderThemeBaseFolder(themesDirectoryNew);
+ final boolean status7 = Settings.setOCConnectorUserName(ocUserName);
Settings.setShowWaypointsThreshold(waypointThreshold);
String importNew = StringUtils.trimToEmpty(((EditText) findViewById(R.id.gpx_importdir)).getText().toString());
@@ -849,7 +850,7 @@ public class SettingsActivity extends AbstractActivity {
Settings.setGpxImportDir(importNew);
Settings.setGpxExportDir(exportNew);
- return status1 && status2 && status3 && status4 && status5 && status6;
+ return status1 && status2 && status3 && status4 && status5 && status6 && status7;
}
/**
@@ -951,7 +952,7 @@ public class SettingsActivity extends AbstractActivity {
try {
pin = Integer.parseInt(strings[1].trim());
} catch (Exception e) {
- Log.e("webDialog: " + e.toString());
+ Log.e("webDialog", e);
}
String code = strings[0];
Settings.setWebNameCode(nam, code);
@@ -966,9 +967,12 @@ public class SettingsActivity extends AbstractActivity {
@Override
protected void onActivityResult(int requestCode, int resultCode, final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
+ if (resultCode != RESULT_OK) {
+ return;
+ }
- if (requestCode == SELECT_MAPFILE_REQUEST) {
- if (resultCode == RESULT_OK) {
+ switch (requestCode) {
+ case SELECT_MAPFILE_REQUEST:
if (data.hasExtra("mapfile")) {
final String mapFile = data.getStringExtra("mapfile");
Settings.setMapFile(mapFile);
@@ -976,48 +980,72 @@ public class SettingsActivity extends AbstractActivity {
showToast(res.getString(R.string.warn_invalid_mapfile));
}
}
- }
- updateMapSourceMenu();
- initMapDirectoryEdittext(true);
- }
- if (requestCode == SELECT_GPX_EXPORT_REQUEST) {
- checkDirectory(resultCode, data, R.id.gpx_exportdir, new RunnableWithArgument<String>() {
+ updateMapSourceMenu();
+ initMapDirectoryEdittext(true);
+ break;
+ case SELECT_GPX_EXPORT_REQUEST:
+ checkDirectory(resultCode, data, R.id.gpx_exportdir, new RunnableWithArgument<String>() {
- @Override
- public void run(String directory) {
- Settings.setGpxExportDir(directory);
- }
- });
- }
- if (requestCode == SELECT_GPX_IMPORT_REQUEST) {
- checkDirectory(resultCode, data, R.id.gpx_importdir, new RunnableWithArgument<String>() {
+ @Override
+ public void run(String directory) {
+ Settings.setGpxExportDir(directory);
+ }
+ });
+ break;
+ case SELECT_GPX_IMPORT_REQUEST:
+ checkDirectory(resultCode, data, R.id.gpx_importdir, new RunnableWithArgument<String>() {
- @Override
- public void run(String directory) {
- Settings.setGpxImportDir(directory);
- }
- });
- }
- if (requestCode == SELECT_THEMEFOLDER_REQUEST) {
- checkDirectory(resultCode, data, R.id.themefolder, new RunnableWithArgument<String>() {
+ @Override
+ public void run(String directory) {
+ Settings.setGpxImportDir(directory);
+ }
+ });
+ break;
+ case SELECT_THEMEFOLDER_REQUEST:
+ checkDirectory(resultCode, data, R.id.themefolder, new RunnableWithArgument<String>() {
- @Override
- public void run(String directory) {
- Settings.setCustomRenderThemeBaseFolder(directory);
- }
- });
+ @Override
+ public void run(String directory) {
+ Settings.setCustomRenderThemeBaseFolder(directory);
+ }
+ });
+ break;
+ default:
+ throw new IllegalArgumentException();
}
}
private void checkDirectory(int resultCode, Intent data, int textField, RunnableWithArgument<String> runnableSetDir) {
- if (resultCode == RESULT_OK) {
- if (data.hasExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR)) {
- final String directory = data.getStringExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR);
- runnableSetDir.run(directory);
- EditText directoryText = (EditText) findViewById(textField);
- directoryText.setText(directory);
- directoryText.requestFocus();
+ if (resultCode != RESULT_OK) {
+ return;
+ }
+ // we may come back from either our selfmade chooser or from the Open Intent manager
+ final String directory = data.hasExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR) ?
+ data.getStringExtra(SimpleDirChooser.EXTRA_CHOSEN_DIR) :
+ new File(data.getData().getPath()).getAbsolutePath();
+ if (StringUtils.isNotBlank(directory)) {
+ runnableSetDir.run(directory);
+ EditText directoryText = (EditText) findViewById(textField);
+ directoryText.setText(directory);
+ directoryText.requestFocus();
+ }
+ }
+
+ private void selectDirectory(String startDirectory, int directoryKind) {
+ Intent dirChooser;
+ try {
+ dirChooser = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY);
+ if (StringUtils.isNotBlank(startDirectory)) {
+ dirChooser.setData(Uri.parse("file://" + new File(startDirectory).getAbsolutePath()));
}
+ dirChooser.putExtra(FileManagerIntents.EXTRA_TITLE, res.getString(R.string.simple_dir_chooser_title));
+ dirChooser.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, res.getString(android.R.string.ok));
+ startActivityForResult(dirChooser, directoryKind);
+ } catch (android.content.ActivityNotFoundException ex) {
+ // OI file manager not available
+ dirChooser = new Intent(this, SimpleDirChooser.class);
+ dirChooser.putExtra(SimpleDirChooser.START_DIR, startDirectory);
+ startActivityForResult(dirChooser, directoryKind);
}
}