From 28e75ecf663e0278283c411d64834e70b2a8caf7 Mon Sep 17 00:00:00 2001 From: y20k Date: Tue, 18 Sep 2018 11:39:11 +0200 Subject: [PATCH] ask user what to do with an empty recording (see #21) --- .../java/org/y20k/trackbook/MainActivity.java | 18 ++++++++---- .../trackbook/MainActivityMapFragment.java | 29 +++++++++++++++---- .../y20k/trackbook/helpers/TrackbookKeys.java | 1 + app/src/main/res/values-de/strings.xml | 3 ++ app/src/main/res/values-id/strings.xml | 3 ++ app/src/main/res/values-it/strings.xml | 3 ++ app/src/main/res/values-ja/strings.xml | 3 ++ app/src/main/res/values-nb-rNO/strings.xml | 3 ++ app/src/main/res/values-nl/strings.xml | 3 ++ app/src/main/res/values/strings.xml | 3 ++ 10 files changed, 58 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/org/y20k/trackbook/MainActivity.java b/app/src/main/java/org/y20k/trackbook/MainActivity.java index 3019d13..e4efe10 100755 --- a/app/src/main/java/org/y20k/trackbook/MainActivity.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivity.java @@ -266,9 +266,20 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { if (resultCode == Activity.RESULT_OK) { // user chose CLEAR handleStateAfterClear(); - LogHelper.v(LOG_TAG, "Save dialog result: CLEAR"); + LogHelper.v(LOG_TAG, "Clear map dialog result: CLEAR"); } else if (resultCode == Activity.RESULT_CANCELED){ - LogHelper.v(LOG_TAG, "Clear map: User chose CANCEL."); + LogHelper.v(LOG_TAG, "Clear map dialog result: User chose CANCEL."); + } + break; + case RESULT_EMPTY_RECORDING_DIALOG: + if (resultCode == Activity.RESULT_OK) { + // User chose RESUME RECORDING + handleResumeButtonClick((View)mFloatingActionButtonMain); + LogHelper.v(LOG_TAG, "Empty recording dialog result: RESUME"); + } else if (resultCode == Activity.RESULT_CANCELED){ + // User chose CANCEL - do nothing just hide the sub menu + showFloatingActionButtonMenu(false); + LogHelper.v(LOG_TAG, "Empty recording dialog result: CANCEL"); } break; } @@ -341,9 +352,6 @@ public class MainActivity extends AppCompatActivity implements TrackbookKeys { /* Handles the visual state after a save action */ private void handleStateAfterClear() { - // notify user - Toast.makeText(this, getString(R.string.toast_message_track_clear), Toast.LENGTH_LONG).show(); - // dismiss notification dismissNotification(); diff --git a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java index 66f59ef..5649b5f 100755 --- a/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java +++ b/app/src/main/java/org/y20k/trackbook/MainActivityMapFragment.java @@ -46,6 +46,7 @@ import org.osmdroid.views.overlay.ItemizedIconOverlay; import org.osmdroid.views.overlay.compass.CompassOverlay; import org.osmdroid.views.overlay.compass.InternalCompassOrientationProvider; import org.y20k.trackbook.core.Track; +import org.y20k.trackbook.helpers.DialogHelper; import org.y20k.trackbook.helpers.LocationHelper; import org.y20k.trackbook.helpers.LogHelper; import org.y20k.trackbook.helpers.MapHelper; @@ -55,6 +56,8 @@ import org.y20k.trackbook.helpers.TrackbookKeys; import java.util.List; import androidx.annotation.NonNull; +import androidx.appcompat.app.AppCompatActivity; +import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; import androidx.localbroadcastmanager.content.LocalBroadcastManager; @@ -326,7 +329,12 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { break; case RESULT_CLEAR_DIALOG: if (resultCode == Activity.RESULT_OK) { - // User chose CLEAR - clear map, DO NOT save track + // User chose CLEAR + if (mTrack.getSize() > 0) { + // Track is not empty - notify user + Toast.makeText(mActivity, getString(R.string.toast_message_track_clear), Toast.LENGTH_LONG).show(); + } + // clear map, DO NOT save track clearMap(false); // handle FloatingActionButton state in MainActivity ((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode); @@ -334,6 +342,10 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { LogHelper.v(LOG_TAG, "Clear dialog result: CANCEL"); } break; + case RESULT_EMPTY_RECORDING_DIALOG: + // handle FloatingActionButton state and possible Resume-Action in MainActivity + ((MainActivity)mActivity).onFloatingActionButtonResult(requestCode, resultCode); + break; } } @@ -454,11 +466,16 @@ public class MainActivityMapFragment extends Fragment implements TrackbookKeys { /* Handles case when user chose to save recording with zero waypoints */ // todo implement private void handleEmptyRecordingSaveRequest() { - // todo ask user what to do - Toast.makeText(mActivity, " Error. Empty recording. Clearing Map.", Toast.LENGTH_LONG).show(); // todo user alert (clear track?) - // todo change (solution for now: insta-clear) - clearMap(false); - ((MainActivity)mActivity).onFloatingActionButtonResult(RESULT_CLEAR_DIALOG, Activity.RESULT_OK); + // prepare empty recording dialog ("Unable to save") + int dialogTitle = R.string.dialog_error_empty_recording_title; + String dialogMessage = getString(R.string.dialog_error_empty_recording_content); + int dialogPositiveButton = R.string.dialog_error_empty_recording_action_resume; + int dialogNegativeButton = R.string.dialog_default_action_cancel; + // show empty recording dialog + DialogFragment dialogFragment = DialogHelper.newInstance(dialogTitle, dialogMessage, dialogPositiveButton, dialogNegativeButton); + dialogFragment.setTargetFragment(this, RESULT_EMPTY_RECORDING_DIALOG); + dialogFragment.show(((AppCompatActivity)mActivity).getSupportFragmentManager(), "EmptyRecordingDialog"); + // results of dialog are handled by onActivityResult } diff --git a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java index bffd045..c1a5f59 100755 --- a/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java +++ b/app/src/main/java/org/y20k/trackbook/helpers/TrackbookKeys.java @@ -80,6 +80,7 @@ public interface TrackbookKeys { int RESULT_CLEAR_DIALOG = 2; int RESULT_DELETE_DIALOG = 3; int RESULT_EXPORT_DIALOG = 4; + int RESULT_EMPTY_RECORDING_DIALOG = 5; /* CONSTANTS */ long ONE_SECOND_IN_NANOSECOND = 1000000000L; diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 7ee2c80..e1dd41c 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -45,6 +45,9 @@ Datei existiert bereits. Exportieren und überschreiben Sie diese Aufzeichnung als GPX-Strecke. Exportieren und überschreiben GPX-Datei öffnen mit + Speichern nicht möglich + Trackbook hat noch keine Wegpunkte aufgezeichnet. + Aufzeichnung fortsetzen Berechtigungen erteilt. diff --git a/app/src/main/res/values-id/strings.xml b/app/src/main/res/values-id/strings.xml index d8e146e..0b3394b 100644 --- a/app/src/main/res/values-id/strings.xml +++ b/app/src/main/res/values-id/strings.xml @@ -45,6 +45,9 @@ File already exists. Export and overwrite this recording as GPX track. Export and Overwrite Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording Permissions granted. diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml index 59736fb..361eada 100644 --- a/app/src/main/res/values-it/strings.xml +++ b/app/src/main/res/values-it/strings.xml @@ -45,6 +45,9 @@ Il file esiste già. Esportare e sovrascrivere questa registrazione come traccia GPX. Esporta e sovrascrivi Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording Permessi acquisiti. diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f8e7d0d..5acf9e6 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -45,6 +45,9 @@ ファイルは既に存在します。エクスポートし、GPX トラックとしてこの記録を上書きします。 エクスポートして上書き Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording アクセス許可を付与しました。 diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index 7c717a5..aaca830 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -45,6 +45,9 @@ Fila finnes allerede. Eksporter og overskriv dette opptaket som en GPX-tur. Eksporter og overskriv Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording Tilgang gitt. diff --git a/app/src/main/res/values-nl/strings.xml b/app/src/main/res/values-nl/strings.xml index 9dce0c1..c953cae 100644 --- a/app/src/main/res/values-nl/strings.xml +++ b/app/src/main/res/values-nl/strings.xml @@ -45,6 +45,9 @@ File already exists. Export and overwrite this recording as GPX track. Export and Overwrite Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording Rechten verleend. diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3f6578..3922ab3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -45,6 +45,9 @@ File already exists. Export and overwrite this recording as GPX track. Export and Overwrite Share GPX file with + Unable to save + Trackbook did not record any waypoints so far. + Resume Recording Permissions granted.