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.java129
1 files changed, 70 insertions, 59 deletions
diff --git a/main/src/cgeo/geocaching/SettingsActivity.java b/main/src/cgeo/geocaching/SettingsActivity.java
index 823b52f..199e083 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;
@@ -495,16 +495,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 +567,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 +579,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 +591,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 +759,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 +768,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 +784,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 {
@@ -966,9 +950,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 +963,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);
}
}