From 78c833ac1b040ea8fdfd3a6b2bccc5fdc8ff8319 Mon Sep 17 00:00:00 2001 From: BMItter <Berndus@gmx.de> Date: Mon, 14 Jun 2021 10:43:33 +0200 Subject: [PATCH] Remove RAT/PCR Test logic & ui (EXPOSUREAPP-6931) (#3420) * prepared layout & values * test removel no submission and dialog handling * sourcecheck clean * detekt clean Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../coronawarnapp/ui/main/home/HomeData.kt | 3 ++- .../ui/HomeTestCardsFragmentViewModel.kt | 4 ++-- .../ui/homecards/PcrTestPositiveCard.kt | 4 +++- .../ui/homecards/RapidTestPositiveCard.kt | 4 +++- .../ui/main/home/HomeFragment.kt | 21 +++++++++++++------ .../ui/main/home/HomeFragmentEvents.kt | 2 +- .../ui/main/home/HomeFragmentViewModel.kt | 16 ++++++++------ ...on_pcr_status_card_positive_not_shared.xml | 19 +++++++++++++---- ..._rapid_status_card_positive_not_shared.xml | 21 ++++++++++++++----- .../src/main/res/values-de/strings.xml | 8 ++++++- .../src/main/res/values/strings.xml | 6 ++++++ 11 files changed, 80 insertions(+), 28 deletions(-) diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt index e12a5aa4f..6558306ee 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeData.kt @@ -145,7 +145,8 @@ object HomeData { state = TestPositive( testRegisteredAt = Instant.now() ), - onClickAction = {} + onClickAction = {}, + onRemoveAction = {} ) val TEST_NEGATIVE_ITEM = PcrTestNegativeCard.Item( diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt index a91ab2477..95980e35e 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/hometestcards/ui/HomeTestCardsFragmentViewModel.kt @@ -45,7 +45,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( PcrTestInvalidCard.Item(SubmissionStatePCR.TestInvalid) {}, PcrTestErrorCard.Item(SubmissionStatePCR.TestError) {}, PcrTestNegativeCard.Item(SubmissionStatePCR.TestNegative(Instant.now())) {}, - PcrTestPositiveCard.Item(SubmissionStatePCR.TestPositive(Instant.now())) {}, + PcrTestPositiveCard.Item(SubmissionStatePCR.TestPositive(Instant.now()), {}) {}, PcrTestSubmissionDoneCard.Item(SubmissionStatePCR.SubmissionDone(Instant.now())) {}, RapidTestPendingCard.Item(SubmissionStateRAT.TestPending) {}, RapidTestReadyCard.Item(SubmissionStateRAT.TestResultReady) {}, @@ -53,7 +53,7 @@ class HomeTestCardsFragmentViewModel @AssistedInject constructor( RapidTestOutdatedCard.Item(SubmissionStateRAT.TestOutdated) {}, RapidTestErrorCard.Item(SubmissionStateRAT.TestError) {}, RapidTestNegativeCard.Item(SubmissionStateRAT.TestNegative(Instant.now())) {}, - RapidTestPositiveCard.Item(SubmissionStateRAT.TestPositive(Instant.now())) {}, + RapidTestPositiveCard.Item(SubmissionStateRAT.TestPositive(Instant.now()), {}) {}, RapidTestSubmissionDoneCard.Item(SubmissionStateRAT.SubmissionDone(Instant.now())) {} ) ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestPositiveCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestPositiveCard.kt index 5d52d9acd..ad9112328 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestPositiveCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/PcrTestPositiveCard.kt @@ -34,11 +34,13 @@ class PcrTestPositiveCard( itemView.setOnClickListener { curItem.onClickAction(item) } submissionStatusCardPositiveButton.setOnClickListener { itemView.performClick() } + submissionStatusCardPositiveButtonDelete.setOnClickListener { curItem.onRemoveAction() } } data class Item( val state: SubmissionStatePCR.TestPositive, - val onClickAction: (Item) -> Unit + val onClickAction: (Item) -> Unit, + val onRemoveAction: () -> Unit ) : TestResultItem.PCR, HasPayloadDiffer { override fun diffPayload(old: Any, new: Any): Any? = if (old::class == new::class) new else null } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestPositiveCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestPositiveCard.kt index 4b244824e..fe04cbfbc 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestPositiveCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/submission/ui/homecards/RapidTestPositiveCard.kt @@ -34,11 +34,13 @@ class RapidTestPositiveCard( itemView.setOnClickListener { curItem.onClickAction(item) } submissionStatusCardPositiveButton.setOnClickListener { itemView.performClick() } + submissionStatusCardPositiveButtonDelete.setOnClickListener { curItem.onRemoveAction() } } data class Item( val state: SubmissionStateRAT.TestPositive, - val onClickAction: (Item) -> Unit + val onClickAction: (Item) -> Unit, + val onRemoveAction: () -> Unit ) : TestResultItem.RA, HasPayloadDiffer { override fun diffPayload(old: Any, new: Any): Any? = if (old::class == new::class) new else null } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt index 32109ff0f..57a9d2cbf 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt @@ -96,11 +96,18 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { binding.container.sendAccessibilityEvent(AccessibilityEvent.TYPE_ANNOUNCEMENT) } - private fun showRemoveTestDialog(type: CoronaTest.Type) { + private fun showRemoveTestDialog(type: CoronaTest.Type, submission: Boolean) { + val title = + if (submission) R.string.submission_test_result_dialog_remove_test_title + else R.string.submission_test_result_dialog_remove_test_title_no_submission + val msg = + if (submission) R.string.submission_test_result_dialog_remove_test_message + else R.string.submission_test_result_dialog_remove_test_message_no_submission + val removeTestDialog = DialogHelper.DialogInstance( requireActivity(), - R.string.submission_test_result_dialog_remove_test_title, - R.string.submission_test_result_dialog_remove_test_message, + title, + msg, R.string.submission_test_result_dialog_remove_test_button_positive, R.string.submission_test_result_dialog_remove_test_button_negative, positiveButtonFunction = { @@ -108,8 +115,10 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { } ) DialogHelper.showDialog(removeTestDialog).apply { - getButton(DialogInterface.BUTTON_POSITIVE) - .setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) + if (submission) { + getButton(DialogInterface.BUTTON_POSITIVE) + .setTextColor(context.getColorCompat(R.color.colorTextSemanticRed)) + } } } @@ -156,7 +165,7 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { HomeFragmentEvents.GoToRapidTestResultNegativeFragment -> doNavigate( HomeFragmentDirections.actionMainFragmentToSubmissionNegativeAntigenTestResultFragment() ) - is HomeFragmentEvents.ShowDeleteTestDialog -> showRemoveTestDialog(event.type) + is HomeFragmentEvents.ShowDeleteTestDialog -> showRemoveTestDialog(event.type, event.submission) is HomeFragmentEvents.OpenIncompatibleUrl -> openUrl(getString(event.url)) is HomeFragmentEvents.OpenTraceLocationOrganizerGraph -> openPresenceTracingOrganizerGraph(event) is HomeFragmentEvents.GoToTestResultAvailableFragment -> doNavigate( diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt index d044daeb0..e38ec25b9 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentEvents.kt @@ -42,7 +42,7 @@ sealed class HomeFragmentEvents { val forceUpdate: Boolean = false ) : HomeFragmentEvents() - data class ShowDeleteTestDialog(val type: CoronaTest.Type) : HomeFragmentEvents() + data class ShowDeleteTestDialog(val type: CoronaTest.Type, val submission: Boolean = true) : HomeFragmentEvents() data class GoToTestResultAvailableFragment(val type: CoronaTest.Type) : HomeFragmentEvents() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index b75e523a1..c2af97d86 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -279,9 +279,11 @@ class HomeFragmentViewModel @AssistedInject constructor( is SubmissionStatePCR.TestResultReady -> PcrTestReadyCard.Item(state) { events.postValue(HomeFragmentEvents.GoToTestResultAvailableFragment(PCR)) } - is SubmissionStatePCR.TestPositive -> PcrTestPositiveCard.Item(state) { - events.postValue(HomeFragmentEvents.GoToTestResultPositiveFragment(PCR)) - } + is SubmissionStatePCR.TestPositive -> PcrTestPositiveCard.Item( + state = state, + onClickAction = { events.postValue(HomeFragmentEvents.GoToTestResultPositiveFragment(PCR)) }, + onRemoveAction = { events.postValue(HomeFragmentEvents.ShowDeleteTestDialog(PCR, false)) } + ) is SubmissionStatePCR.TestNegative -> PcrTestNegativeCard.Item(state) { events.postValue(HomeFragmentEvents.GoToPcrTestResultNegativeFragment(PCR)) } @@ -308,9 +310,11 @@ class HomeFragmentViewModel @AssistedInject constructor( is SubmissionStateRAT.TestResultReady -> RapidTestReadyCard.Item(state) { events.postValue(HomeFragmentEvents.GoToTestResultAvailableFragment(RAPID_ANTIGEN)) } - is SubmissionStateRAT.TestPositive -> RapidTestPositiveCard.Item(state) { - events.postValue(HomeFragmentEvents.GoToTestResultPositiveFragment(RAPID_ANTIGEN)) - } + is SubmissionStateRAT.TestPositive -> RapidTestPositiveCard.Item( + state = state, + onClickAction = { events.postValue(HomeFragmentEvents.GoToTestResultPositiveFragment(RAPID_ANTIGEN)) }, + onRemoveAction = { events.postValue(HomeFragmentEvents.ShowDeleteTestDialog(RAPID_ANTIGEN, false)) } + ) is SubmissionStateRAT.TestNegative -> RapidTestNegativeCard.Item(state) { events.postValue(HomeFragmentEvents.GoToRapidTestResultNegativeFragment) } diff --git a/Corona-Warn-App/src/main/res/layout/home_submission_pcr_status_card_positive_not_shared.xml b/Corona-Warn-App/src/main/res/layout/home_submission_pcr_status_card_positive_not_shared.xml index f69b2b263..37f23daf1 100644 --- a/Corona-Warn-App/src/main/res/layout/home_submission_pcr_status_card_positive_not_shared.xml +++ b/Corona-Warn-App/src/main/res/layout/home_submission_pcr_status_card_positive_not_shared.xml @@ -84,7 +84,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/body" /> - <ImageView + <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -115,7 +115,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/divider" /> - <ImageView + <ImageView android:id="@+id/contact_icon" style="@style/icon" android:layout_width="wrap_content" @@ -143,7 +143,7 @@ app:layout_constraintStart_toEndOf="@+id/contact_icon" app:layout_constraintTop_toTopOf="@+id/contact_icon" /> - <ImageView + <ImageView android:id="@+id/contagious_icon" style="@style/icon" android:layout_width="wrap_content" @@ -171,7 +171,7 @@ app:layout_constraintStart_toEndOf="@+id/contagious_icon" app:layout_constraintTop_toTopOf="@+id/contagious_icon" /> - <ImageView + <ImageView android:id="@+id/share_icon" style="@style/icon" android:layout_width="wrap_content" @@ -210,4 +210,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/share_subtitle" /> + <Button + android:id="@+id/submission_status_card_positive_button_delete" + style="@style/button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="@string/submission_test_result_positive_no_consent_button_remove_test" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/submission_status_card_positive_button" /> + </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/Corona-Warn-App/src/main/res/layout/home_submission_rapid_status_card_positive_not_shared.xml b/Corona-Warn-App/src/main/res/layout/home_submission_rapid_status_card_positive_not_shared.xml index 380fce89b..d656a622a 100644 --- a/Corona-Warn-App/src/main/res/layout/home_submission_rapid_status_card_positive_not_shared.xml +++ b/Corona-Warn-App/src/main/res/layout/home_submission_rapid_status_card_positive_not_shared.xml @@ -84,7 +84,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/body" /> - <ImageView + <ImageView android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" @@ -115,7 +115,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/divider" /> - <ImageView + <ImageView android:id="@+id/prc_icon" style="@style/icon" android:layout_width="wrap_content" @@ -144,7 +144,7 @@ app:layout_constraintStart_toEndOf="@+id/prc_icon" app:layout_constraintTop_toTopOf="@+id/prc_icon" /> - <ImageView + <ImageView android:id="@+id/contact_icon" style="@style/icon" android:layout_width="wrap_content" @@ -172,7 +172,7 @@ app:layout_constraintStart_toEndOf="@+id/contact_icon" app:layout_constraintTop_toTopOf="@+id/contact_icon" /> - <ImageView + <ImageView android:id="@+id/contagious_icon" style="@style/icon" android:layout_width="wrap_content" @@ -200,7 +200,7 @@ app:layout_constraintStart_toEndOf="@+id/contagious_icon" app:layout_constraintTop_toTopOf="@+id/contagious_icon" /> - <ImageView + <ImageView android:id="@+id/share_icon" style="@style/icon" android:layout_width="wrap_content" @@ -239,4 +239,15 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/share_subtitle" /> + <Button + android:id="@+id/submission_status_card_positive_button_delete" + style="@style/button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:text="@string/submission_test_result_positive_no_consent_button_remove_test" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/submission_status_card_positive_button" /> + </androidx.constraintlayout.widget.ConstraintLayout> 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 23e8f1a2d..f9f20a56b 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -309,7 +309,7 @@ <!-- XHED: risk details - infection period logged headling, below behaviors --> <string name="risk_details_subtitle_period_logged">"Dieser Zeitraum wird berücksichtigt."</string> <!-- XHED: risk details - infection period logged information body, below behaviors --> -<!-- Dialog part 1--> + <!-- Dialog part 1--> <string name="risk_details_information_body_period_logged">"Die Berechnung des Infektionsrisikos kann nur für die Zeiträume erfolgen, an denen die Risiko-Ermittlung aktiv war. Die Risiko- Ermittlung sollte daher dauerhaft aktiv sein. Für Ihre Risiko-Ermittlung wird der Zeitraum der letzten 14 Tage betrachtet."</string> <!-- XTXT: risk details - infection period logged information body, under 14 days --> <string name="risk_details_information_body_period_logged_assessment_under_14_days">"Die Corona-Warn-App ist seit %s Tagen installiert. Das Infektionsrisiko wird für Zeiträume berechnet, in denen die Risiko-Ermittlung aktiv ist. Wenn Sie andere Personen getroffen haben und die Risiko-Ermittlung aktiv war, wird Ihr Infektions-Risiko berechnet."</string> @@ -1144,8 +1144,12 @@ <string name="submission_test_result_dialog_tracing_required_button">"OK"</string> <!-- XHED: Dialog title for test removal --> <string name="submission_test_result_dialog_remove_test_title">"Test kann nur einmal gescannt werden"</string> + <!-- XHED: Dialog title for test removal no submission --> + <string name="submission_test_result_dialog_remove_test_title_no_submission">"Sind Sie sicher, dass Sie Ihren Test entfernen wollen?"</string> <!-- YTXT: Dialog text for test removal --> <string name="submission_test_result_dialog_remove_test_message">"Wenn Sie den Test entfernen, können Sie Ihr Testergebnis nicht mehr abrufen. Ihr Testergebnis bekommen Sie vom Testcenter oder Labor, unabhängig von der Gültigkeit des QR-Codes. Bei einem positiven Testergebnis wird auch das zuständige Gesundheitsamt auf dem gesetzlich vorgeschriebenen Weg informiert und sich an Sie wenden."</string> + <!-- YTXT: Dialog text for test removal no submission --> + <string name="submission_test_result_dialog_remove_test_message_no_submission">"Dadurch werden andere nicht gewarnt."</string> <!-- XBUT: Positive button for test removal --> <string name="submission_test_result_dialog_remove_test_button_positive">"Entfernen"</string> <!-- XBUT: Negative button for test removal --> @@ -1234,6 +1238,8 @@ <string name="submission_test_result_positive_no_consent_text_3">Bitte beachten Sie unbedingt die Hinweise des zuständigen Gesundheitsamtes und bleiben Sie zuhause, um andere Personen nicht anzustecken.</string> <!-- XBUT: Button for giving consent for key sharing --> <string name="submission_test_result_positive_no_consent_button_warn_others">Andere warnen</string> + <!-- XBUT: Button for test removal --> + <string name="submission_test_result_positive_no_consent_button_remove_test">Test entfernen</string> <!-- Submission Country Selector --> <!-- XHED: Page title for the submission country selection page --> diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index 5f70fd55b..e58a781da 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -1144,8 +1144,12 @@ <string name="submission_test_result_dialog_tracing_required_button">"OK"</string> <!-- XHED: Dialog title for test removal --> <string name="submission_test_result_dialog_remove_test_title">"The test can only be scanned once."</string> + <!-- XHED: Dialog title for test removal no submission --> + <string name="submission_test_result_dialog_remove_test_title_no_submission">"Sind Sie sicher, dass Sie Ihren Test entfernen wollen?"</string> <!-- YTXT: Dialog text for test removal --> <string name="submission_test_result_dialog_remove_test_message">"If you delete the test, you can no longer retrieve your test result. You will receive your test result from the test center or laboratory regardless of the validity of the QR code. If you are diagnosed with coronavirus, the public health authority will be notified through the legally prescribed channel and will contact you."</string> + <!-- YTXT: Dialog text for test removal no submission --> + <string name="submission_test_result_dialog_remove_test_message_no_submission">"Dadurch werden andere nicht gewarnt."</string> <!-- XBUT: Positive button for test removal --> <string name="submission_test_result_dialog_remove_test_button_positive">"Delete"</string> <!-- XBUT: Negative button for test removal --> @@ -1234,6 +1238,8 @@ <string name="submission_test_result_positive_no_consent_text_3">"Please be sure to follow the instructions from your public health authority and stay home, so you don’t infect others."</string> <!-- XBUT: Button for giving consent for key sharing --> <string name="submission_test_result_positive_no_consent_button_warn_others">"Warn Others"</string> + <!-- XBUT: Button for test removal --> + <string name="submission_test_result_positive_no_consent_button_remove_test">Test entfernen</string> <!-- Submission Country Selector --> <!-- XHED: Page title for the submission country selection page --> -- GitLab