From afd0ae8b07a82c37ba789c4041fa38701bf6116a Mon Sep 17 00:00:00 2001 From: axelherbstreith <75120552+axelherbstreith@users.noreply.github.com> Date: Tue, 15 Jun 2021 11:40:54 +0200 Subject: [PATCH] Travel Notice Custom View (EXPOSUREAPP-7844) (#3443) * add custom view layout * fix custom class + update vaccination certificate detail fragment * lint Co-authored-by: BMItter <Berndus@gmx.de> --- .../common/certificate/TravelNoticeView.kt | 50 +++++++++++++++++++ .../CovidCertificateDetailsFragment.kt | 24 --------- .../ui/details/VaccinationDetailsFragment.kt | 24 --------- .../fragment_covid_certificate_details.xml | 27 ++-------- .../layout/fragment_vaccination_details.xml | 25 ++-------- .../res/layout/include_travel_notice_card.xml | 25 ++++++++++ 6 files changed, 81 insertions(+), 94 deletions(-) create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt create mode 100644 Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt new file mode 100644 index 000000000..9aecb83ee --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/common/certificate/TravelNoticeView.kt @@ -0,0 +1,50 @@ +package de.rki.coronawarnapp.covidcertificate.common.certificate + +import android.widget.LinearLayout +import android.content.Context +import android.util.AttributeSet +import android.util.TypedValue +import android.view.LayoutInflater +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.IncludeTravelNoticeCardBinding +import de.rki.coronawarnapp.util.setUrl + +class TravelNoticeView @JvmOverloads constructor( + context: Context, + attrs: AttributeSet? = null, + defStyleAttr: Int = 0 +) : LinearLayout(context, attrs, defStyleAttr) { + + private val binding: IncludeTravelNoticeCardBinding + + init { + LayoutInflater.from(context).inflate(R.layout.include_travel_notice_card, this, true) + + val outValue = TypedValue() + getContext().theme.resolveAttribute(android.R.attr.selectableItemBackground, outValue, true) + setBackgroundResource(outValue.resourceId) + binding = IncludeTravelNoticeCardBinding.bind(this) + + binding.apply { + if (travelNoticeGerman.text == + context.getString(R.string.green_certificate_attribute_certificate_travel_notice_german) + ) { + travelNoticeGerman.setUrl( + R.string.green_certificate_attribute_certificate_travel_notice_german, + R.string.green_certificate_travel_notice_link_de, + R.string.green_certificate_travel_notice_link_de + ) + } + + if (travelNoticeEnglish.text == + context.getString(R.string.green_certificate_attribute_certificate_travel_notice_english) + ) { + travelNoticeEnglish.setUrl( + R.string.green_certificate_attribute_certificate_travel_notice_english, + R.string.green_certificate_travel_notice_link_en, + R.string.green_certificate_travel_notice_link_en + ) + } + } + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/details/CovidCertificateDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/details/CovidCertificateDetailsFragment.kt index 106156fd2..537948f0a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/details/CovidCertificateDetailsFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/test/ui/details/CovidCertificateDetailsFragment.kt @@ -21,7 +21,6 @@ import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDateOfBirthFormat import de.rki.coronawarnapp.util.TimeAndDateExtensions.toShortDayFormat import de.rki.coronawarnapp.util.TimeAndDateExtensions.toShortTimeFormat import de.rki.coronawarnapp.util.di.AutoInject -import de.rki.coronawarnapp.util.setUrl import de.rki.coronawarnapp.util.ui.popBackStack import de.rki.coronawarnapp.util.ui.viewBinding import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider @@ -49,7 +48,6 @@ class CovidCertificateDetailsFragment : Fragment(R.layout.fragment_covid_certifi subtitle.alpha = subtitleAlpha } - bindTravelNoticeViews() bindToolbar() setToolbarOverlay() @@ -104,28 +102,6 @@ class CovidCertificateDetailsFragment : Fragment(R.layout.fragment_covid_certifi } } - private fun FragmentCovidCertificateDetailsBinding.bindTravelNoticeViews() { - if (travelNoticeGerman.text == - getString(R.string.green_certificate_attribute_certificate_travel_notice_german) - ) { - travelNoticeGerman.setUrl( - R.string.green_certificate_attribute_certificate_travel_notice_german, - R.string.green_certificate_travel_notice_link_de, - R.string.green_certificate_travel_notice_link_de - ) - } - - if (travelNoticeEnglish.text == - getString(R.string.green_certificate_attribute_certificate_travel_notice_english) - ) { - travelNoticeEnglish.setUrl( - R.string.green_certificate_attribute_certificate_travel_notice_english, - R.string.green_certificate_travel_notice_link_en, - R.string.green_certificate_travel_notice_link_en - ) - } - } - private fun FragmentCovidCertificateDetailsBinding.bindToolbar() = toolbar.apply { setNavigationOnClickListener { popBackStack() } setOnMenuItemClickListener { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/vaccination/ui/details/VaccinationDetailsFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/vaccination/ui/details/VaccinationDetailsFragment.kt index 8d3d519c5..f5231239a 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/vaccination/ui/details/VaccinationDetailsFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/covidcertificate/vaccination/ui/details/VaccinationDetailsFragment.kt @@ -18,7 +18,6 @@ import de.rki.coronawarnapp.ui.view.onOffsetChange import de.rki.coronawarnapp.util.DialogHelper import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDateOfBirthFormat import de.rki.coronawarnapp.util.di.AutoInject -import de.rki.coronawarnapp.util.setUrl import de.rki.coronawarnapp.util.ui.popBackStack import de.rki.coronawarnapp.util.ui.viewBinding import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider @@ -45,7 +44,6 @@ class VaccinationDetailsFragment : Fragment(R.layout.fragment_vaccination_detail with(binding) { toolbar.setNavigationOnClickListener { popBackStack() } - bindTravelNoticeViews() bindToolbar() viewModel.vaccinationCertificate.observe(viewLifecycleOwner) { @@ -121,28 +119,6 @@ class VaccinationDetailsFragment : Fragment(R.layout.fragment_vaccination_detail certificateId.text = certificate.certificateId } - private fun FragmentVaccinationDetailsBinding.bindTravelNoticeViews() { - if (travelNoticeGerman.text == - getString(R.string.vaccination_certificate_attribute_certificate_travel_notice_german) - ) { - travelNoticeGerman.setUrl( - R.string.vaccination_certificate_attribute_certificate_travel_notice_german, - R.string.vaccination_certificate_travel_notice_link_de, - R.string.vaccination_certificate_travel_notice_link_de - ) - } - - if (travelNoticeEnglish.text == - getString(R.string.green_certificate_attribute_certificate_travel_notice_english) - ) { - travelNoticeEnglish.setUrl( - R.string.green_certificate_attribute_certificate_travel_notice_english, - R.string.green_certificate_travel_notice_link_en, - R.string.green_certificate_travel_notice_link_en - ) - } - } - private fun setToolbarOverlay() { val width = requireContext().resources.displayMetrics.widthPixels diff --git a/Corona-Warn-App/src/main/res/layout/fragment_covid_certificate_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_covid_certificate_details.xml index 6844063a3..23d5a4055 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_covid_certificate_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_covid_certificate_details.xml @@ -312,34 +312,13 @@ android:layout_height="wrap_content" android:layout_marginTop="4dp" tools:text="05930482748454836478695764787840" /> - </LinearLayout> - <LinearLayout - style="@style/Card.Vaccination" + <de.rki.coronawarnapp.covidcertificate.common.certificate.TravelNoticeView + android:id="@+id/travel_notice" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="8dp" - android:orientation="vertical" - android:padding="16dp"> - - <TextView - android:id="@+id/travel_notice_german" - style="@style/body2" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/vaccination_certificate_attribute_certificate_travel_notice_german" /> - - <TextView - android:id="@+id/travel_notice_english" - style="@style/body2" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_certificate_travel_notice_english" /> - </LinearLayout> - + android:focusable="true" /> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml index dc7e72156..7ddc46222 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_vaccination_details.xml @@ -297,30 +297,11 @@ </LinearLayout> - <LinearLayout - style="@style/Card.Vaccination" + <de.rki.coronawarnapp.covidcertificate.common.certificate.TravelNoticeView + android:id="@+id/travel_notice" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginHorizontal="24dp" - android:layout_marginTop="8dp" - android:orientation="vertical" - android:padding="16dp"> - - <TextView - android:id="@+id/travel_notice_german" - style="@style/body2" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:text="@string/vaccination_certificate_attribute_certificate_travel_notice_german" /> - - <TextView - android:id="@+id/travel_notice_english" - style="@style/body2" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginTop="24dp" - android:text="@string/vaccination_certificate_attribute_certificate_travel_notice_english" /> - </LinearLayout> + android:focusable="true" /> </LinearLayout> diff --git a/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml b/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml new file mode 100644 index 000000000..0b5318219 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/include_travel_notice_card.xml @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="utf-8"?> +<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + style="@style/Card.GreenCertificate" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="8dp" + android:orientation="vertical" + android:padding="16dp"> + + <TextView + android:id="@+id/travel_notice_german" + style="@style/body2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="@string/green_certificate_attribute_certificate_travel_notice_german" /> + + <TextView + android:id="@+id/travel_notice_english" + style="@style/body2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="24dp" + android:text="@string/green_certificate_attribute_certificate_travel_notice_english" /> +</LinearLayout> \ No newline at end of file -- GitLab