From 4edf5e8d50c66e072399a8bc984326eef9fbbe24 Mon Sep 17 00:00:00 2001 From: Mohamed Metwalli <mohamed.metwalli@sap.com> Date: Tue, 18 May 2021 14:23:58 +0200 Subject: [PATCH] Vaccination Home Cards (EXPOSUREAPP-7231) (#3199) * Rename card * Adjust vaccination home cards * Update VaccinatedPerson.kt * String plurals * Lint Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../coronawarnapp/ui/main/home/HomeAdapter.kt | 12 ++--- .../ui/main/home/HomeFragmentViewModel.kt | 18 ++----- ...meCard.kt => ImmuneVaccinationHomeCard.kt} | 10 ++-- .../homecard/IncompleteVaccinationHomeCard.kt | 38 -------------- .../ui/homecard/VaccinationHomeCard.kt | 52 +++++++++++++++++++ .../vaccination_card_icon_complete.xml | 8 +-- .../drawable/vaccination_card_icon_immune.xml | 17 ++++++ ...ete_card.xml => vaccination_home_card.xml} | 10 ++-- ...d.xml => vaccination_home_immune_card.xml} | 12 +++-- .../res/values-de/vaccination_strings.xml | 15 ++++-- .../main/res/values/vaccination_strings.xml | 11 +++- 11 files changed, 124 insertions(+), 79 deletions(-) rename Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/{CompleteVaccinationHomeCard.kt => ImmuneVaccinationHomeCard.kt} (70%) delete mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/IncompleteVaccinationHomeCard.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/VaccinationHomeCard.kt create mode 100644 Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml rename Corona-Warn-App/src/main/res/layout/{vaccination_home_incomplete_card.xml => vaccination_home_card.xml} (94%) rename Corona-Warn-App/src/main/res/layout/{vaccination_home_complete_card.xml => vaccination_home_immune_card.xml} (90%) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt index abd463895..1beff6b32 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeAdapter.kt @@ -38,9 +38,9 @@ import de.rki.coronawarnapp.util.lists.modular.mods.DataBinderMod import de.rki.coronawarnapp.util.lists.modular.mods.SavedStateMod import de.rki.coronawarnapp.util.lists.modular.mods.StableIdMod import de.rki.coronawarnapp.util.lists.modular.mods.TypedVHCreatorMod -import de.rki.coronawarnapp.vaccination.ui.homecard.CompleteVaccinationHomeCard +import de.rki.coronawarnapp.vaccination.ui.homecard.ImmuneVaccinationHomeCard import de.rki.coronawarnapp.vaccination.ui.homecard.CreateVaccinationHomeCard -import de.rki.coronawarnapp.vaccination.ui.homecard.IncompleteVaccinationHomeCard +import de.rki.coronawarnapp.vaccination.ui.homecard.VaccinationHomeCard class HomeAdapter : ModularAdapter<HomeAdapter.HomeItemVH<HomeItem, ViewBinding>>(), @@ -80,11 +80,11 @@ class HomeAdapter : TypedVHCreatorMod({ data[it] is TestUnregisteredCard.Item }) { TestUnregisteredCard(it) }, TypedVHCreatorMod({ data[it] is StatisticsHomeCard.Item }) { StatisticsHomeCard(it) }, TypedVHCreatorMod({ data[it] is CreateVaccinationHomeCard.Item }) { CreateVaccinationHomeCard(it) }, - TypedVHCreatorMod({ data[it] is CompleteVaccinationHomeCard.Item }) { - CompleteVaccinationHomeCard(it) + TypedVHCreatorMod({ data[it] is ImmuneVaccinationHomeCard.Item }) { + ImmuneVaccinationHomeCard(it) }, - TypedVHCreatorMod({ data[it] is IncompleteVaccinationHomeCard.Item }) { - IncompleteVaccinationHomeCard(it) + TypedVHCreatorMod({ data[it] is VaccinationHomeCard.Item }) { + VaccinationHomeCard(it) }, SavedStateMod<HomeItemVH<HomeItem, ViewBinding>>() // For statistics card scroll position ) 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 a6e180fa4..1e6c375b8 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 @@ -75,9 +75,9 @@ import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson import de.rki.coronawarnapp.vaccination.core.VaccinationSettings import de.rki.coronawarnapp.vaccination.core.repository.VaccinationRepository -import de.rki.coronawarnapp.vaccination.ui.homecard.CompleteVaccinationHomeCard +import de.rki.coronawarnapp.vaccination.ui.homecard.ImmuneVaccinationHomeCard import de.rki.coronawarnapp.vaccination.ui.homecard.CreateVaccinationHomeCard -import de.rki.coronawarnapp.vaccination.ui.homecard.IncompleteVaccinationHomeCard +import de.rki.coronawarnapp.vaccination.ui.homecard.VaccinationHomeCard import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onEach @@ -316,7 +316,8 @@ class HomeFragmentViewModel @AssistedInject constructor( vaccinatedPersons.forEach { vaccinatedPerson -> val card = when (vaccinatedPerson.getVaccinationStatus()) { - VaccinatedPerson.Status.COMPLETE -> CompleteVaccinationHomeCard.Item( + VaccinatedPerson.Status.COMPLETE, + VaccinatedPerson.Status.INCOMPLETE -> VaccinationHomeCard.Item( vaccinatedPerson = vaccinatedPerson, onClickAction = { popupEvents.postValue( @@ -324,7 +325,7 @@ class HomeFragmentViewModel @AssistedInject constructor( ) } ) - VaccinatedPerson.Status.INCOMPLETE -> IncompleteVaccinationHomeCard.Item( + VaccinatedPerson.Status.IMMUNITY -> ImmuneVaccinationHomeCard.Item( vaccinatedPerson = vaccinatedPerson, onClickAction = { popupEvents.postValue( @@ -332,15 +333,6 @@ class HomeFragmentViewModel @AssistedInject constructor( ) } ) - // TODO wrong card, just placeholder - VaccinatedPerson.Status.IMMUNITY -> CompleteVaccinationHomeCard.Item( - vaccinatedPerson = vaccinatedPerson, - onClickAction = { - popupEvents.postValue( - HomeFragmentEvents.GoToVaccinationList(vaccinatedPerson.identifier.code) - ) - } - ) } add(card) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/CompleteVaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/ImmuneVaccinationHomeCard.kt similarity index 70% rename from Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/CompleteVaccinationHomeCard.kt rename to Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/ImmuneVaccinationHomeCard.kt index f64b6f3fd..c8da550d4 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/CompleteVaccinationHomeCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/ImmuneVaccinationHomeCard.kt @@ -2,22 +2,22 @@ package de.rki.coronawarnapp.vaccination.ui.homecard import android.view.ViewGroup import de.rki.coronawarnapp.R -import de.rki.coronawarnapp.databinding.VaccinationHomeCompleteCardBinding +import de.rki.coronawarnapp.databinding.VaccinationHomeImmuneCardBinding import de.rki.coronawarnapp.ui.main.home.HomeAdapter import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson -class CompleteVaccinationHomeCard(parent: ViewGroup) : - HomeAdapter.HomeItemVH<CompleteVaccinationHomeCard.Item, VaccinationHomeCompleteCardBinding>( +class ImmuneVaccinationHomeCard(parent: ViewGroup) : + HomeAdapter.HomeItemVH<ImmuneVaccinationHomeCard.Item, VaccinationHomeImmuneCardBinding>( R.layout.home_card_container_layout, parent ) { override val viewBinding = lazy { - VaccinationHomeCompleteCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) + VaccinationHomeImmuneCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) } - override val onBindData: VaccinationHomeCompleteCardBinding.( + override val onBindData: VaccinationHomeImmuneCardBinding.( item: Item, payloads: List<Any> ) -> Unit = { item, payloads -> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/IncompleteVaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/IncompleteVaccinationHomeCard.kt deleted file mode 100644 index 915eb6d68..000000000 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/IncompleteVaccinationHomeCard.kt +++ /dev/null @@ -1,38 +0,0 @@ -package de.rki.coronawarnapp.vaccination.ui.homecard - -import android.view.ViewGroup -import de.rki.coronawarnapp.R -import de.rki.coronawarnapp.databinding.VaccinationHomeIncompleteCardBinding -import de.rki.coronawarnapp.ui.main.home.HomeAdapter -import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer -import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson - -class IncompleteVaccinationHomeCard(parent: ViewGroup) : - HomeAdapter.HomeItemVH<IncompleteVaccinationHomeCard.Item, VaccinationHomeIncompleteCardBinding>( - R.layout.home_card_container_layout, - parent - ) { - - override val viewBinding = lazy { - VaccinationHomeIncompleteCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) - } - - override val onBindData: VaccinationHomeIncompleteCardBinding.( - item: Item, - payloads: List<Any> - ) -> Unit = { item, payloads -> - val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item - - personName.text = curItem.vaccinatedPerson.fullName - - itemView.setOnClickListener { curItem.onClickAction(item) } - } - - data class Item( - override val vaccinatedPerson: VaccinatedPerson, - val onClickAction: (Item) -> Unit, - ) : VaccinationStatusItem, 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/vaccination/ui/homecard/VaccinationHomeCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/VaccinationHomeCard.kt new file mode 100644 index 000000000..659ff1786 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/homecard/VaccinationHomeCard.kt @@ -0,0 +1,52 @@ +package de.rki.coronawarnapp.vaccination.ui.homecard + +import android.view.ViewGroup +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.VaccinationHomeCardBinding +import de.rki.coronawarnapp.ui.main.home.HomeAdapter +import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer +import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson + +class VaccinationHomeCard(parent: ViewGroup) : + HomeAdapter.HomeItemVH<VaccinationHomeCard.Item, VaccinationHomeCardBinding>( + R.layout.home_card_container_layout, + parent + ) { + + override val viewBinding = lazy { + VaccinationHomeCardBinding.inflate(layoutInflater, itemView.findViewById(R.id.card_container), true) + } + + override val onBindData: VaccinationHomeCardBinding.( + item: Item, + payloads: List<Any> + ) -> Unit = { item, payloads -> + val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item + + personName.text = curItem.vaccinatedPerson.fullName + when (curItem.vaccinatedPerson.getVaccinationStatus()) { + VaccinatedPerson.Status.COMPLETE -> { + val days = curItem.vaccinatedPerson.getTimeUntilImmunity()!!.standardDays.toInt() + vaccinationState.text = context.resources.getQuantityString( + R.plurals.vaccination_card_status_vaccination_complete, + days, + days + ) + icon.setImageResource(R.drawable.vaccination_card_icon_complete) + } + else -> { + vaccinationState.setText(R.string.vaccination_card_status_vaccination_incomplete) + icon.setImageResource(R.drawable.vaccination_card_icon_incomplete) + } + } + itemView.setOnClickListener { curItem.onClickAction(item) } + } + + data class Item( + override val vaccinatedPerson: VaccinatedPerson, + val onClickAction: (Item) -> Unit, + ) : VaccinationStatusItem, 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/res/drawable/vaccination_card_icon_complete.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml index 47227abb7..29d4300db 100644 --- a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml +++ b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml @@ -4,14 +4,14 @@ android:viewportWidth="78" android:viewportHeight="72"> <path - android:pathData="M44.2502,0V4.3846H46.4425V6.7139C42.0321,7.1507 38.05,8.8463 34.7958,11.5096L33.1516,9.8654L34.6588,8.3582L31.5759,5.2752L25.41,11.4411L28.4929,14.524L30.0001,13.0168L31.6444,14.6611C28.9811,17.9153 27.2855,21.8974 26.8487,26.3077H24.5194V24.1154H20.1348V32.8846H24.5194V30.6923H26.8487C27.2855,35.1369 29.0153,39.1447 31.7129,42.4075L30.0001,43.9832L28.4929,42.476L25.41,45.5589L31.5759,51.7248L34.6588,48.6418L33.1516,47.1346L34.7958,45.4219C38.0586,48.1023 42.0236,49.8493 46.4425,50.2861V52.6154H44.2502V57H53.0194V52.6154H50.8271V50.2861C55.2459,49.8493 59.2109,48.1023 62.4737,45.4219H62.5422L64.1179,47.1346L62.6107,48.6418L65.6937,51.7248L71.8595,45.5589L68.7766,42.476L67.2694,43.9832L65.5566,42.4075C65.5609,42.3989 65.5588,42.386 65.5566,42.3732C65.5545,42.3604 65.5524,42.3475 65.5566,42.3389C68.2371,39.0762 69.9841,35.1112 70.4208,30.6923H72.7501V32.8846H77.1348V24.1154H72.7501V26.3077H70.4208C69.9841,21.8974 68.2885,17.9153 65.6251,14.6611L67.2694,13.0168L68.7766,14.524L71.8595,11.4411L65.6937,5.2752L62.6107,8.3582L64.1179,9.8654L62.4737,11.5096C59.2195,8.8463 55.2374,7.1507 50.8271,6.7139V4.3846H53.0194V0H44.2502ZM48.6352,10.9604C58.3465,10.9604 66.1737,18.7876 66.1737,28.4989C66.1737,38.2101 58.3465,46.0373 48.6352,46.0373C38.924,46.0373 31.0968,38.2101 31.0968,28.4989C31.0968,18.7876 38.924,10.9604 48.6352,10.9604ZM39.8653,18.9777C39.8653,17.1622 41.3382,15.6893 43.1537,15.6893C44.9692,15.6893 46.4422,17.1622 46.4422,18.9777C46.4422,20.7933 44.9692,22.2662 43.1537,22.2662C41.3382,22.2662 39.8653,20.7933 39.8653,18.9777ZM54.1157,15.6893C52.3002,15.6893 50.8273,17.1622 50.8273,18.9777C50.8273,20.7933 52.3002,22.2662 54.1157,22.2662C55.9312,22.2662 57.4042,20.7933 57.4042,18.9777C57.4042,17.1622 55.9312,15.6893 54.1157,15.6893ZM34.3848,28.499C34.3848,26.6834 35.8578,25.2105 37.6733,25.2105C39.4888,25.2105 40.9618,26.6834 40.9618,28.499C40.9618,30.3145 39.4888,31.7874 37.6733,31.7874C35.8578,31.7874 34.3848,30.3145 34.3848,28.499ZM48.6353,25.2105C46.8198,25.2105 45.3468,26.6834 45.3468,28.499C45.3468,30.3145 46.8198,31.7874 48.6353,31.7874C50.4508,31.7874 51.9237,30.3145 51.9237,28.499C51.9237,26.6834 50.4508,25.2105 48.6353,25.2105ZM56.3075,28.499C56.3075,26.6834 57.7804,25.2105 59.5959,25.2105C61.4114,25.2105 62.8844,26.6834 62.8844,28.499C62.8844,30.3145 61.4114,31.7874 59.5959,31.7874C57.7804,31.7874 56.3075,30.3145 56.3075,28.499ZM43.1537,34.7339C41.3382,34.7339 39.8653,36.2069 39.8653,38.0224C39.8653,39.8379 41.3382,41.3108 43.1537,41.3108C44.9692,41.3108 46.4422,39.8379 46.4422,38.0224C46.4422,36.2069 44.9692,34.7339 43.1537,34.7339ZM50.8273,38.0224C50.8273,36.2069 52.3002,34.7339 54.1157,34.7339C55.9312,34.7339 57.4042,36.2069 57.4042,38.0224C57.4042,39.8379 55.9312,41.3108 54.1157,41.3108C52.3002,41.3108 50.8273,39.8379 50.8273,38.0224Z" + android:pathData="M44.2499,0V4.3846H46.4422V6.7139C42.0319,7.1507 38.0498,8.8463 34.7956,11.5096L33.1513,9.8654L34.6586,8.3582L31.5756,5.2752L25.4098,11.4411L28.4927,14.524L29.9999,13.0168L31.6441,14.6611C28.9808,17.9153 27.2852,21.8974 26.8485,26.3077H24.5191V24.1154H20.1345V32.8846H24.5191V30.6923H26.8485C27.2852,35.1369 29.0151,39.1447 31.7126,42.4075L29.9999,43.9832L28.4927,42.476L25.4098,45.5589L31.5756,51.7248L34.6586,48.6418L33.1513,47.1346L34.7956,45.4219C38.0583,48.1023 42.0233,49.8493 46.4422,50.2861V52.6154H44.2499V57H53.0191V52.6154H50.8268V50.2861C55.2457,49.8493 59.2107,48.1023 62.4735,45.4219H62.542L64.1177,47.1346L62.6105,48.6418L65.6934,51.7248L71.8593,45.5589L68.7763,42.476L67.2691,43.9832L65.5564,42.4075C65.5607,42.3989 65.5585,42.386 65.5564,42.3732C65.5543,42.3604 65.5521,42.3475 65.5564,42.3389C68.2368,39.0762 69.9838,35.1112 70.4206,30.6923H72.7499V32.8846H77.1345V24.1154H72.7499V26.3077H70.4206C69.9838,21.8974 68.2882,17.9153 65.6249,14.6611L67.2691,13.0168L68.7763,14.524L71.8593,11.4411L65.6934,5.2752L62.6105,8.3582L64.1177,9.8654L62.4735,11.5096C59.2193,8.8463 55.2371,7.1507 50.8268,6.7139V4.3846H53.0191V0H44.2499ZM48.635,10.9604C58.3462,10.9604 66.1734,18.7876 66.1734,28.4989C66.1734,38.2101 58.3462,46.0373 48.635,46.0373C38.9237,46.0373 31.0965,38.2101 31.0965,28.4989C31.0965,18.7876 38.9237,10.9604 48.635,10.9604ZM39.865,18.9777C39.865,17.1622 41.338,15.6893 43.1535,15.6893C44.969,15.6893 46.4419,17.1622 46.4419,18.9777C46.4419,20.7933 44.969,22.2662 43.1535,22.2662C41.338,22.2662 39.865,20.7933 39.865,18.9777ZM54.1155,15.6893C52.3,15.6893 50.827,17.1622 50.827,18.9777C50.827,20.7933 52.3,22.2662 54.1155,22.2662C55.931,22.2662 57.4039,20.7933 57.4039,18.9777C57.4039,17.1622 55.931,15.6893 54.1155,15.6893ZM34.3846,28.499C34.3846,26.6834 35.8575,25.2105 37.673,25.2105C39.4886,25.2105 40.9615,26.6834 40.9615,28.499C40.9615,30.3145 39.4886,31.7874 37.673,31.7874C35.8575,31.7874 34.3846,30.3145 34.3846,28.499ZM48.635,25.2105C46.8195,25.2105 45.3466,26.6834 45.3466,28.499C45.3466,30.3145 46.8195,31.7874 48.635,31.7874C50.4505,31.7874 51.9235,30.3145 51.9235,28.499C51.9235,26.6834 50.4505,25.2105 48.635,25.2105ZM56.3072,28.499C56.3072,26.6834 57.7802,25.2105 59.5957,25.2105C61.4112,25.2105 62.8841,26.6834 62.8841,28.499C62.8841,30.3145 61.4112,31.7874 59.5957,31.7874C57.7802,31.7874 56.3072,30.3145 56.3072,28.499ZM43.1535,34.7339C41.338,34.7339 39.865,36.2069 39.865,38.0224C39.865,39.8379 41.338,41.3108 43.1535,41.3108C44.969,41.3108 46.4419,39.8379 46.4419,38.0224C46.4419,36.2069 44.969,34.7339 43.1535,34.7339ZM50.827,38.0224C50.827,36.2069 52.3,34.7339 54.1155,34.7339C55.931,34.7339 57.4039,36.2069 57.4039,38.0224C57.4039,39.8379 55.931,41.3108 54.1155,41.3108C52.3,41.3108 50.827,39.8379 50.827,38.0224Z" android:fillColor="#ffffff" android:fillAlpha="0.2" - android:fillType="evenOdd" /> + android:fillType="evenOdd"/> <path android:pathData="M22,18L0,27.8182V42.5455C0,56.1682 9.3867,68.9073 22,72C34.6133,68.9073 44,56.1682 44,42.5455V27.8182L22,18Z" - android:fillColor="#ffffff" /> + android:fillColor="#ffffff"/> <path android:pathData="M11.29,43.7909L8,47.2335L17.3333,57L36,37.4671L32.71,34L17.3333,50.0902L11.29,43.7909Z" - android:fillColor="#007FAD" /> + android:fillColor="#616F7E"/> </vector> diff --git a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml new file mode 100644 index 000000000..47227abb7 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml @@ -0,0 +1,17 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="78dp" + android:height="72dp" + android:viewportWidth="78" + android:viewportHeight="72"> + <path + android:pathData="M44.2502,0V4.3846H46.4425V6.7139C42.0321,7.1507 38.05,8.8463 34.7958,11.5096L33.1516,9.8654L34.6588,8.3582L31.5759,5.2752L25.41,11.4411L28.4929,14.524L30.0001,13.0168L31.6444,14.6611C28.9811,17.9153 27.2855,21.8974 26.8487,26.3077H24.5194V24.1154H20.1348V32.8846H24.5194V30.6923H26.8487C27.2855,35.1369 29.0153,39.1447 31.7129,42.4075L30.0001,43.9832L28.4929,42.476L25.41,45.5589L31.5759,51.7248L34.6588,48.6418L33.1516,47.1346L34.7958,45.4219C38.0586,48.1023 42.0236,49.8493 46.4425,50.2861V52.6154H44.2502V57H53.0194V52.6154H50.8271V50.2861C55.2459,49.8493 59.2109,48.1023 62.4737,45.4219H62.5422L64.1179,47.1346L62.6107,48.6418L65.6937,51.7248L71.8595,45.5589L68.7766,42.476L67.2694,43.9832L65.5566,42.4075C65.5609,42.3989 65.5588,42.386 65.5566,42.3732C65.5545,42.3604 65.5524,42.3475 65.5566,42.3389C68.2371,39.0762 69.9841,35.1112 70.4208,30.6923H72.7501V32.8846H77.1348V24.1154H72.7501V26.3077H70.4208C69.9841,21.8974 68.2885,17.9153 65.6251,14.6611L67.2694,13.0168L68.7766,14.524L71.8595,11.4411L65.6937,5.2752L62.6107,8.3582L64.1179,9.8654L62.4737,11.5096C59.2195,8.8463 55.2374,7.1507 50.8271,6.7139V4.3846H53.0194V0H44.2502ZM48.6352,10.9604C58.3465,10.9604 66.1737,18.7876 66.1737,28.4989C66.1737,38.2101 58.3465,46.0373 48.6352,46.0373C38.924,46.0373 31.0968,38.2101 31.0968,28.4989C31.0968,18.7876 38.924,10.9604 48.6352,10.9604ZM39.8653,18.9777C39.8653,17.1622 41.3382,15.6893 43.1537,15.6893C44.9692,15.6893 46.4422,17.1622 46.4422,18.9777C46.4422,20.7933 44.9692,22.2662 43.1537,22.2662C41.3382,22.2662 39.8653,20.7933 39.8653,18.9777ZM54.1157,15.6893C52.3002,15.6893 50.8273,17.1622 50.8273,18.9777C50.8273,20.7933 52.3002,22.2662 54.1157,22.2662C55.9312,22.2662 57.4042,20.7933 57.4042,18.9777C57.4042,17.1622 55.9312,15.6893 54.1157,15.6893ZM34.3848,28.499C34.3848,26.6834 35.8578,25.2105 37.6733,25.2105C39.4888,25.2105 40.9618,26.6834 40.9618,28.499C40.9618,30.3145 39.4888,31.7874 37.6733,31.7874C35.8578,31.7874 34.3848,30.3145 34.3848,28.499ZM48.6353,25.2105C46.8198,25.2105 45.3468,26.6834 45.3468,28.499C45.3468,30.3145 46.8198,31.7874 48.6353,31.7874C50.4508,31.7874 51.9237,30.3145 51.9237,28.499C51.9237,26.6834 50.4508,25.2105 48.6353,25.2105ZM56.3075,28.499C56.3075,26.6834 57.7804,25.2105 59.5959,25.2105C61.4114,25.2105 62.8844,26.6834 62.8844,28.499C62.8844,30.3145 61.4114,31.7874 59.5959,31.7874C57.7804,31.7874 56.3075,30.3145 56.3075,28.499ZM43.1537,34.7339C41.3382,34.7339 39.8653,36.2069 39.8653,38.0224C39.8653,39.8379 41.3382,41.3108 43.1537,41.3108C44.9692,41.3108 46.4422,39.8379 46.4422,38.0224C46.4422,36.2069 44.9692,34.7339 43.1537,34.7339ZM50.8273,38.0224C50.8273,36.2069 52.3002,34.7339 54.1157,34.7339C55.9312,34.7339 57.4042,36.2069 57.4042,38.0224C57.4042,39.8379 55.9312,41.3108 54.1157,41.3108C52.3002,41.3108 50.8273,39.8379 50.8273,38.0224Z" + android:fillColor="#ffffff" + android:fillAlpha="0.2" + android:fillType="evenOdd" /> + <path + android:pathData="M22,18L0,27.8182V42.5455C0,56.1682 9.3867,68.9073 22,72C34.6133,68.9073 44,56.1682 44,42.5455V27.8182L22,18Z" + android:fillColor="#ffffff" /> + <path + android:pathData="M11.29,43.7909L8,47.2335L17.3333,57L36,37.4671L32.71,34L17.3333,50.0902L11.29,43.7909Z" + android:fillColor="#007FAD" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml similarity index 94% rename from Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml rename to Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml index 6967cbc80..38faef5dc 100644 --- a/Corona-Warn-App/src/main/res/layout/vaccination_home_incomplete_card.xml +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml @@ -5,7 +5,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/vaccination_incomplete" - android:padding="@dimen/card_padding"> + android:padding="@dimen/card_padding" + tools:ignore="UnusedAttribute"> <ImageView @@ -23,6 +24,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="16dp" + android:importantForAccessibility="no" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/show_more_action" @@ -51,11 +53,11 @@ android:layout_marginEnd="16dp" android:accessibilityHeading="true" android:focusable="false" + android:text="@string/vaccination_card_status_vaccination_name" android:textColor="@color/colorTextPrimary1InvertedStable" app:layout_constraintEnd_toStartOf="@+id/icon" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/card_title" - android:text="@string/vaccination_card_status_vaccination_name" /> + app:layout_constraintTop_toBottomOf="@id/card_title" /> <TextView android:id="@+id/vaccination_state" @@ -88,6 +90,6 @@ app:layout_constraintEnd_toStartOf="@+id/icon" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/vaccination_state" - tools:text="François-Joan d'Arsøns - van Halen" /> + tools:text="Andrea Schneider" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml similarity index 90% rename from Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml rename to Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml index 598ddd22d..51057d18a 100644 --- a/Corona-Warn-App/src/main/res/layout/vaccination_home_complete_card.xml +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml @@ -5,7 +5,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/vaccination_compelete_gradient" - android:padding="@dimen/card_padding"> + android:padding="@dimen/card_padding" + tools:ignore="UnusedAttribute"> <ImageView @@ -22,10 +23,11 @@ android:id="@+id/icon" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:importantForAccessibility="no" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/show_more_action" - app:srcCompat="@drawable/vaccination_card_icon_complete" /> + app:srcCompat="@drawable/vaccination_card_icon_immune" /> <TextView android:id="@+id/card_title" @@ -49,11 +51,11 @@ android:layout_marginEnd="16dp" android:accessibilityHeading="true" android:focusable="false" + android:text="@string/vaccination_card_status_vaccination_name" android:textColor="@color/colorTextPrimary1InvertedStable" app:layout_constraintEnd_toStartOf="@+id/icon" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/card_title" - android:text="@string/vaccination_card_status_vaccination_name" /> + app:layout_constraintTop_toBottomOf="@id/card_title" /> <TextView android:id="@+id/person_name" @@ -69,6 +71,6 @@ app:layout_constraintEnd_toStartOf="@+id/icon" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/vaccination_label" - tools:text="François-Joan d'Arsøns - van Halen" /> + tools:text="Andrea Schneider" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml index 183f618a7..215e69d41 100644 --- a/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/vaccination_strings.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<resources> +<resources xmlns:tools="http://schemas.android.com/tools"> <!-- XTXT: Vaccination Details birth date --> <string name="vaccination_details_birth_date">Geboren %1$s</string> <!-- XTXT: Vaccination Details certificate date --> @@ -69,13 +69,22 @@ <string name="vaccination_card_registration_body">"Fügen Sie Ihre Impfzertifikate in die App hinzu, um sie immer bei sich zu haben. Scannen Sie dafür den QR-Code Ihres Dokuments."</string> <!-- XBUT: button for Vaccination Certificate Registration Home Card --> <string name="vaccination_card_register">"Hinzufügen"</string> - <!-- XHED: Homescreen vaccination status card title --> <string name="vaccination_card_status_title">Digitaler Impfnachweis</string> <!-- XHED: Homescreen vaccination status card vaccination name --> <string name="vaccination_card_status_vaccination_name">SARS-CoV-2 Impfschutz</string> - <!-- XTXT: Homescreen vaccination status card vaccination status label --> + <!-- XTXT: Homescreen card incomplete vaccination status label --> <string name="vaccination_card_status_vaccination_incomplete">Unvollständiger Impfschutz</string> + <!-- XTXT: Homescreen card complete vaccination status label --> + <plurals name="vaccination_card_status_vaccination_complete" tools:ignore="UnusedQuantity"> + <item quantity="one">Vollständiger Impfschutz in %1$d Tag</item> + <item quantity="other">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="zero">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="two">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="few">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="many">Vollständiger Impfschutz in %1$d Tagen</item> + </plurals> + <!-- XTXT: Vaccination QR code scan error message--> <string name="error_vc_invalid">Dieser QR-Code ist kein gültiges Impfzertifikat.</string> <!-- XTXT: Vaccination QR code scan error message--> diff --git a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml index 12ece4094..4b7d2be48 100644 --- a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml @@ -74,8 +74,17 @@ <string name="vaccination_card_status_title">Digitaler Impfnachweis</string> <!-- XHED: Homescreen vaccination status card vaccination name --> <string name="vaccination_card_status_vaccination_name">SARS-CoV-2 Impfschutz</string> - <!-- XTXT: Homescreen card vaccination status label --> + <!-- XTXT: Homescreen card incomplete vaccination status label --> <string name="vaccination_card_status_vaccination_incomplete">Unvollständiger Impfschutz</string> + <!-- XTXT: Homescreen card complete vaccination status label --> + <plurals name="vaccination_card_status_vaccination_complete"> + <item quantity="one">Vollständiger Impfschutz in %1$d Tag</item> + <item quantity="other">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="zero">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="two">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="few">Vollständiger Impfschutz in %1$d Tagen</item> + <item quantity="many">Vollständiger Impfschutz in %1$d Tagen</item> + </plurals> <!-- XTXT: Vaccination QR code scan error message--> <string name="error_vc_invalid"></string> -- GitLab