diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index b7776547d..75840b89f 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -128,7 +128,7 @@ limitations under the License.
android:name="android.app.default_searchable"
android:value=".SearchListActivity" />
-
+
diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
index e1c941108..afc34c034 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
@@ -26,7 +26,6 @@ import android.content.pm.PackageManager;
import android.database.Cursor;
import android.location.LocationManager;
import android.os.Bundle;
-import android.os.Parcelable;
import android.os.StrictMode;
import android.provider.Settings;
import android.util.Log;
@@ -58,11 +57,6 @@ import java.util.Locale;
import de.dennisguse.opentracks.content.ContentProviderUtils;
import de.dennisguse.opentracks.content.TracksColumns;
import de.dennisguse.opentracks.fragments.ConfirmDeleteDialogFragment;
-import de.dennisguse.opentracks.fragments.FileTypeDialogFragment;
-import de.dennisguse.opentracks.fragments.FileTypeDialogFragment.FileTypeCaller;
-import de.dennisguse.opentracks.io.file.TrackFileFormat;
-import de.dennisguse.opentracks.io.file.exporter.SaveActivity;
-import de.dennisguse.opentracks.io.file.importer.ImportActivity;
import de.dennisguse.opentracks.services.ITrackRecordingService;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.SettingsActivity;
@@ -79,7 +73,7 @@ import de.dennisguse.opentracks.util.TrackUtils;
*
* @author Leif Hendrik Wilden
*/
-public class TrackListActivity extends AbstractTrackActivity implements FileTypeCaller, ConfirmDeleteDialogFragment.ConfirmDeleteCaller {
+public class TrackListActivity extends AbstractTrackActivity implements ConfirmDeleteDialogFragment.ConfirmDeleteCaller {
private static final String TAG = TrackListActivity.class.getSimpleName();
private static final String[] PROJECTION = new String[]{TracksColumns._ID, TracksColumns.NAME,
@@ -175,8 +169,6 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType
private MenuItem searchMenuItem;
private MenuItem startGpsMenuItem;
private MenuItem aggregatedStatisticsMenuItem;
- private MenuItem exportAllMenuItem;
- private MenuItem importAllMenuItem;
private MenuItem deleteAllMenuItem;
private final OnClickListener stopListener = new OnClickListener() {
@Override
@@ -391,8 +383,6 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType
startGpsMenuItem = menu.findItem(R.id.track_list_start_gps);
aggregatedStatisticsMenuItem = menu.findItem(R.id.track_list_aggregated_statistics);
- exportAllMenuItem = menu.findItem(R.id.track_list_export_all);
- importAllMenuItem = menu.findItem(R.id.track_list_import_all);
deleteAllMenuItem = menu.findItem(R.id.track_list_delete_all);
return super.onCreateOptionsMenu(menu);
@@ -452,16 +442,6 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType
intent = IntentUtils.newIntent(this, AggregatedStatsActivity.class);
startActivity(intent);
return true;
- case R.id.track_list_export_all:
- FileTypeDialogFragment.newInstance(R.id.track_list_export_all,
- R.string.export_all_title, R.string.export_all_option)
- .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG);
- return true;
- case R.id.track_list_import_all:
- FileTypeDialogFragment.newInstance(R.id.track_list_import_all,
- R.string.import_selection_title, R.string.import_selection_option)
- .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG);
- return true;
case R.id.track_list_delete_all:
deleteTracks(new long[]{-1L});
return true;
@@ -517,26 +497,6 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType
// Do nothing
}
- @Override
- public void onFileTypeDone(int menuId, TrackFileFormat trackFileFormat) {
- Intent intent;
- switch (menuId) {
- case R.id.track_list_export_all:
- intent = IntentUtils.newIntent(this, SaveActivity.class)
- .putExtra(SaveActivity.EXTRA_TRACK_IDS, new long[]{-1L})
- .putExtra(SaveActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat);
- startActivity(intent);
- break;
- case R.id.track_list_import_all:
- intent = IntentUtils.newIntent(this, ImportActivity.class)
- .putExtra(ImportActivity.EXTRA_IMPORT_ALL, true)
- .putExtra(ImportActivity.EXTRA_TRACK_FILE_FORMAT, (Parcelable) trackFileFormat);
- startActivity(intent);
- break;
- default:
- }
- }
-
/**
* Shows start up dialogs.
*/
@@ -575,12 +535,6 @@ public class TrackListActivity extends AbstractTrackActivity implements FileType
if (aggregatedStatisticsMenuItem != null) {
aggregatedStatisticsMenuItem.setVisible(hasTrack);
}
- if (exportAllMenuItem != null) {
- exportAllMenuItem.setVisible(hasTrack && !isRecording);
- }
- if (importAllMenuItem != null) {
- importAllMenuItem.setVisible(!isRecording);
- }
if (deleteAllMenuItem != null) {
deleteAllMenuItem.setVisible(hasTrack && !isRecording);
}
diff --git a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java
index 3e065f3ac..0c72dc142 100644
--- a/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java
+++ b/src/main/java/de/dennisguse/opentracks/fragments/FileTypeDialogFragment.java
@@ -23,9 +23,9 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
+import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.util.FileUtils;
-import de.dennisguse.opentracks.R;
/**
* A DialogFragment to select a file type, gpx, kml, etc.
@@ -35,14 +35,12 @@ import de.dennisguse.opentracks.R;
public class FileTypeDialogFragment extends AbstractDialogFragment {
public static final String FILE_TYPE_DIALOG_TAG = "fileType";
- private static final String KEY_MENU_ID = "menuId";
private static final String KEY_TITLE_ID = "titleId";
private static final String KEY_OPTION_ID = "optionId";
private FileTypeCaller caller;
- public static FileTypeDialogFragment newInstance(int menuId, int titleId, int optionId) {
+ public static FileTypeDialogFragment newInstance(int titleId, int optionId) {
Bundle bundle = new Bundle();
- bundle.putInt(KEY_MENU_ID, menuId);
bundle.putInt(KEY_TITLE_ID, titleId);
bundle.putInt(KEY_OPTION_ID, optionId);
@@ -65,7 +63,6 @@ public class FileTypeDialogFragment extends AbstractDialogFragment {
protected Dialog createDialog() {
int optionId = getArguments().getInt(KEY_OPTION_ID);
final int titleId = getArguments().getInt(KEY_TITLE_ID);
- final int menuId = getArguments().getInt(KEY_MENU_ID);
TrackFileFormat[] trackFileFormats = TrackFileFormat.values();
String[] choices = new String[trackFileFormats.length];
for (int i = 0; i < choices.length; i++) {
@@ -78,7 +75,7 @@ public class FileTypeDialogFragment extends AbstractDialogFragment {
@Override
public void onClick(DialogInterface dialog, int which) {
int position = ((AlertDialog) dialog).getListView().getCheckedItemPosition();
- caller.onFileTypeDone(menuId, TrackFileFormat.values()[position]);
+ caller.onFileTypeDone(TrackFileFormat.values()[position]);
}
}).setSingleChoiceItems(choices, 0, null).setTitle(titleId).create();
}
@@ -93,6 +90,6 @@ public class FileTypeDialogFragment extends AbstractDialogFragment {
/**
* Called when file type selection is done.
*/
- void onFileTypeDone(int menuId, TrackFileFormat trackFileFormat);
+ void onFileTypeDone(TrackFileFormat trackFileFormat);
}
}
\ No newline at end of file
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java
similarity index 67%
rename from src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveActivity.java
rename to src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java
index 661f6da89..ad3fa0f49 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/ExportActivity.java
@@ -16,22 +16,22 @@
package de.dennisguse.opentracks.io.file.exporter;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
-import android.content.Intent;
import android.os.Bundle;
import android.widget.Toast;
+import androidx.fragment.app.FragmentActivity;
+
import java.io.File;
import de.dennisguse.opentracks.R;
+import de.dennisguse.opentracks.fragments.FileTypeDialogFragment;
import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.util.DialogUtils;
import de.dennisguse.opentracks.util.FileUtils;
-import de.dennisguse.opentracks.util.IntentUtils;
/**
* An activity for saving tracks to the external storage. If saving a specific
@@ -39,20 +39,11 @@ import de.dennisguse.opentracks.util.IntentUtils;
*
* @author Rodrigo Damazio
*/
-public class SaveActivity extends Activity {
-
- public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format";
- public static final String EXTRA_TRACK_IDS = "track_ids";
-
- @Deprecated //TODO Seems to be a left over from Google Earth integration and can be removed.
- public static final String EXTRA_PLAY_TRACK = "play_track";
+public class ExportActivity extends FragmentActivity implements FileTypeDialogFragment.FileTypeCaller {
private static final int DIALOG_PROGRESS_ID = 0;
private static final int DIALOG_RESULT_ID = 1;
- private TrackFileFormat trackFileFormat;
- private long[] trackIds;
- private boolean playTrack;
private String directoryDisplayName;
private SaveAsyncTask saveAsyncTask;
@@ -64,53 +55,41 @@ public class SaveActivity extends Activity {
// the number of tracks to save
private int totalCount;
- // the last successfully saved path
- private String savedPath;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- Intent intent = getIntent();
- trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
- trackIds = intent.getLongArrayExtra(EXTRA_TRACK_IDS);
- playTrack = intent.getBooleanExtra(EXTRA_PLAY_TRACK, false);
+ FileTypeDialogFragment
+ .newInstance(R.string.export_all_title, R.string.export_all_option)
+ .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG);
+ }
+ @Override
+ public void onFileTypeDone(TrackFileFormat trackFileFormat) {
if (!FileUtils.isExternalStorageWriteable()) {
Toast.makeText(this, R.string.external_storage_not_writable, Toast.LENGTH_LONG).show();
finish();
return;
}
- File directory = playTrack ? new File(getCacheDir(), FileUtils.PLAY_TRACKS_DIR) : new File(FileUtils.getPath(trackFileFormat.getExtension()));
+ File directory = new File(FileUtils.getPath(trackFileFormat.getExtension()));
if (!FileUtils.ensureDirectoryExists(directory)) {
Toast.makeText(this, R.string.external_storage_not_writable, Toast.LENGTH_LONG).show();
finish();
return;
}
- if (playTrack) {
- for (File file : directory.listFiles()) {
- file.delete();
- }
- }
+ directoryDisplayName = FileUtils.getPathDisplayName(trackFileFormat.getExtension());
- directoryDisplayName = playTrack ? directory.getName() : FileUtils.getPathDisplayName(trackFileFormat.getExtension());
-
- Object retained = getLastNonConfigurationInstance();
- if (retained instanceof SaveAsyncTask) {
- saveAsyncTask = (SaveAsyncTask) retained;
- saveAsyncTask.setActivity(this);
- } else {
- saveAsyncTask = new SaveAsyncTask(this, trackIds, trackFileFormat, directory);
- saveAsyncTask.execute();
- }
- }
-
- @Override
- public Object onRetainNonConfigurationInstance() {
- saveAsyncTask.setActivity(null);
- return saveAsyncTask;
+ //TODO (still needed?): getLastNonConfiguration instance returned SaveAsyncTask before
+// Object retained = getLastNonConfigurationInstance();
+// if (retained instanceof SaveAsyncTask) {
+// saveAsyncTask = (SaveAsyncTask) retained;
+// saveAsyncTask.setActivity(this);
+// } else {
+ saveAsyncTask = new SaveAsyncTask(this, trackFileFormat, directory);
+ saveAsyncTask.execute();
+// }
}
@Override
@@ -159,26 +138,12 @@ public class SaveActivity extends Activity {
finish();
}
}).setTitle(titleId);
- if (!playTrack && trackIds.length == 1 && trackIds[0] != -1L && successCount == totalCount
- && savedPath != null) {
- builder.setNegativeButton(
- R.string.share_track_share_file, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Intent intent = IntentUtils.newShareFileIntent(
- SaveActivity.this, trackIds[0], savedPath, trackFileFormat);
- startActivity(
- Intent.createChooser(intent, getString(R.string.share_track_picker_title)));
- finish();
- }
- });
- }
final Dialog dialog = builder.create();
dialog.setOnShowListener(new DialogInterface.OnShowListener() {
@Override
public void onShow(DialogInterface dialogInterface) {
- DialogUtils.setDialogTitleDivider(SaveActivity.this, dialog);
+ DialogUtils.setDialogTitleDivider(ExportActivity.this, dialog);
}
});
return dialog;
@@ -192,12 +157,10 @@ public class SaveActivity extends Activity {
*
* @param aSuccessCount the number of tracks successfully saved
* @param aTotalCount the number of tracks to save
- * @param aSavedPath the last successfully saved path
*/
- public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount, String aSavedPath) {
+ public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount) {
successCount = aSuccessCount;
totalCount = aTotalCount;
- savedPath = aSavedPath;
removeDialog(DIALOG_PROGRESS_ID);
showDialog(DIALOG_RESULT_ID);
}
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveAsyncTask.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveAsyncTask.java
index d3d3b2bd1..d98d15ebc 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveAsyncTask.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/SaveAsyncTask.java
@@ -44,12 +44,11 @@ import de.dennisguse.opentracks.util.SystemUtils;
public class SaveAsyncTask extends AsyncTask {
private static final String TAG = SaveAsyncTask.class.getSimpleName();
- private final long[] trackIds;
private final TrackFileFormat trackFileFormat;
private final File directory;
private final Context context;
private final ContentProviderUtils contentProviderUtils;
- private SaveActivity saveActivity;
+ private ExportActivity exportActivity;
private WakeLock wakeLock;
// true if the AsyncTask has completed
@@ -67,18 +66,15 @@ public class SaveAsyncTask extends AsyncTask {
/**
* Creates an AsyncTask.
*
- * @param saveActivity the activity currently associated with this task
- * @param trackIds the track ids to save. To save all, set to size 1 with
- * trackIds[0] == -1L
+ * @param exportActivity the activity currently associated with this task
* @param trackFileFormat the track file format
* @param directory the directory to write the file
*/
- public SaveAsyncTask(SaveActivity saveActivity, long[] trackIds, TrackFileFormat trackFileFormat, File directory) {
- this.saveActivity = saveActivity;
- this.trackIds = trackIds;
+ public SaveAsyncTask(ExportActivity exportActivity, TrackFileFormat trackFileFormat, File directory) {
+ this.exportActivity = exportActivity;
this.trackFileFormat = trackFileFormat;
this.directory = directory;
- context = saveActivity.getApplicationContext();
+ context = exportActivity.getApplicationContext();
contentProviderUtils = ContentProviderUtils.Factory.get(context);
completed = false;
@@ -90,19 +86,19 @@ public class SaveAsyncTask extends AsyncTask {
/**
* Sets the current activity associated with this AsyncTask.
*
- * @param saveActivity the current activity, can be null
+ * @param exportActivity the current activity, can be null
*/
- public void setActivity(SaveActivity saveActivity) {
- this.saveActivity = saveActivity;
- if (completed && saveActivity != null) {
- saveActivity.onAsyncTaskCompleted(successCount, totalCount, savedPath);
+ public void setActivity(ExportActivity exportActivity) {
+ this.exportActivity = exportActivity;
+ if (completed && exportActivity != null) {
+ exportActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@Override
protected void onPreExecute() {
- if (saveActivity != null) {
- saveActivity.showProgressDialog();
+ if (exportActivity != null) {
+ exportActivity.showProgressDialog();
}
}
@@ -110,31 +106,13 @@ public class SaveAsyncTask extends AsyncTask {
protected Boolean doInBackground(Void... params) {
try {
Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
- boolean isRecording = PreferencesUtils.getLong(saveActivity, R.string.recording_track_id_key) != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
- boolean isPaused = PreferencesUtils.getBoolean(saveActivity, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
+ boolean isRecording = PreferencesUtils.getLong(exportActivity, R.string.recording_track_id_key) != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT;
+ boolean isPaused = PreferencesUtils.getBoolean(exportActivity, R.string.recording_track_paused_key, PreferencesUtils.RECORDING_TRACK_PAUSED_DEFAULT);
// Get the wake lock if not recording or paused
if (!isRecording || isPaused) {
- wakeLock = SystemUtils.acquireWakeLock(saveActivity, wakeLock);
- }
- if (trackIds.length == 1 && trackIds[0] == -1L) {
- return saveAllTracks();
- } else {
- totalCount = 1;
- Track[] tracks = new Track[trackIds.length];
- for (int i = 0; i < trackIds.length; i++) {
- tracks[i] = contentProviderUtils.getTrack(trackIds[i]);
- if (tracks[i] == null) {
- Log.d(TAG, "No track for " + trackIds[i]);
- return false;
- }
- }
- if (saveTracks(tracks)) {
- successCount = 1;
- return true;
- } else {
- return false;
- }
+ wakeLock = SystemUtils.acquireWakeLock(exportActivity, wakeLock);
}
+ return saveAllTracks();
} finally {
if (wakeLock != null && wakeLock.isHeld()) {
wakeLock.release();
@@ -144,24 +122,24 @@ public class SaveAsyncTask extends AsyncTask {
@Override
protected void onProgressUpdate(Integer... values) {
- if (saveActivity != null) {
- saveActivity.setProgressDialogValue(values[0], values[1]);
+ if (exportActivity != null) {
+ exportActivity.setProgressDialogValue(values[0], values[1]);
}
}
@Override
protected void onPostExecute(Boolean result) {
completed = true;
- if (saveActivity != null) {
- saveActivity.onAsyncTaskCompleted(successCount, totalCount, savedPath);
+ if (exportActivity != null) {
+ exportActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@Override
protected void onCancelled() {
completed = true;
- if (saveActivity != null) {
- saveActivity.onAsyncTaskCompleted(successCount, totalCount, null);
+ if (exportActivity != null) {
+ exportActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@@ -179,14 +157,10 @@ public class SaveAsyncTask extends AsyncTask {
FileTrackExporter fileTrackExporter = new FileTrackExporter(contentProviderUtils, tracks,
trackFileFormat.newTrackWriter(context, tracks.length > 1),
new TrackExporterListener() {
-
@Override
public void onProgressUpdate(int number, int max) {
- /*
- * If only saving one track, update the progress dialog once every
- * 500 points
- */
- if (trackIds.length == 1 && trackIds[0] != -1L && number % 500 == 0) {
+ //Update the progress dialog once every 500 points.
+ if (number % 500 == 0) {
publishProgress(number, max);
}
}
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
index f4c41225c..bbe3f58cf 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportActivity.java
@@ -16,27 +16,23 @@
package de.dennisguse.opentracks.io.file.importer;
-import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
-import android.net.Uri;
import android.os.Bundle;
-import android.util.Log;
import android.widget.Toast;
-import androidx.core.app.TaskStackBuilder;
+import androidx.fragment.app.FragmentActivity;
-import de.dennisguse.opentracks.TrackDetailActivity;
+import java.io.File;
+
+import de.dennisguse.opentracks.R;
+import de.dennisguse.opentracks.fragments.FileTypeDialogFragment;
import de.dennisguse.opentracks.io.file.TrackFileFormat;
import de.dennisguse.opentracks.util.DialogUtils;
import de.dennisguse.opentracks.util.FileUtils;
-import de.dennisguse.opentracks.util.IntentUtils;
-import de.dennisguse.opentracks.R;
-
-import java.io.File;
/**
* An activity to import files from the external storage. Optionally to import
@@ -44,10 +40,7 @@ import java.io.File;
*
* @author Rodrigo Damazio
*/
-public class ImportActivity extends Activity {
-
- public static final String EXTRA_IMPORT_ALL = "import_all";
- public static final String EXTRA_TRACK_FILE_FORMAT = "track_file_format";
+public class ImportActivity extends FragmentActivity implements FileTypeDialogFragment.FileTypeCaller {
private static final String TAG = ImportActivity.class.getSimpleName();
private static final int DIALOG_PROGRESS_ID = 0;
@@ -56,8 +49,6 @@ public class ImportActivity extends Activity {
private ImportAsyncTask importAsyncTask;
private ProgressDialog progressDialog;
- private boolean importAll;
-
// the path on the external storage to import
private String directoryDisplayName;
@@ -67,16 +58,19 @@ public class ImportActivity extends Activity {
// the number of files to import
private int totalCount;
- // the last successfully imported track id
- private long trackId;
-
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ FileTypeDialogFragment
+ .newInstance(R.string.import_selection_title, R.string.import_selection_option)
+ .show(getSupportFragmentManager(), FileTypeDialogFragment.FILE_TYPE_DIALOG_TAG);
+ }
+
+
+ @Override
+ public void onFileTypeDone(TrackFileFormat trackFileFormat) {
Intent intent = getIntent();
- importAll = intent.getBooleanExtra(EXTRA_IMPORT_ALL, false);
- TrackFileFormat trackFileFormat = intent.getParcelableExtra(EXTRA_TRACK_FILE_FORMAT);
if (trackFileFormat == null) {
trackFileFormat = TrackFileFormat.GPX;
}
@@ -86,49 +80,26 @@ public class ImportActivity extends Activity {
finish();
return;
}
- String directoryPath;
- if (importAll) {
- directoryDisplayName = FileUtils.getPathDisplayName(trackFileFormat.getExtension());
- directoryPath = FileUtils.getPath(trackFileFormat.getExtension());
- if (!FileUtils.isDirectory(new File(directoryPath))) {
- Toast.makeText(
- this, getString(R.string.import_no_directory, directoryDisplayName), Toast.LENGTH_LONG)
- .show();
- finish();
- return;
- }
- } else {
- String action = intent.getAction();
- if (!(Intent.ACTION_ATTACH_DATA.equals(action) || Intent.ACTION_VIEW.equals(action))) {
- Log.d(TAG, "Invalid action: " + intent);
- finish();
- return;
- }
- Uri data = intent.getData();
- if ("file".equals(data.getScheme())) {
- Log.d(TAG, "Invalid data: " + intent);
- finish();
- return;
- }
- directoryDisplayName = data.getPath();
- directoryPath = data.getPath();
+ directoryDisplayName = FileUtils.getPathDisplayName(trackFileFormat.getExtension());
+ String directoryPath = FileUtils.getPath(trackFileFormat.getExtension());
+ if (!FileUtils.isDirectory(new File(directoryPath))) {
+ Toast.makeText(
+ this, getString(R.string.import_no_directory, directoryDisplayName), Toast.LENGTH_LONG)
+ .show();
+ finish();
+ return;
}
- Object retained = getLastNonConfigurationInstance();
- if (retained instanceof ImportAsyncTask) {
- importAsyncTask = (ImportAsyncTask) retained;
- importAsyncTask.setActivity(this);
- } else {
- importAsyncTask = new ImportAsyncTask(this, importAll, trackFileFormat, directoryPath);
- importAsyncTask.execute();
- }
- }
-
- @Override
- public Object onRetainNonConfigurationInstance() {
- importAsyncTask.setActivity(null);
- return importAsyncTask;
+ //TODO (still needed?): getLastNonConfiguration instance returned SaveAsyncTask before
+// Object retained = getLastNonConfigurationInstance();
+// if (retained instanceof ImportAsyncTask) {
+// importAsyncTask = (ImportAsyncTask) retained;
+// importAsyncTask.setActivity(this);
+// } else {
+ importAsyncTask = new ImportAsyncTask(this, trackFileFormat, directoryPath);
+ importAsyncTask.execute();
+// }
}
@Override
@@ -176,14 +147,6 @@ public class ImportActivity extends Activity {
}).setPositiveButton(R.string.generic_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int which) {
- if (successCount == totalCount && !importAll && trackId != -1L) {
- Intent intent = IntentUtils.newIntent(
- ImportActivity.this, TrackDetailActivity.class)
- .putExtra(TrackDetailActivity.EXTRA_TRACK_ID, trackId);
- TaskStackBuilder.create(ImportActivity.this)
- .addParentStack(TrackDetailActivity.class).addNextIntent(intent)
- .startActivities();
- }
dialogInterface.dismiss();
finish();
}
@@ -206,12 +169,10 @@ public class ImportActivity extends Activity {
*
* @param aSuccessCount the number of files successfully imported
* @param aTotalCount the number of files to import
- * @param aTrackId the last successfully imported track id
*/
- public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount, long aTrackId) {
+ public void onAsyncTaskCompleted(int aSuccessCount, int aTotalCount) {
successCount = aSuccessCount;
totalCount = aTotalCount;
- trackId = aTrackId;
removeDialog(DIALOG_PROGRESS_ID);
showDialog(DIALOG_RESULT_ID);
}
diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportAsyncTask.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportAsyncTask.java
index 8aa1621ca..095267047 100644
--- a/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportAsyncTask.java
+++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/ImportAsyncTask.java
@@ -22,6 +22,14 @@ import android.os.AsyncTask;
import android.os.PowerManager.WakeLock;
import android.util.Log;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.content.ContentProviderUtils;
import de.dennisguse.opentracks.content.Track;
import de.dennisguse.opentracks.io.file.TrackFileFormat;
@@ -29,14 +37,6 @@ import de.dennisguse.opentracks.io.file.exporter.KmzTrackExporter;
import de.dennisguse.opentracks.util.FileUtils;
import de.dennisguse.opentracks.util.PreferencesUtils;
import de.dennisguse.opentracks.util.SystemUtils;
-import de.dennisguse.opentracks.R;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
/**
* AsyncTask to import files from the external storage.
@@ -46,7 +46,6 @@ import java.util.List;
public class ImportAsyncTask extends AsyncTask {
private static final String TAG = ImportAsyncTask.class.getSimpleName();
- private final boolean importAll;
private final TrackFileFormat trackFileFormat;
private final String path;
private final Context context;
@@ -69,14 +68,11 @@ public class ImportAsyncTask extends AsyncTask {
* Creates an AsyncTask.
*
* @param importActivity the activity currently associated with this AsyncTask
- * @param importAll true to import all GPX files
* @param trackFileFormat the track file format
* @param path path to import GPX files
*/
- public ImportAsyncTask(ImportActivity importActivity, boolean importAll,
- TrackFileFormat trackFileFormat, String path) {
+ public ImportAsyncTask(ImportActivity importActivity, TrackFileFormat trackFileFormat, String path) {
this.importActivity = importActivity;
- this.importAll = importAll;
this.trackFileFormat = trackFileFormat;
this.path = path;
context = importActivity.getApplicationContext();
@@ -95,7 +91,7 @@ public class ImportAsyncTask extends AsyncTask {
public void setActivity(ImportActivity importActivity) {
this.importActivity = importActivity;
if (completed && importActivity != null) {
- importActivity.onAsyncTaskCompleted(successCount, totalCount, trackId);
+ importActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@@ -155,7 +151,7 @@ public class ImportAsyncTask extends AsyncTask {
protected void onPostExecute(Boolean result) {
completed = true;
if (importActivity != null) {
- importActivity.onAsyncTaskCompleted(successCount, totalCount, trackId);
+ importActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@@ -163,7 +159,7 @@ public class ImportAsyncTask extends AsyncTask {
protected void onCancelled() {
completed = true;
if (importActivity != null) {
- importActivity.onAsyncTaskCompleted(successCount, totalCount, trackId);
+ importActivity.onAsyncTaskCompleted(successCount, totalCount);
}
}
@@ -215,26 +211,24 @@ public class ImportAsyncTask extends AsyncTask {
private List getFiles() {
List files = new ArrayList<>();
File file = new File(path);
- if (importAll) {
- File[] candidates = file.listFiles();
- if (candidates != null) {
- for (File candidate : candidates) {
- if (!FileUtils.isDirectory(candidate)) {
- String extension = FileUtils.getExtension(candidate.getName());
- if (trackFileFormat == TrackFileFormat.KML && (
- TrackFileFormat.KML.getExtension().equals(extension)
- || KmzTrackExporter.KMZ_EXTENSION.equals(extension))) {
- files.add(candidate);
- } else if (trackFileFormat == TrackFileFormat.GPX
- && TrackFileFormat.GPX.getExtension().equals(extension)) {
- files.add(candidate);
- }
+
+ File[] candidates = file.listFiles();
+ if (candidates != null) {
+ for (File candidate : candidates) {
+ if (!FileUtils.isDirectory(candidate)) {
+ String extension = FileUtils.getExtension(candidate.getName());
+ if (trackFileFormat == TrackFileFormat.KML
+ && (TrackFileFormat.KML.getExtension().equals(extension)
+ || KmzTrackExporter.KMZ_EXTENSION.equals(extension))) {
+ files.add(candidate);
+ } else if (trackFileFormat == TrackFileFormat.GPX && TrackFileFormat.GPX.getExtension().equals(extension)) {
+ files.add(candidate);
}
}
}
- } else {
- files.add(file);
}
+
+
return files;
}
}
diff --git a/src/main/res/menu/track_list.xml b/src/main/res/menu/track_list.xml
index dab702a05..6a4358fda 100644
--- a/src/main/res/menu/track_list.xml
+++ b/src/main/res/menu/track_list.xml
@@ -34,14 +34,6 @@ limitations under the License.
android:id="@+id/track_list_aggregated_statistics"
android:icon="@drawable/ic_menu_aggregated_statistics"
android:title="@string/menu_aggregated_statistics" />
-
-
-
+
+
+
+
+
+
+
+
+