From ecd7405a8c1f786c1f8cb2ca631fd6c6313c9033 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C3=A1n=20Gin=C3=A9s?= Date: Wed, 1 Jun 2022 15:45:03 +0200 Subject: [PATCH] TrackStoppedActivity: added discard button option. Fixes #1267. --- .../AbstractTrackDeleteActivity.java | 3 + .../opentracks/TrackListActivity.java | 5 + .../opentracks/TrackRecordedActivity.java | 5 + .../opentracks/TrackStoppedActivity.java | 34 +- .../res/drawable/ic_baseline_delete_24.xml | 5 + src/main/res/layout/loading_indeterminate.xml | 35 ++ src/main/res/layout/track_stopped.xml | 316 ++++++++++-------- src/main/res/values/strings.xml | 2 + 8 files changed, 258 insertions(+), 147 deletions(-) create mode 100644 src/main/res/drawable/ic_baseline_delete_24.xml create mode 100644 src/main/res/layout/loading_indeterminate.xml 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