From 500304de20c01e0e7105e84dc1b60e05900a9cc9 Mon Sep 17 00:00:00 2001 From: Juraj Kusnier <jurajkusnier@users.noreply.github.com> Date: Mon, 7 Jun 2021 10:47:53 +0200 Subject: [PATCH] Implement vaccination certification card (EXPOSUREAPP-7438) (#3355) * Update VaccinationCard * Update ImmuneVaccinationCard * remove unused resources * update formatting * src > srcCompat Co-authored-by: Alex Paulescu <alex.paulescu@gmail.com> --- .../ui/certificates/CertificatesViewModel.kt | 77 +++++++++--------- .../ui/cards/ImmuneVaccinationCard.kt | 5 ++ .../vaccination/ui/cards/VaccinationCard.kt | 2 - .../ic_complete_vaccination_shield.xml | 9 +++ .../ic_half_white_half_gray_shield.xml | 15 ++++ .../ic_incomplete_vaccination_shield.xml | 14 ++++ .../ic_white_shield_with_checkmark.xml | 12 +++ .../vaccination_card_icon_complete.xml | 17 ---- .../drawable/vaccination_card_icon_immune.xml | 17 ---- .../vaccination_card_icon_incomplete.xml | 20 ----- .../main/res/layout/vaccination_home_card.xml | 78 +++++++++--------- .../layout/vaccination_home_immune_card.xml | 79 +++++++++++-------- .../res/values-de/vaccination_strings.xml | 6 +- .../main/res/values/vaccination_strings.xml | 6 ++ 14 files changed, 192 insertions(+), 165 deletions(-) create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_complete_vaccination_shield.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_half_white_half_gray_shield.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_incomplete_vaccination_shield.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_white_shield_with_checkmark.xml delete mode 100644 Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml delete mode 100644 Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml delete mode 100644 Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/greencertificate/ui/certificates/CertificatesViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/greencertificate/ui/certificates/CertificatesViewModel.kt index 41e545fdc..be67be933 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/greencertificate/ui/certificates/CertificatesViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/greencertificate/ui/certificates/CertificatesViewModel.kt @@ -25,53 +25,56 @@ class CertificatesViewModel @AssistedInject constructor( val events = SingleLiveEvent<CertificatesFragmentEvents>() - // TODO: cards should be adjusted in the following PR val screenItems: LiveData<List<CertificatesItem>> = vaccinationRepository.vaccinationInfos.map { vaccinatedPersons -> mutableListOf<CertificatesItem>().apply { add(HeaderInfoVaccinationCard.Item) + addVaccinationCards(vaccinatedPersons) + add(BottomInfoVaccinationCard.Item) + } + }.asLiveData() - vaccinatedPersons.forEach { vaccinatedPerson -> - val card = when (vaccinatedPerson.getVaccinationStatus()) { - VaccinatedPerson.Status.COMPLETE, - VaccinatedPerson.Status.INCOMPLETE -> VaccinationCard.Item( - vaccinatedPerson = vaccinatedPerson, - onClickAction = { - events.postValue( - CertificatesFragmentEvents.GoToVaccinationList( - vaccinatedPerson.identifier.codeSHA256 - ) - ) - } - ) - VaccinatedPerson.Status.IMMUNITY -> ImmuneVaccinationCard.Item( - vaccinatedPerson = vaccinatedPerson, - onClickAction = { - events.postValue( - CertificatesFragmentEvents.GoToVaccinationList( - vaccinatedPerson.identifier.codeSHA256 - ) - ) - } + private fun MutableList<CertificatesItem>.addVaccinationCards(vaccinatedPersons: Set<VaccinatedPerson>) { + vaccinatedPersons.forEach { vaccinatedPerson -> + val card = when (vaccinatedPerson.getVaccinationStatus()) { + VaccinatedPerson.Status.COMPLETE, + VaccinatedPerson.Status.INCOMPLETE -> VaccinationCard.Item( + vaccinatedPerson = vaccinatedPerson, + onClickAction = { + events.postValue( + CertificatesFragmentEvents.GoToVaccinationList( + vaccinatedPerson.identifier.codeSHA256 + ) ) } - add(card) - } - - add( - CreateVaccinationCard.Item( - onClickAction = { - events.postValue( - CertificatesFragmentEvents.OpenVaccinationRegistrationGraph( - vaccinationSettings.registrationAcknowledged - ) + ) + VaccinatedPerson.Status.IMMUNITY -> ImmuneVaccinationCard.Item( + vaccinatedPerson = vaccinatedPerson, + onClickAction = { + events.postValue( + CertificatesFragmentEvents.GoToVaccinationList( + vaccinatedPerson.identifier.codeSHA256 ) - } - ) + ) + } ) - add(BottomInfoVaccinationCard.Item) } - }.asLiveData() + add(card) + } + if (vaccinatedPersons.isEmpty()) { + add( + CreateVaccinationCard.Item( + onClickAction = { + events.postValue( + CertificatesFragmentEvents.OpenVaccinationRegistrationGraph( + vaccinationSettings.registrationAcknowledged + ) + ) + } + ) + ) + } + } @AssistedFactory interface Factory : SimpleCWAViewModelFactory<CertificatesViewModel> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/ImmuneVaccinationCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/ImmuneVaccinationCard.kt index f3bf89f9c..8fe1b7018 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/ImmuneVaccinationCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/ImmuneVaccinationCard.kt @@ -4,6 +4,7 @@ import android.view.ViewGroup import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.VaccinationHomeImmuneCardBinding import de.rki.coronawarnapp.greencertificate.ui.certificates.CertificatesAdapter +import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDayFormat import de.rki.coronawarnapp.util.lists.diffutil.HasPayloadDiffer import de.rki.coronawarnapp.vaccination.core.VaccinatedPerson @@ -24,6 +25,10 @@ class ImmuneVaccinationCard(parent: ViewGroup) : val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item personName.text = curItem.vaccinatedPerson.fullName + vaccinationState.text = context.getString( + R.string.vaccination_card_status_vaccination_complete, + curItem.vaccinatedPerson.getMostRecentVaccinationCertificate.expiresAt.toDayFormat() + ) itemView.setOnClickListener { curItem.onClickAction(item) } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/VaccinationCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/VaccinationCard.kt index 7377a6d5d..bd2d4c7ad 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/VaccinationCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/vaccination/ui/cards/VaccinationCard.kt @@ -32,11 +32,9 @@ class VaccinationCard(parent: ViewGroup) : 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) } diff --git a/Corona-Warn-App/src/main/res/drawable/ic_complete_vaccination_shield.xml b/Corona-Warn-App/src/main/res/drawable/ic_complete_vaccination_shield.xml new file mode 100644 index 000000000..d37d51142 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_complete_vaccination_shield.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="111dp" + android:height="189dp" + android:viewportWidth="111" + android:viewportHeight="189"> + <path + android:pathData="M75.5,0.75L0.5,28.875V85.969C0.5,133.312 32.469,177.469 75.5,188.25C118.531,177.469 150.5,133.312 150.5,85.969V28.875L75.5,0.75ZM131.75,85.969C131.75,123.469 107.844,158.156 75.5,168.75C43.156,158.156 19.25,123.562 19.25,85.969V41.156L75.5,21.281L131.75,41.156V85.969ZM45.688,81.281L32.375,94.5L65.563,127.688L118.625,74.625L105.406,61.406L65.656,101.156L45.688,81.281Z" + android:fillColor="#007FAD"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_half_white_half_gray_shield.xml b/Corona-Warn-App/src/main/res/drawable/ic_half_white_half_gray_shield.xml new file mode 100644 index 000000000..a3cf8929f --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_half_white_half_gray_shield.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="18dp" + android:height="22dp" + android:viewportWidth="18" + android:viewportHeight="22"> + <path + android:pathData="M7.1729,20.9509V2.4925V1.4556L16.5144,4.7739V11.8255L13.9897,17.6326L7.1729,20.9509Z" + android:fillColor="#616F7E"/> + <path + android:pathData="M9.0002,0L0.2002,3.3V9.999C0.2002,15.554 3.9512,20.735 9.0002,22C14.0492,20.735 17.8002,15.554 17.8002,9.999V3.3L9.0002,0ZM15.6002,9.999C15.6002,14.399 12.7952,18.469 9.0002,19.712C5.2052,18.469 2.4002,14.41 2.4002,9.999V4.829L9.0002,2.354L15.6002,4.829V9.999Z" + android:fillColor="#ffffff"/> + <path + android:pathData="M9.0004,20.3417V2.2678V1.2524L1.4866,4.5017V11.4063L3.5173,17.0924L9.0004,20.3417Z" + android:fillColor="#ffffff"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_incomplete_vaccination_shield.xml b/Corona-Warn-App/src/main/res/drawable/ic_incomplete_vaccination_shield.xml new file mode 100644 index 000000000..91692016c --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_incomplete_vaccination_shield.xml @@ -0,0 +1,14 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="111dp" + android:height="188dp" + android:viewportWidth="111" + android:viewportHeight="188"> + <path + android:pathData="M75.7,0.75L0.8,28.837V85.855C0.8,133.136 32.726,177.233 75.7,188C118.674,177.233 150.6,133.136 150.6,85.855V28.837L75.7,0.75ZM131.875,85.855C131.875,123.305 108,157.946 75.7,168.526C43.399,157.946 19.525,123.399 19.525,85.855V41.851L75.7,20.786L131.875,41.851V85.855Z" + android:fillColor="#ffffff" + android:fillAlpha="0.05"/> + <path + android:pathData="M75.7,168.526V20.786L19.525,41.851V85.855C19.525,85.855 18,113 37.049,139.5C53.698,162.66 75.7,168.526 75.7,168.526Z" + android:fillColor="#ffffff" + android:fillAlpha="0.05"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_white_shield_with_checkmark.xml b/Corona-Warn-App/src/main/res/drawable/ic_white_shield_with_checkmark.xml new file mode 100644 index 000000000..d6e0f2ac2 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_white_shield_with_checkmark.xml @@ -0,0 +1,12 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="18dp" + android:height="22dp" + android:viewportWidth="18" + android:viewportHeight="22"> + <path + android:pathData="M9,0L0,4V10C0,15.55 3.84,20.74 9,22C14.16,20.74 18,15.55 18,10V4L9,0Z" + android:fillColor="#ffffff"/> + <path + android:pathData="m5.141,10.1508 l-1.41,1.4968 4,4.2463 8,-8.4926 -1.41,-1.5074 -6.59,6.9958z" + android:fillColor="#007fad"/> +</vector> 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 deleted file mode 100644 index 29d4300db..000000000 --- a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_complete.xml +++ /dev/null @@ -1,17 +0,0 @@ -<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.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"/> - <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="#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 deleted file mode 100644 index 47227abb7..000000000 --- a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_immune.xml +++ /dev/null @@ -1,17 +0,0 @@ -<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/drawable/vaccination_card_icon_incomplete.xml b/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml deleted file mode 100644 index f51cc4182..000000000 --- a/Corona-Warn-App/src/main/res/drawable/vaccination_card_icon_incomplete.xml +++ /dev/null @@ -1,20 +0,0 @@ -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="78dp" - android:height="73dp" - android:viewportWidth="78" - android:viewportHeight="73"> - <path - android:pathData="M44.4167,0V4.3846H46.609V6.7139C42.1987,7.1507 38.2165,8.8463 34.9623,11.5096L33.3181,9.8654L34.8253,8.3582L31.7424,5.2752L25.5765,11.4411L28.6594,14.524L30.1667,13.0168L31.8109,14.6611C29.1476,17.9153 27.452,21.8974 27.0152,26.3077H24.6859V24.1154H20.3013V32.8846H24.6859V30.6923H27.0152C27.452,35.1369 29.1818,39.1447 31.8794,42.4075L30.1667,43.9832L28.6594,42.476L25.5765,45.5589L31.7424,51.7248L34.8253,48.6418L33.3181,47.1346L34.9623,45.4219C38.2251,48.1023 42.1901,49.8493 46.609,50.2861V52.6154H44.4167V57H53.1859V52.6154H50.9936V50.2861C55.4124,49.8493 59.3774,48.1023 62.6402,45.4219H62.7087L64.2844,47.1346L62.7772,48.6418L65.8602,51.7248L72.026,45.5589L68.9431,42.476L67.4359,43.9832L65.7231,42.4075C65.7274,42.3989 65.7253,42.386 65.7231,42.3732C65.721,42.3604 65.7189,42.3475 65.7231,42.3389C68.4036,39.0762 70.1506,35.1112 70.5873,30.6923H72.9166V32.8846H77.3013V24.1154H72.9166V26.3077H70.5873C70.1506,21.8974 68.455,17.9153 65.7916,14.6611L67.4359,13.0168L68.9431,14.524L72.026,11.4411L65.8602,5.2752L62.7772,8.3582L64.2844,9.8654L62.6402,11.5096C59.386,8.8463 55.4039,7.1507 50.9936,6.7139V4.3846H53.1859V0H44.4167ZM48.8017,10.9604C58.513,10.9604 66.3402,18.7876 66.3402,28.4989C66.3402,38.2101 58.513,46.0373 48.8017,46.0373C39.0905,46.0373 31.2633,38.2101 31.2633,28.4989C31.2633,18.7876 39.0905,10.9604 48.8017,10.9604ZM40.0318,18.9777C40.0318,17.1622 41.5047,15.6893 43.3202,15.6893C45.1357,15.6893 46.6087,17.1622 46.6087,18.9777C46.6087,20.7933 45.1357,22.2662 43.3202,22.2662C41.5047,22.2662 40.0318,20.7933 40.0318,18.9777ZM54.2822,15.6893C52.4667,15.6893 50.9938,17.1622 50.9938,18.9777C50.9938,20.7933 52.4667,22.2662 54.2822,22.2662C56.0977,22.2662 57.5707,20.7933 57.5707,18.9777C57.5707,17.1622 56.0977,15.6893 54.2822,15.6893ZM34.5513,28.499C34.5513,26.6834 36.0243,25.2105 37.8398,25.2105C39.6553,25.2105 41.1283,26.6834 41.1283,28.499C41.1283,30.3145 39.6553,31.7874 37.8398,31.7874C36.0243,31.7874 34.5513,30.3145 34.5513,28.499ZM48.8018,25.2105C46.9863,25.2105 45.5133,26.6834 45.5133,28.499C45.5133,30.3145 46.9863,31.7874 48.8018,31.7874C50.6173,31.7874 52.0902,30.3145 52.0902,28.499C52.0902,26.6834 50.6173,25.2105 48.8018,25.2105ZM56.474,28.499C56.474,26.6834 57.9469,25.2105 59.7624,25.2105C61.5779,25.2105 63.0509,26.6834 63.0509,28.499C63.0509,30.3145 61.5779,31.7874 59.7624,31.7874C57.9469,31.7874 56.474,30.3145 56.474,28.499ZM43.3202,34.7339C41.5047,34.7339 40.0318,36.2069 40.0318,38.0224C40.0318,39.8379 41.5047,41.3108 43.3202,41.3108C45.1357,41.3108 46.6087,39.8379 46.6087,38.0224C46.6087,36.2069 45.1357,34.7339 43.3202,34.7339ZM50.9938,38.0224C50.9938,36.2069 52.4667,34.7339 54.2822,34.7339C56.0977,34.7339 57.5707,36.2069 57.5707,38.0224C57.5707,39.8379 56.0977,41.3108 54.2822,41.3108C52.4667,41.3108 50.9938,39.8379 50.9938,38.0224Z" - android:fillColor="#ffffff" - android:fillAlpha="0.2" - android:fillType="evenOdd" /> - <path - android:pathData="M17.167,70V24.5532V22L40.167,30.1702V47.5319L33.9508,61.8298L17.167,70Z" - android:fillColor="#616F7E" /> - <path - android:pathData="M21.6667,18.4167L0,26.5417V43.0355C0,56.7126 9.2354,69.4688 21.6667,72.5834C34.0979,69.4688 43.3333,56.7126 43.3333,43.0355V26.5417L21.6667,18.4167ZM37.9167,43.0355C37.9167,53.8688 31.0104,63.8897 21.6667,66.9501C12.3229,63.8897 5.4167,53.8959 5.4167,43.0355V30.3063L21.6667,24.2126L37.9167,30.3063V43.0355Z" - android:fillColor="#ffffff" /> - <path - android:pathData="M21.667,68.5V24V21.5L3.167,29.5V46.5L8.167,60.5L21.667,68.5Z" - android:fillColor="#ffffff" /> -</vector> diff --git a/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml index 6b257338d..8d6853dae 100644 --- a/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_card.xml @@ -5,75 +5,75 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/vaccination_incomplete" - android:padding="@dimen/card_padding" + android:minHeight="200dp" tools:ignore="UnusedAttribute"> - - <ImageView - android:id="@+id/show_more_action" - android:layout_width="@dimen/icon_size_risk_card" - android:layout_height="@dimen/icon_size_risk_card" - android:importantForAccessibility="no" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_forward" - app:tint="@color/colorStableLight" /> - <ImageView android:id="@+id/icon" 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" - app:srcCompat="@drawable/vaccination_card_icon_incomplete" /> - + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_incomplete_vaccination_shield" /> <TextView - android:id="@+id/card_title" - style="@style/body2" + android:id="@+id/title1" + style="@style/headline5" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="8dp" + android:layout_marginHorizontal="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_small" android:accessibilityHeading="true" android:focusable="false" - android:text="@string/vaccination_card_status_title" + android:text="@string/vaccination_card_registration_title_line_1" android:textColor="@color/colorTextPrimary1InvertedStable" - app:layout_constraintEnd_toStartOf="@id/show_more_action" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView - android:id="@+id/vaccination_label" - style="@style/headline5Bold" + android:id="@+id/title2" + style="@style/headline5" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="16dp" + android:layout_marginHorizontal="@dimen/card_padding" android:accessibilityHeading="true" android:focusable="false" - android:text="@string/vaccination_card_status_vaccination_name" + android:text="@string/vaccination_card_registration_title_line_2" android:textColor="@color/colorTextPrimary1InvertedStable" - app:layout_constraintEnd_toStartOf="@+id/icon" + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/card_title" /> + app:layout_constraintTop_toBottomOf="@id/title1" /> + + <ImageView + android:id="@+id/shield_icon" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginStart="@dimen/card_padding" + android:importantForAccessibility="no" + app:layout_constraintBottom_toBottomOf="@id/vaccination_state" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@id/vaccination_state" + app:srcCompat="@drawable/ic_half_white_half_gray_shield" /> <TextView android:id="@+id/vaccination_state" - style="@style/body1" + style="@style/body2" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:layout_marginEnd="16dp" + android:layout_marginStart="8dp" + android:layout_marginBottom="@dimen/spacing_normal" android:accessibilityHeading="true" android:focusable="false" android:text="@string/vaccination_card_status_vaccination_incomplete" android:textColor="@color/colorTextPrimary1InvertedStable" - app:layout_constraintBottom_toTopOf="@+id/person_name" - app:layout_constraintEnd_toStartOf="@+id/icon" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/vaccination_label" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/shield_icon" + app:layout_constraintTop_toBottomOf="@id/person_name" + app:layout_constraintVertical_bias="1" app:layout_constraintVertical_chainStyle="packed" /> <TextView @@ -81,16 +81,14 @@ style="@style/body1" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="8dp" - android:layout_marginEnd="16dp" + android:layout_marginHorizontal="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_small" android:accessibilityHeading="true" android:focusable="false" android:textColor="@color/colorTextPrimary1InvertedStable" - android:visibility="gone" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/vaccination_state" + app:layout_constraintTop_toBottomOf="@id/title2" 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_immune_card.xml b/Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml index 611102ebe..8da269c81 100644 --- a/Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml +++ b/Corona-Warn-App/src/main/res/layout/vaccination_home_immune_card.xml @@ -5,20 +5,9 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/vaccination_compelete_gradient" - android:padding="@dimen/card_padding" + android:minHeight="200dp" tools:ignore="UnusedAttribute"> - - <ImageView - android:id="@+id/show_more_action" - android:layout_width="@dimen/icon_size_risk_card" - android:layout_height="@dimen/icon_size_risk_card" - android:importantForAccessibility="no" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:srcCompat="@drawable/ic_forward" - app:tint="@color/colorStableLight" /> - <ImageView android:id="@+id/icon" android:layout_width="wrap_content" @@ -26,52 +15,80 @@ 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_immune" /> + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_complete_vaccination_shield" /> <TextView - android:id="@+id/card_title" - style="@style/body2" + android:id="@+id/title1" + style="@style/headline5" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="8dp" + android:layout_marginHorizontal="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_small" android:accessibilityHeading="true" android:focusable="false" - android:text="@string/vaccination_card_status_title" + android:text="@string/vaccination_card_registration_title_line_1" android:textColor="@color/colorTextPrimary1InvertedStable" - app:layout_constraintEnd_toStartOf="@id/show_more_action" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> <TextView - android:id="@+id/vaccination_label" - style="@style/headline5Bold" + android:id="@+id/title2" + style="@style/headline5" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginEnd="16dp" + android:layout_marginHorizontal="@dimen/card_padding" android:accessibilityHeading="true" android:focusable="false" - android:text="@string/vaccination_card_status_vaccination_name" + android:text="@string/vaccination_card_registration_title_line_2" android:textColor="@color/colorTextPrimary1InvertedStable" - app:layout_constraintEnd_toStartOf="@+id/icon" + android:textStyle="bold" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/card_title" /> + app:layout_constraintTop_toBottomOf="@id/title1" /> + + <ImageView + android:id="@+id/shield_icon" + android:layout_width="24dp" + android:layout_height="24dp" + android:layout_marginStart="@dimen/card_padding" + android:importantForAccessibility="no" + app:layout_constraintBottom_toBottomOf="@id/vaccination_state" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@id/vaccination_state" + app:srcCompat="@drawable/ic_white_shield_with_checkmark" /> + + <TextView + android:id="@+id/vaccination_state" + style="@style/body2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="8dp" + android:layout_marginBottom="@dimen/spacing_normal" + android:accessibilityHeading="true" + android:focusable="false" + android:textColor="@color/colorTextPrimary1InvertedStable" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toEndOf="@id/shield_icon" + app:layout_constraintTop_toBottomOf="@id/person_name" + app:layout_constraintVertical_bias="1" + app:layout_constraintVertical_chainStyle="packed" + tools:text="@string/vaccination_card_status_vaccination_complete" /> <TextView android:id="@+id/person_name" style="@style/body1" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="16dp" - android:layout_marginEnd="16dp" + android:layout_marginHorizontal="@dimen/card_padding" + android:layout_marginTop="@dimen/spacing_small" android:accessibilityHeading="true" android:focusable="false" android:textColor="@color/colorTextPrimary1InvertedStable" - android:visibility="gone" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toStartOf="@+id/icon" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/vaccination_label" + app:layout_constraintTop_toBottomOf="@id/title2" 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 e3dbe17b0..073658eb8 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 @@ -71,7 +71,9 @@ <!-- 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> + <string name="vaccination_card_status_title_line_1">"Digitaler"</string> + <!-- XHED: Homescreen vaccination status card title --> + <string name="vaccination_card_status_title_line_2">"Impfnachweis"</string> <!-- XHED: Homescreen vaccination status card vaccination name --> <string name="vaccination_card_status_vaccination_name">SARS-CoV-2 Impfschutz</string> <!-- XTXT: Homescreen card incomplete vaccination status label --> @@ -85,6 +87,8 @@ <item quantity="few">Vollständiger Impfschutz in %1$d Tagen</item> <item quantity="many">Vollständiger Impfschutz in %1$d Tagen</item> </plurals> + <!-- XTXT: Homescreen card complete vaccination status label --> + <string name="vaccination_card_status_vaccination_complete">"Gültig bis einschließlich %s"</string> <!-- XTXT: Vaccination QR code scan error message--> <string name="error_vc_invalid">Dieser QR-Code ist kein gültiges Impfzertifikat.</string> 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 1873bbeb8..362314242 100644 --- a/Corona-Warn-App/src/main/res/values/vaccination_strings.xml +++ b/Corona-Warn-App/src/main/res/values/vaccination_strings.xml @@ -74,6 +74,10 @@ <string name="vaccination_card_register">"Add"</string> <!-- XHED: Homescreen vaccination status card title --> <string name="vaccination_card_status_title">"Digital Proof of Vaccination"</string> + <!-- XHED: Homescreen vaccination status card title --> + <string name="vaccination_card_status_title_line_1">"Digitaler"</string> + <!-- XHED: Homescreen vaccination status card title --> + <string name="vaccination_card_status_title_line_2">"Impfnachweis"</string> <!-- XHED: Homescreen vaccination status card vaccination name --> <string name="vaccination_card_status_vaccination_name">"SARS-CoV-2 Vaccination"</string> <!-- XTXT: Homescreen card incomplete vaccination status label --> @@ -87,6 +91,8 @@ <item quantity="few">"Full vaccination protection in %1$d days"</item> <item quantity="many">"Full vaccination protection in %1$d days"</item> </plurals> + <!-- XTXT: Homescreen card complete vaccination status label --> + <string name="vaccination_card_status_vaccination_complete">"Gültig bis einschließlich %s"</string> <!-- XTXT: Vaccination QR code scan error message--> <string name="error_vc_invalid">"This QR code is not a valid vaccination certificate."</string> -- GitLab