diff --git a/src/main/java/de/dennisguse/opentracks/AbstractTrackDeleteActivity.java b/src/main/java/de/dennisguse/opentracks/AbstractTrackDeleteActivity.java
index 95b1b6571..44dc52ff4 100644
--- a/src/main/java/de/dennisguse/opentracks/AbstractTrackDeleteActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/AbstractTrackDeleteActivity.java
@@ -88,11 +88,14 @@ public abstract class AbstractTrackDeleteActivity extends AbstractActivity imple
if (deleteStatus.isFinished() && trackDeleteServiceConnection != null) {
trackDeleteServiceConnection.unbind(this);
trackDeleteServiceConnection = null;
+ onDeleteFinished();
}
}
protected abstract void onDeleteConfirmed();
+ protected abstract void onDeleteFinished();
+
protected abstract Track.Id getRecordingTrackId();
@Override
diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
index cd0b8d562..3066c8776 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java
@@ -445,6 +445,11 @@ public class TrackListActivity extends AbstractTrackDeleteActivity implements Co
// Do nothing
}
+ @Override
+ protected void onDeleteFinished() {
+ // Do nothing
+ }
+
@Nullable
@Override
protected Track.Id getRecordingTrackId() {
diff --git a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
index c6b809f2d..3229afd34 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackRecordedActivity.java
@@ -244,6 +244,11 @@ public class TrackRecordedActivity extends AbstractTrackDeleteActivity implement
runOnUiThread(this::finish);
}
+ @Override
+ protected void onDeleteFinished() {
+ // Do nothing
+ }
+
/**
* Gets the {@link TrackDataHub}.
*/
diff --git a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
index 438a89f24..a30a7e913 100644
--- a/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
+++ b/src/main/java/de/dennisguse/opentracks/TrackStoppedActivity.java
@@ -15,13 +15,14 @@ import de.dennisguse.opentracks.databinding.TrackStoppedBinding;
import de.dennisguse.opentracks.fragments.ChooseActivityTypeDialogFragment;
import de.dennisguse.opentracks.services.TrackRecordingServiceConnection;
import de.dennisguse.opentracks.settings.PreferencesUtils;
+import de.dennisguse.opentracks.ui.aggregatedStatistics.ConfirmDeleteDialogFragment;
import de.dennisguse.opentracks.util.ExportUtils;
import de.dennisguse.opentracks.util.IntentUtils;
import de.dennisguse.opentracks.util.StringUtils;
import de.dennisguse.opentracks.util.TrackIconUtils;
import de.dennisguse.opentracks.util.TrackUtils;
-public class TrackStoppedActivity extends AbstractActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller {
+public class TrackStoppedActivity extends AbstractTrackDeleteActivity implements ChooseActivityTypeDialogFragment.ChooseActivityTypeCaller {
private static final String TAG = TrackStoppedActivity.class.getSimpleName();
@@ -31,6 +32,8 @@ public class TrackStoppedActivity extends AbstractActivity implements ChooseActi
private Track.Id trackId;
+ private boolean isDiscarding = false;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -94,13 +97,16 @@ public class TrackStoppedActivity extends AbstractActivity implements ChooseActi
finish();
});
- viewBinding.resumeButton.setOnClickListener(v -> {
- resumeTrackAndFinish();
- });
+ viewBinding.resumeButton.setOnClickListener(v -> resumeTrackAndFinish());
+
+ viewBinding.discardButton.setOnClickListener(v -> ConfirmDeleteDialogFragment.showDialog(getSupportFragmentManager(), trackId));
}
@Override
public void onBackPressed() {
+ if (isDiscarding) {
+ return;
+ }
super.onBackPressed();
resumeTrackAndFinish();
}
@@ -134,4 +140,22 @@ public class TrackStoppedActivity extends AbstractActivity implements ChooseActi
finish();
}).startAndBind(this);
}
-}
\ No newline at end of file
+
+ @Override
+ protected void onDeleteConfirmed() {
+ isDiscarding = true;
+ viewBinding.loadingLayout.loadingText.setText(getString(R.string.track_discarding));
+ viewBinding.contentLinearLayout.setVisibility(View.GONE);
+ viewBinding.loadingLayout.loadingIndeterminate.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ protected void onDeleteFinished() {
+ finish();
+ }
+
+ @Override
+ protected Track.Id getRecordingTrackId() {
+ return null;
+ }
+}
diff --git a/src/main/res/drawable/ic_baseline_delete_24.xml b/src/main/res/drawable/ic_baseline_delete_24.xml
new file mode 100644
index 000000000..de011dd99
--- /dev/null
+++ b/src/main/res/drawable/ic_baseline_delete_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/src/main/res/layout/loading_indeterminate.xml b/src/main/res/layout/loading_indeterminate.xml
new file mode 100644
index 000000000..a6629c7d8
--- /dev/null
+++ b/src/main/res/layout/loading_indeterminate.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+
+
+
diff --git a/src/main/res/layout/track_stopped.xml b/src/main/res/layout/track_stopped.xml
index 6eb018fb1..2bc7f10f6 100644
--- a/src/main/res/layout/track_stopped.xml
+++ b/src/main/res/layout/track_stopped.xml
@@ -7,187 +7,219 @@
android:layout_height="match_parent"
android:orientation="vertical">
-
+
-
+
-
-
-
-
-
+
+ android:orientation="vertical"
+ android:padding="8dp">
-
-
-
-
-
-
-
-
+ android:orientation="horizontal">
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ android:layout_height="match_parent"
+ android:padding="8dp">
-
-
+ app:srcCompat="@drawable/ic_delete_forever_24dp" />
-
-
+
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index b72119a5f..42a6caa5d 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -259,6 +259,7 @@ limitations under the License.
Photo marker
Record
Stop
+ Discard
Track
Thread interrupted
@@ -491,6 +492,7 @@ limitations under the License.
Deleting…
%1$d/%2$d
This track cannot be deleted as it is currently recorded.
+ Discarding Track
Stats
Intervals