diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt index 471d9f48c22b05b97bd0e5b4c81f7b58dfc437c2..07e8fb165b5fa67e093711a1be8b261c8901a234 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/SubmissionResultPositiveOtherWarningFragment.kt @@ -6,6 +6,7 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.accessibility.AccessibilityEvent +import androidx.activity.OnBackPressedCallback import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer @@ -39,6 +40,14 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), private lateinit var internalExposureNotificationPermissionHelper: InternalExposureNotificationPermissionHelper + // Overrides default back behaviour + private val backCallback: OnBackPressedCallback = + object : OnBackPressedCallback(true) { + override fun handleOnBackPressed() { + handleSubmissionCancellation() + } + } + override fun onResume() { super.onResume() binding.submissionPositiveOtherPrivacyContainer.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT) @@ -53,6 +62,7 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), internalExposureNotificationPermissionHelper = InternalExposureNotificationPermissionHelper(this, this) _binding = FragmentSubmissionPositiveOtherWarningBinding.inflate(inflater) + requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, backCallback) binding.submissionViewModel = submissionViewModel binding.lifecycleOwner = this return binding.root @@ -139,10 +149,28 @@ class SubmissionResultPositiveOtherWarningFragment : Fragment(), initiateWarningOthers() } binding.submissionPositiveOtherWarningHeader.headerButtonBack.buttonIcon.setOnClickListener { - navigateToSubmissionResultFragment() + handleSubmissionCancellation() } } + /** + * Opens a Dialog that warns user + * when they're about to cancel the submission flow + * @see DialogHelper + * @see navigateToSubmissionResultFragment + */ + fun handleSubmissionCancellation() { + DialogHelper.showDialog(DialogHelper.DialogInstance( + requireActivity(), + R.string.submission_error_dialog_confirm_cancellation_title, + R.string.submission_error_dialog_confirm_cancellation_body, + R.string.submission_error_dialog_confirm_cancellation_button_positive, + R.string.submission_error_dialog_confirm_cancellation_button_negative, + true, + ::navigateToSubmissionResultFragment + )) + } + private fun navigateToSubmissionResultFragment() = findNavController().doNavigate( SubmissionResultPositiveOtherWarningFragmentDirections diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index bd30d137185b3fc12d2cbb029abcd4d8981c7e25..dcd6de0792094fc9a5577b699e59cc9ad792d218 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -770,6 +770,15 @@ <!-- XBUT: Positive button for submission tan redeemed --> <string name="submission_error_dialog_web_tan_redeemed_button_positive">"OK"</string> + <!-- XHED: Dialog title for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_title">"Wollen Sie wirklich abbrechen?"</string> + <!-- XMSG: Dialog body for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_body">"Ihre bisherigen Angaben werden nicht gespeichert."</string> + <!-- XBUT: Positive button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_positive">"Ja"</string> + <!-- XBUT: Negative button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_negative">"Nein"</string> + <!-- Permission Rationale Dialog --> <!-- XHED: Dialog headline QR Scan permission rationale --> <string name="submission_qr_code_scan_permission_rationale_dialog_headline">"Kamera-Zugriff benötigt"</string> diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index dd547438dfd0638837dea2a1ba92600bb75c3995..859d05a8b2f8ea0d9d35667cc4971057fcfac198 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -772,6 +772,15 @@ <!-- XBUT: Positive button for submission tan redeemed --> <string name="submission_error_dialog_web_tan_redeemed_button_positive">"OK"</string> + <!-- XHED: Dialog title for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_title">"Wollen Sie wirklich abbrechen?"</string> + <!-- XMSG: Dialog body for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_body">"Ihre bisherigen Angaben werden nicht gespeichert."</string> + <!-- XBUT: Positive button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_positive">"Ja"</string> + <!-- XBUT: Negative button for keys submission process cancellation --> + <string name="submission_error_dialog_confirm_cancellation_button_negative">"Nein"</string> + <!-- Permission Rationale Dialog --> <!-- XHED: Dialog headline QR Scan permission rationale --> <string name="submission_qr_code_scan_permission_rationale_dialog_headline">"Camera authorization required"</string>