diff --git a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/greencertificate/GreenCertificateTestFragment.kt b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/greencertificate/GreenCertificateTestFragment.kt index f8de316f65b75038e415f9f785912baba7e7a56d..dbc265be6a63e50c46d3c72feae036098f642c16 100644 --- a/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/greencertificate/GreenCertificateTestFragment.kt +++ b/Corona-Warn-App/src/deviceForTesters/java/de/rki/coronawarnapp/test/greencertificate/GreenCertificateTestFragment.kt @@ -4,10 +4,14 @@ import android.annotation.SuppressLint import android.os.Bundle import android.view.View import androidx.fragment.app.Fragment +import de.rki.coronawarnapp.NavGraphDirections import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.coronatest.type.CoronaTest.Type.PCR +import de.rki.coronawarnapp.coronatest.type.CoronaTest.Type.RAPID_ANTIGEN import de.rki.coronawarnapp.databinding.FragmentTestGreenCertificateBinding import de.rki.coronawarnapp.test.menu.ui.TestMenuItem import de.rki.coronawarnapp.util.di.AutoInject +import de.rki.coronawarnapp.util.ui.doNavigate import de.rki.coronawarnapp.util.ui.viewBinding import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider import de.rki.coronawarnapp.util.viewmodel.cwaViewModels @@ -22,13 +26,22 @@ class GreenCertificateTestFragment : Fragment(R.layout.fragment_test_green_certi override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + + binding.apply { + pcrScreen.setOnClickListener { + doNavigate(NavGraphDirections.actionSubmissionTestResultGreenCertificateFragment(PCR)) + } + ratScreen.setOnClickListener { + doNavigate(NavGraphDirections.actionSubmissionTestResultGreenCertificateFragment(RAPID_ANTIGEN)) + } + } } companion object { val MENU_ITEM = TestMenuItem( title = "Green Certificate", description = "View & Control green certificate related features.", - targetId = R.id.vaccinationTestFragment + targetId = R.id.greenCertificateTestFragment ) } } diff --git a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_green_certificate.xml b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_green_certificate.xml index 5fa027ddc3a5953de265ad8f47605adbf805d5fb..060d11b08ef8176fe5d51a90ad8bbf7a996f3597 100644 --- a/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_green_certificate.xml +++ b/Corona-Warn-App/src/deviceForTesters/res/layout/fragment_test_green_certificate.xml @@ -12,6 +12,22 @@ android:orientation="vertical" android:paddingBottom="32dp"> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="Request DCC screen" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/pcr_screen" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="CPR screen" /> + + <com.google.android.material.button.MaterialButton + android:id="@+id/rat_screen" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:text="RAT screen" /> </LinearLayout> </androidx.core.widget.NestedScrollView> diff --git a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml index 851b0271dd7ba10d91526ea98beee6e38943f001..b4d0def3ae53dd59b229df92771feba05c14dd23 100644 --- a/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml +++ b/Corona-Warn-App/src/deviceForTesters/res/navigation/test_nav_graph.xml @@ -58,6 +58,9 @@ <action android:id="@+id/action_test_menu_fragment_to_vaccinationTestFragment" app:destination="@id/vaccinationTestFragment" /> + <action + android:id="@+id/action_test_menu_fragment_to_greenCertificateTestFragment" + app:destination="@id/greenCertificateTestFragment" /> </fragment> <fragment @@ -169,7 +172,7 @@ android:id="@+id/vaccinationTestFragment" android:name="de.rki.coronawarnapp.vaccination.ui.VaccinationTestFragment" android:label="VaccinationTestFragment" - tools:layout="@layout/fragment_test_vaccination" > + tools:layout="@layout/fragment_test_vaccination"> <action android:id="@+id/action_vaccinationTestFragment_to_vaccinationDetailsFragment" @@ -185,4 +188,9 @@ android:name="vaccinationCertificateId" app:argType="string" /> </fragment> + <fragment + android:id="@+id/greenCertificateTestFragment" + android:name="de.rki.coronawarnapp.test.greencertificate.GreenCertificateTestFragment" + android:label="GreenCertificateTestFragment" + tools:layout="@layout/fragment_test_green_certificate" /> </navigation> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/coronatest/rat/profile/create/RATProfileCreateFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/coronatest/rat/profile/create/RATProfileCreateFragment.kt index c6f7dfe76f28f3e15fc9cf63cd959afc80d37491..836b2be107d37113ed1e72c97c6198a14a0a1328 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/coronatest/rat/profile/create/RATProfileCreateFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/coronatest/rat/profile/create/RATProfileCreateFragment.kt @@ -8,6 +8,7 @@ import com.google.android.material.datepicker.MaterialDatePicker import de.rki.coronawarnapp.R import de.rki.coronawarnapp.contactdiary.util.hideKeyboard import de.rki.coronawarnapp.databinding.RatProfileCreateFragmentBinding +import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDayFormat import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.doNavigate import de.rki.coronawarnapp.util.ui.popBackStack @@ -80,7 +81,7 @@ class RATProfileCreateFragment : Fragment(R.layout.rat_profile_create_fragment), addOnPositiveButtonClickListener { timestamp -> val localDate = LocalDate(timestamp) binding.birthDateInputEdit.setText( - localDate.toString("dd.MM.yyyy") + localDate.toDayFormat() ) viewModel.birthDateChanged(localDate) } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionDispatcherFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionDispatcherFragment.kt index 7c6f9a9b364ef1c3a76a61f3d7c602f9320ad202..681d519853e3b93d6ea410a8c5e5d9ce950bf22f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionDispatcherFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/fragment/SubmissionDispatcherFragment.kt @@ -12,6 +12,7 @@ import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionDispatcherViewMode import de.rki.coronawarnapp.ui.submission.viewmodel.SubmissionNavigationEvents import de.rki.coronawarnapp.util.di.AutoInject import de.rki.coronawarnapp.util.ui.doNavigate +import de.rki.coronawarnapp.util.ui.findNestedGraph import de.rki.coronawarnapp.util.ui.observe2 import de.rki.coronawarnapp.util.ui.viewBinding import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider @@ -61,9 +62,7 @@ class SubmissionDispatcherFragment : Fragment(R.layout.fragment_submission_dispa } is SubmissionNavigationEvents.NavigateToOpenProfile -> { - val ratGraph = findNavController().graph.findNode(R.id.rapid_test_profile_nav_graph) as NavGraph - ratGraph.startDestination = R.id.ratProfileQrCodeFragment - + findNestedGraph(R.id.rapid_test_profile_nav_graph).startDestination = R.id.ratProfileQrCodeFragment doNavigate( SubmissionDispatcherFragmentDirections .actionSubmissionDispatcherFragmentToRapidTestProfileNavGraph() diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragment.kt new file mode 100644 index 0000000000000000000000000000000000000000..22c6a1a82b2263ae91ef2944ce2c32b209f0476f --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragment.kt @@ -0,0 +1,74 @@ +package de.rki.coronawarnapp.ui.submission.greencertificate + +import android.os.Bundle +import androidx.fragment.app.Fragment +import android.view.View +import androidx.core.view.isVisible +import androidx.core.widget.doOnTextChanged +import androidx.navigation.fragment.navArgs +import com.google.android.material.datepicker.MaterialDatePicker +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.coronatest.type.CoronaTest +import de.rki.coronawarnapp.databinding.FragmentRequestGreenCertificateBinding +import de.rki.coronawarnapp.util.TimeAndDateExtensions.toDayFormat +import de.rki.coronawarnapp.util.di.AutoInject +import de.rki.coronawarnapp.util.ui.viewBinding +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider +import de.rki.coronawarnapp.util.viewmodel.cwaViewModelsAssisted +import org.joda.time.LocalDate +import javax.inject.Inject + +class RequestGreenCertificateFragment : Fragment(R.layout.fragment_request_green_certificate), AutoInject { + + @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory + private val viewModel by cwaViewModelsAssisted<RequestGreenCertificateViewModel>( + factoryProducer = { viewModelFactory }, + constructorCall = { factory, _ -> + factory as RequestGreenCertificateViewModel.Factory + factory.create(args.testType) + } + ) + private val binding by viewBinding<FragmentRequestGreenCertificateBinding>() + private val args by navArgs<RequestGreenCertificateFragmentArgs>() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) = + with(binding) { + val isPCR = args.testType == CoronaTest.Type.PCR + birthDateGroup.isVisible = isPCR + privacyCard.pcrExtraBullet.isVisible = isPCR + + dateInputEdit.doOnTextChanged { text, _, _, _ -> + if (text.toString().isEmpty()) viewModel.birthDateChanged(null) + } + + toolbar.setNavigationOnClickListener { showDialog() } + agreeButton.setOnClickListener { viewModel.onAgreeGC() } + disagreeButton.setOnClickListener { viewModel.onDisagreeGC() } + dateInputEdit.setOnClickListener { openDatePicker() } + } + + private fun showDialog() { + MaterialAlertDialogBuilder(requireContext()) + .setTitle(R.string.request_gc_dialog_title) + .setMessage(R.string.request_gc_dialog_message) + .setNegativeButton(R.string.request_gc_dialog_negative_button) { _, _ -> /* TODO */ } + .setPositiveButton(R.string.request_gc_dialog_positive_button) { _, _ -> /* TODO */ } + .create() + .show() + } + + private fun openDatePicker() { + MaterialDatePicker.Builder + .datePicker() + .build() + .apply { + addOnPositiveButtonClickListener { timestamp -> + val localDate = LocalDate(timestamp) + binding.dateInputEdit.setText(localDate.toDayFormat()) + viewModel.birthDateChanged(localDate) + } + } + .show(childFragmentManager, "RequestGreenCertificateFragment.MaterialDatePicker") + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragmentModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragmentModule.kt new file mode 100644 index 0000000000000000000000000000000000000000..216a51af46c4ee59b7b8862b2a2a6f943e6d3c76 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateFragmentModule.kt @@ -0,0 +1,19 @@ +package de.rki.coronawarnapp.ui.submission.greencertificate + +import dagger.Binds +import dagger.Module +import dagger.multibindings.IntoMap +import de.rki.coronawarnapp.util.viewmodel.CWAViewModel +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelKey + +@Module +abstract class RequestGreenCertificateFragmentModule { + + @Binds + @IntoMap + @CWAViewModelKey(RequestGreenCertificateViewModel::class) + abstract fun requestGreenCertificateFragment( + factory: RequestGreenCertificateViewModel.Factory + ): CWAViewModelFactory<out CWAViewModel> +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateViewModel.kt new file mode 100644 index 0000000000000000000000000000000000000000..dcefb79db181f8e743443be65aa620bda59acd58 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/greencertificate/RequestGreenCertificateViewModel.kt @@ -0,0 +1,31 @@ +package de.rki.coronawarnapp.ui.submission.greencertificate + +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import de.rki.coronawarnapp.coronatest.type.CoronaTest +import de.rki.coronawarnapp.util.viewmodel.CWAViewModel +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactory +import org.joda.time.LocalDate + +class RequestGreenCertificateViewModel @AssistedInject constructor( + @Assisted private val testType: CoronaTest.Type, +) : CWAViewModel() { + + fun birthDateChanged(localDate: LocalDate?) { + // TODO + } + + fun onAgreeGC() { + // TODO + } + + fun onDisagreeGC() { + // TODO + } + + @AssistedFactory + interface Factory : CWAViewModelFactory<RequestGreenCertificateViewModel> { + fun create(type: CoronaTest.Type): RequestGreenCertificateViewModel + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt index 8f0a5a788dfdcb1d145b3919a4cd9efa9663c8af..cc3e41d583daae76c3ad70d407f2de613fd1e079 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanFragment.kt @@ -102,9 +102,9 @@ class SubmissionQRCodeScanFragment : Fragment(R.layout.fragment_submission_qr_co } viewModel.registrationState.observe2(this) { state -> - binding.submissionQrCodeScanSpinner.visibility = when (state.apiRequestState) { - ApiRequestState.STARTED -> View.VISIBLE - else -> View.GONE + when (state.apiRequestState) { + ApiRequestState.STARTED -> binding.submissionQrCodeScanSpinner.show() + else -> binding.submissionQrCodeScanSpinner.hide() } when (state.test?.testResult) { CoronaTestResult.PCR_POSITIVE -> diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt index 22c6170a759983360780c75565b3c73d222424f1..0f9d0459260c330ab2e547508d16b6f8981d0acd 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModel.kt @@ -19,9 +19,9 @@ import timber.log.Timber class SubmissionQRCodeScanViewModel @AssistedInject constructor( dispatcherProvider: DispatcherProvider, + @Assisted private val isConsentGiven: Boolean, private val cameraSettings: CameraSettings, private val qrCodeRegistrationStateProcessor: QrCodeRegistrationStateProcessor, - @Assisted private val isConsentGiven: Boolean, private val submissionRepository: SubmissionRepository, private val qrCodeValidator: CoronaTestQrCodeValidator, private val analyticsKeySubmissionCollector: AnalyticsKeySubmissionCollector diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionFragmentModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionFragmentModule.kt index 2c573ff236da8691de9a51a61c6689b147ffa87c..64d13707e3a8cc671b14c3612848423b89275160 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionFragmentModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/submission/viewmodel/SubmissionFragmentModule.kt @@ -8,6 +8,8 @@ import de.rki.coronawarnapp.ui.submission.fragment.SubmissionContactFragment import de.rki.coronawarnapp.ui.submission.fragment.SubmissionDispatcherFragment import de.rki.coronawarnapp.ui.submission.deletionwarning.SubmissionDeletionWarningFragment import de.rki.coronawarnapp.ui.submission.deletionwarning.SubmissionDeletionWarningModule +import de.rki.coronawarnapp.ui.submission.greencertificate.RequestGreenCertificateFragment +import de.rki.coronawarnapp.ui.submission.greencertificate.RequestGreenCertificateFragmentModule import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentFragment import de.rki.coronawarnapp.ui.submission.qrcode.consent.SubmissionConsentModule import de.rki.coronawarnapp.ui.submission.qrcode.scan.SubmissionQRCodeScanFragment @@ -110,4 +112,7 @@ internal abstract class SubmissionFragmentModule { @ContributesAndroidInjector(modules = [SubmissionTestResultKeysSharedModule::class]) abstract fun submissionTestResultKeysSharedScreen(): SubmissionTestResultKeysSharedFragment + + @ContributesAndroidInjector(modules = [RequestGreenCertificateFragmentModule::class]) + abstract fun requestGreenCertificateFragment(): RequestGreenCertificateFragment } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt index 52a1bd6ddbca830f8934326ea6c7e24763ec838a..fb41bfffa07a8878bcf3fbb1f94618534a250e3f 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt @@ -105,29 +105,29 @@ object TimeAndDateExtensions { val Instant.seconds get() = TimeUnit.MILLISECONDS.toSeconds(millis) - fun Instant.toUserTimeZone() = this.toDateTime(DateTimeZone.forTimeZone(TimeZone.getDefault())) + fun Instant.toUserTimeZone(): DateTime = this.toDateTime(DateTimeZone.forTimeZone(TimeZone.getDefault())) fun Instant.toLocalDateUserTz(): LocalDate = this.toUserTimeZone().toLocalDate() /** * Returns a readable date String with the format "dd.MM.yyyy" like 23.05.1989 of an Instant */ - fun Instant.toDayFormat() = toString(dayFormatter) + fun Instant.toDayFormat(): String = toString(dayFormatter) /** * Returns a readable date String with the format "dd.MM.yyyy" like 23.05.1989 of a LocalDate */ - fun LocalDate.toDayFormat() = toString(dayFormatter) + fun LocalDate.toDayFormat(): String = toString(dayFormatter) /** * Returns a readable date String with the format "dd.MM.yy" like 23.05.89 of an Instant */ - fun Instant.toShortDayFormat() = toString(dayFormatter2DigitYear) + fun Instant.toShortDayFormat(): String = toString(dayFormatter2DigitYear) /** * Returns a readable date String with the format "dd.MM.yy" like 23.05.89 of an LocalDate */ - fun LocalDate.toShortDayFormat() = toString(dayFormatter2DigitYear) + fun LocalDate.toShortDayFormat(): String = toString(dayFormatter2DigitYear) } typealias HourInterval = Long diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_illustration.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_illustration.xml new file mode 100644 index 0000000000000000000000000000000000000000..540ebeb59923fe4b674ef8d52fe4750a8b0aa066 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_illustration.xml @@ -0,0 +1,48 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="198dp" + android:height="184dp" + android:viewportWidth="198" + android:viewportHeight="184"> + <group> + <clip-path + android:pathData="M0,0h198v184h-198z"/> + <path + android:pathData="M106,184C156.81,184 198,142.81 198,92C198,41.19 156.81,0 106,0C55.19,0 14,41.19 14,92C14,142.81 55.19,184 106,184Z" + android:fillColor="#2D2D2F"/> + <path + android:pathData="M44.729,56.876l35.173,21.068l-34.871,58.218l-35.173,-21.068z" + android:fillColor="#000000"/> + <path + android:pathData="M47.303,160.651C48.225,160.651 49.665,160.305 51.106,159.556C83.89,142.386 94.434,133.801 94.434,113.117V69.673C94.434,63.739 91.899,61.837 87.059,59.821C80.318,57.055 58.769,49.219 52.085,46.915C50.529,46.396 48.916,46.108 47.303,46.108C45.69,46.108 44.076,46.454 42.578,46.915C35.837,49.104 14.288,57.113 7.547,59.821C2.765,61.78 0.172,63.739 0.172,69.673V113.117C0.172,133.801 11.292,141.407 43.5,159.556C44.998,160.363 46.381,160.651 47.303,160.651ZM40.85,129.365C38.891,129.365 37.278,128.616 35.779,126.599L21.318,108.853C20.453,107.701 19.935,106.375 19.935,105.108C19.935,102.458 21.951,100.326 24.602,100.326C26.215,100.326 27.483,100.902 28.923,102.803L40.619,117.899L65.222,78.373C66.317,76.587 67.815,75.723 69.37,75.723C71.848,75.723 74.21,77.452 74.21,80.102C74.21,81.427 73.519,82.752 72.77,83.905L45.69,126.599C44.48,128.443 42.809,129.365 40.85,129.365Z" + android:fillColor="#028EC1"/> + <group> + <clip-path + android:pathData="M106,184C156.81,184 198,142.81 198,92C198,41.19 156.81,0 106,0C55.19,0 14,41.19 14,92C14,142.81 55.19,184 106,184Z"/> + <path + android:pathData="M99.51,58.367L97.842,74.993L94.452,77.675L91.062,79.687L95.808,89.747L122.251,90.418L118.861,79.687L119.539,74.322L117.471,73.424C115.81,72.699 114.644,71.177 114.4,69.393L112.888,58.361H99.51V58.367Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M120.837,46.717C119.434,73.839 92.075,68.983 92.746,41.741C94.143,14.62 121.509,19.469 120.837,46.717Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M85.636,150.776C74.109,196.38 85.174,261.91 88.741,314.502L97.108,314.77C97.108,314.77 101.909,229.242 103.943,209.793C104.56,203.885 106.58,191.256 107.611,185.764C107.692,185.348 108.581,183.53 108.689,185.65C109.367,199.063 115.469,213.817 116.826,228.571C119.992,263.05 119.294,287.052 120.67,315.508C120.67,315.508 130.373,321.182 130.386,321.122C132.414,313.181 137.845,247.765 137.845,237.961C137.845,235.949 140.489,194.053 129.708,151.446L85.636,150.776Z" + android:fillColor="#8C8C98"/> + <path + android:pathData="M63.455,138.031C68.54,146.079 72.968,141.773 85.152,133.337C85.735,132.934 86.318,132.512 86.922,132.089C86.732,140.191 86.352,147.494 85.64,150.774C83.999,158.359 131.747,158.151 130.391,152.785C127.516,141.425 126.323,120.594 126.323,104.498C123.683,95.499 130.391,122.881 165.086,150.774C168.08,157.212 170.077,143.376 169.957,141.772C148.038,122.298 131.523,77.822 127.336,76.015C127.038,75.888 118.805,73.251 118.812,73.58C118.989,79.596 112.62,89.067 109.365,89.067C103.263,89.067 93.092,80.348 91.682,73.306C77.165,77.498 72.852,93.808 70.038,103.821C66.648,115.9 60.838,133.893 63.455,138.031ZM80.006,122.298C80.48,121.137 81.362,118.622 82.928,113.217L86.149,102.077C86.291,101.581 87.03,101.675 87.037,102.191C87.078,106.054 87.824,109.589 87.77,117.234C84.364,119.972 81.742,122.459 80.582,122.881C80.209,123.022 79.857,122.66 80.006,122.298Z" + android:fillColor="#C66A61"/> + <path + android:pathData="M157.781,157.544C157.734,158.625 158.732,159.452 159.806,159.302C162.671,158.885 168.306,157.065 168.559,157.134C170.392,157.859 175.617,135.373 175.966,134.053C176.068,133.663 175.952,133.232 175.507,132.699C175.07,132.172 174.372,131.94 173.702,132.063C172.061,132.371 167.602,133.171 165.755,133.561C164.422,133.841 164.278,133.889 163.895,135.38C162.61,140.365 157.843,156.423 157.788,157.517C157.781,157.524 157.781,157.537 157.781,157.544Z" + android:fillColor="#4A4A4A" + android:fillType="evenOdd"/> + <path + android:pathData="M173.729,144.057C172.806,143.278 172.094,146.547 170.556,146.834C169.885,146.957 169.202,147.169 168.559,147.463C166.972,148.181 165.789,149.576 165.146,151.197C160.728,162.378 181.217,157.988 173.729,144.057Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M98.486,114.806L101.252,116.847C113.199,112.664 119.982,91.635 103.616,100.376C99.865,103.931 97.981,108.805 95.867,112.588" + android:fillColor="#F6B893"/> + <path + android:pathData="M125.74,77.533C124.784,76.816 123.997,76.293 122.926,75.669C121.685,74.945 120.81,74.549 119.441,73.979C119.332,73.932 119.081,73.979 119.007,74.12C117.854,73.838 116.939,73.328 115.983,72.45C113.969,70.599 112.68,67.313 113.359,63.959C113.725,62.148 114.43,61.397 114.816,60.935C123.529,50.546 117.793,34.015 117.793,34.015C117.793,34.015 112.897,44.222 94.428,51.21C94.428,51.21 95.194,55.958 97.906,59.312C98.103,59.56 100.137,61.377 100.211,64.228C100.279,67.024 100.286,69.854 98.353,74.14C96.001,79.371 90.013,80.632 85.471,78.834C82.08,77.493 80.724,74.14 80.568,70.834C80.568,70.834 89.81,71.37 87.634,61.163C86.006,53.49 84.067,36.731 91.722,27.04C91.831,26.906 91.939,26.772 92.048,26.638C92.122,26.537 92.21,26.436 92.299,26.342C92.454,26.161 92.617,25.98 92.78,25.806C92.936,25.645 93.092,25.484 93.248,25.323C95.648,22.915 98.808,21.105 102.937,20.219C102.937,20.219 118.695,18.073 121.407,27.208C121.407,27.208 125.753,29.36 126.302,37.422C126.845,45.483 125.482,48.434 125.211,54.617C124.885,62.135 124.668,69.667 132.818,71.276C132.832,71.263 133.117,75.367 125.74,77.533Z" + android:fillColor="#CBAB7D"/> + </group> + </group> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_proof.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_proof.xml new file mode 100644 index 0000000000000000000000000000000000000000..975b5e9a14d427e4e43f08eb63a63e11af91a425 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_proof.xml @@ -0,0 +1,12 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="32dp" + android:height="32dp" + android:viewportWidth="32" + android:viewportHeight="32"> + <path + android:fillColor="#434445" + android:pathData="M0,15.6341a16,15.6341 0,1 0,32 0a16,15.6341 0,1 0,-32 0z" /> + <path + android:fillColor="#83D2F2" + android:pathData="M26.6104,15.3141L24.2136,12.5735L24.5476,8.9488L21.0015,8.1433L19.145,5L15.8052,6.4342L12.4654,5L10.6089,8.1335L7.0628,8.9292L7.3968,12.5636L5,15.3141L7.3968,18.0547L7.0628,21.6891L10.6089,22.4946L12.4654,25.6281L15.8052,24.1842L19.145,25.6183L21.0015,22.4848L24.5476,21.6793L24.2136,18.0547L26.6104,15.3141ZM13.929,19.9505L10.1963,16.2079L11.6501,14.7542L13.929,17.0429L19.6754,11.2768L21.1292,12.7306L13.929,19.9505Z" /> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_virus.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_virus.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e9c81a724b3bdee486a9d63337aec15d1814443 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_green_certificate_virus.xml @@ -0,0 +1,13 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="32dp" + android:height="32dp" + android:viewportWidth="32" + android:viewportHeight="32"> + <path + android:pathData="M0,15.6341a16,15.6341 0,1 0,32 0a16,15.6341 0,1 0,-32 0z" + android:fillColor="#434445"/> + <path + android:pathData="M19.2198,9.1678L19.2543,9.1858C20.1691,9.6666 20.9314,10.3236 21.5213,11.0933C21.6763,11.1166 21.8305,11.1226 21.9667,11.0975C22.245,11.0463 23.0157,10.7098 23.1816,10.3384C23.3475,9.967 23.6788,9.2527 24.4647,10.4141L24.4731,10.4265C24.6463,10.6821 25.188,11.4815 24.095,11.4357C23.0606,11.3921 22.5279,12.0266 22.3073,12.3944C22.7285,13.3049 22.9498,14.3018 22.9486,15.3124C23.1674,15.4648 23.4807,15.5771 23.9284,15.5697C24.6777,15.5575 25.1236,15.5703 25.3704,15.5842C25.5299,15.593 26.1202,15.5889 26.2512,15.4987C26.5749,15.2763 27.2001,14.9899 27.1081,16.1798C27.0307,17.177 26.7955,17.5559 26.3234,17.1764C26.0824,16.9831 25.3774,16.7974 25.0776,16.7235C24.4489,16.5674 23.4309,16.4071 22.7886,16.7784C22.6588,17.3686 22.4488,17.9515 22.1539,18.5123C22.1114,18.5933 22.0674,18.6731 22.0222,18.7517L12.4564,9.3946C12.8215,9.1734 13.2055,8.9871 13.6029,8.8373C13.6864,8.6882 13.7592,8.4678 13.7067,8.1909C13.6998,8.1548 13.6932,8.1117 13.6858,8.064L13.6858,8.064C13.647,7.8138 13.5886,7.4368 13.3755,7.2799C13.1421,7.1093 12.6571,6.5371 14.0258,6.3421C14.0591,6.3373 14.0928,6.332 14.1264,6.3266L14.1264,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266C14.4711,6.272 14.805,6.2191 14.6417,6.8142C14.5794,7.0412 14.5683,7.2607 14.5869,7.4621C14.6285,7.9099 14.7627,8.1856 15.0538,8.4632C16.0109,8.3242 17.0032,8.3847 17.9654,8.6649C18.1846,8.5057 18.3983,8.2521 18.5621,7.8526C18.7489,7.3962 18.9077,6.8913 19.0156,6.5478C19.059,6.4097 19.0942,6.2977 19.1198,6.2255C19.1873,6.0334 19.2153,5.8302 19.1989,5.627C19.1698,5.2614 19.2671,4.6549 20.4057,5.2504C21.7254,5.9414 21.3086,6.272 20.8703,6.4467C20.6927,6.5171 20.5367,6.633 20.4092,6.775C20.0407,7.1874 19.3244,8.275 19.2198,9.1678ZM10.0397,11.881L19.5965,21.2207C19.2443,21.4318 18.8747,21.6104 18.4927,21.7553C18.4778,21.9366 18.4826,22.1527 18.5183,22.4095C18.5953,22.9677 18.8992,23.7501 19.0756,24.2043L19.0757,24.2044L19.0757,24.2045L19.0757,24.2046C19.1339,24.3542 19.1781,24.4682 19.1959,24.5268C19.2356,24.6585 19.3101,24.7099 19.4133,24.7811C19.4296,24.7923 19.4466,24.8041 19.4642,24.8167C19.7838,25.0437 20.2676,25.5327 19.1184,25.8546C18.1556,26.1242 17.719,26.0333 17.9128,25.4599C18.0124,25.1677 18.0589,24.95 18.0258,24.6432C17.9627,24.0588 17.5953,22.7526 17.0858,22.1259C16.1485,22.2699 15.1761,22.2225 14.2301,21.9645C13.9739,22.0547 13.6963,22.1853 13.5237,22.3636C13.3269,22.5668 12.895,23.2886 12.9759,23.6868C13.0562,24.0856 13.2018,24.8592 11.8873,24.3702L11.8734,24.3651C11.5842,24.2578 10.6783,23.9219 11.5951,23.3241C12.8112,22.5312 12.4496,21.2261 12.4496,21.2261L12.4356,21.1891C11.6218,20.6923 10.9441,20.0492 10.4187,19.312C10.2376,19.3739 10.0441,19.475 9.8409,19.6291C8.6854,20.5064 8.4584,20.7509 8.4584,20.7509C8.4584,20.7509 7.5153,22.6655 6.5251,21.1479C5.5348,19.6297 6.3492,19.2699 7.432,19.522C7.432,19.522 9.0503,19.0671 9.7667,18.1856C9.3816,17.3468 9.1657,16.4351 9.1369,15.5074C9.0463,15.4435 8.9534,15.387 8.8603,15.3426C8.5681,15.2041 7.6704,15.0789 7.2344,15.2571C6.7623,15.4497 5.8937,15.7251 6.0107,14.6505C6.1045,13.7895 6.4665,13.3767 7.2344,13.9106C7.9416,14.4022 8.7013,14.2481 9.2569,13.9969C9.382,13.3461 9.6036,12.7024 9.9278,12.0855C9.9641,12.0164 10.0014,11.9483 10.0397,11.881ZM7.6364,8.0651L23.1056,23.1964C23.4592,23.5417 23.9595,23.6044 24.2219,23.335C24.4842,23.0662 24.4102,22.5679 24.0567,22.2225L8.5874,7.0912C8.2339,6.7459 7.7341,6.6838 7.4712,6.9526C7.2088,7.2214 7.2828,7.7197 7.6364,8.0651Z" + android:fillColor="#83D2F2" + android:fillType="evenOdd"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_illustration.xml b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_illustration.xml new file mode 100644 index 0000000000000000000000000000000000000000..c3b866fdb7b22d14f73cb89be411b9d08efaefa1 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_illustration.xml @@ -0,0 +1,41 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="223dp" + android:height="184dp" + android:viewportWidth="223" + android:viewportHeight="184"> + <path + android:pathData="M131,184C181.81,184 223,142.81 223,92C223,41.19 181.81,0 131,0C80.19,0 39,41.19 39,92C39,142.81 80.19,184 131,184Z" + android:fillColor="#E3F0FF"/> + <path + android:pathData="M38.539,152.412H51.042C52.194,152.412 53.059,152.757 53.923,153.622L62.796,162.437C70.056,169.754 76.797,169.697 84.057,162.437L92.93,153.622C93.852,152.757 94.658,152.412 95.868,152.412H108.314C118.627,152.412 123.409,147.687 123.409,137.316V124.871C123.409,123.661 123.755,122.854 124.619,121.932L133.435,113.059C140.752,105.799 140.695,99.058 133.435,91.798L124.619,82.925C123.755,82.061 123.409,81.197 123.409,80.044V67.541C123.409,57.286 118.685,52.446 108.314,52.446H95.868C94.658,52.446 93.852,52.158 92.93,51.293L84.057,42.478C76.797,35.161 70.056,35.218 62.796,42.478L53.923,51.293C53.059,52.158 52.194,52.446 51.042,52.446H38.539C28.226,52.446 23.444,57.17 23.444,67.541V80.044C23.444,81.197 23.156,82.061 22.291,82.925L13.476,91.798C6.158,99.058 6.216,105.799 13.476,113.059L22.291,121.932C23.156,122.854 23.444,123.661 23.444,124.871V137.316C23.444,147.629 28.226,152.412 38.539,152.412ZM67.002,130.575C65.043,130.575 63.43,129.826 61.932,127.809L47.47,110.063C46.606,108.911 46.087,107.585 46.087,106.318C46.087,103.667 48.104,101.536 50.754,101.536C52.367,101.536 53.635,102.112 55.075,104.013L66.772,119.109L91.374,79.584C92.469,77.797 93.967,76.933 95.523,76.933C98,76.933 100.363,78.662 100.363,81.312C100.363,82.637 99.614,83.962 98.922,85.115L71.842,127.809C70.632,129.653 68.961,130.575 67.002,130.575Z" + android:fillColor="#028EC1"/> + <group> + <clip-path + android:pathData="M131,184C181.81,184 223,142.81 223,92C223,41.19 181.81,0 131,0C80.19,0 39,41.19 39,92C39,142.81 80.19,184 131,184Z"/> + <path + android:pathData="M124.51,58.367L122.842,74.993L119.452,77.675L116.062,79.687L120.808,89.747L147.252,90.418L143.861,79.687L144.54,74.322L142.471,73.424C140.81,72.699 139.644,71.177 139.4,69.393L137.888,58.361H124.51V58.367Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M145.838,46.717C144.434,73.839 117.075,68.983 117.746,41.741C119.143,14.62 146.509,19.469 145.838,46.717Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M110.636,150.776C99.109,196.38 110.175,261.91 113.741,314.502L122.108,314.77C122.108,314.77 126.909,229.242 128.943,209.793C129.56,203.885 131.58,191.256 132.611,185.764C132.692,185.348 133.581,183.53 133.689,185.65C134.367,199.063 140.47,213.817 141.826,228.571C144.992,263.05 144.294,287.052 145.67,315.508C145.67,315.508 155.373,321.182 155.386,321.122C157.414,313.181 162.845,247.765 162.845,237.961C162.845,235.949 165.489,194.053 154.708,151.446L110.636,150.776Z" + android:fillColor="#8C8C98"/> + <path + android:pathData="M88.455,138.031C93.54,146.079 97.968,141.773 110.152,133.337C110.735,132.934 111.318,132.512 111.922,132.089C111.732,140.191 111.352,147.494 110.64,150.774C108.999,158.359 156.747,158.151 155.391,152.785C152.516,141.425 151.323,120.594 151.323,104.498C148.683,95.499 155.391,122.881 190.086,150.774C193.08,157.212 195.077,143.376 194.957,141.772C173.038,122.298 156.523,77.822 152.336,76.015C152.038,75.888 143.805,73.251 143.812,73.58C143.989,79.596 137.62,89.067 134.365,89.067C128.263,89.067 118.092,80.348 116.682,73.306C102.165,77.498 97.852,93.808 95.038,103.821C91.648,115.9 85.838,133.893 88.455,138.031ZM105.006,122.298C105.48,121.137 106.362,118.622 107.928,113.217L111.149,102.077C111.291,101.581 112.03,101.675 112.037,102.191C112.078,106.054 112.824,109.589 112.77,117.234C109.364,119.972 106.742,122.459 105.582,122.881C105.209,123.022 104.857,122.66 105.006,122.298Z" + android:fillColor="#C66A61"/> + <path + android:pathData="M182.781,157.544C182.734,158.625 183.732,159.452 184.806,159.302C187.671,158.885 193.306,157.065 193.559,157.134C195.392,157.859 200.617,135.373 200.966,134.053C201.068,133.663 200.952,133.232 200.507,132.699C200.07,132.172 199.372,131.94 198.702,132.063C197.061,132.371 192.602,133.171 190.755,133.561C189.422,133.841 189.278,133.889 188.895,135.38C187.61,140.365 182.843,156.423 182.788,157.517C182.781,157.524 182.781,157.537 182.781,157.544Z" + android:fillColor="#4A4A4A" + android:fillType="evenOdd"/> + <path + android:pathData="M198.729,144.057C197.806,143.278 197.094,146.547 195.556,146.834C194.885,146.957 194.202,147.169 193.559,147.463C191.972,148.181 190.789,149.576 190.146,151.197C185.728,162.378 206.217,157.988 198.729,144.057Z" + android:fillColor="#F6B893"/> + <path + android:pathData="M123.486,114.806L126.252,116.847C138.199,112.664 144.982,91.635 128.616,100.376C124.865,103.931 122.981,108.805 120.867,112.588" + android:fillColor="#F6B893"/> + <path + android:pathData="M150.74,77.533C149.784,76.816 148.997,76.293 147.926,75.669C146.685,74.945 145.81,74.549 144.441,73.979C144.332,73.932 144.081,73.979 144.007,74.12C142.854,73.838 141.939,73.328 140.983,72.45C138.969,70.599 137.681,67.313 138.359,63.959C138.725,62.148 139.43,61.397 139.817,60.935C148.529,50.546 142.793,34.015 142.793,34.015C142.793,34.015 137.898,44.222 119.428,51.21C119.428,51.21 120.194,55.958 122.906,59.312C123.103,59.56 125.137,61.377 125.211,64.228C125.279,67.024 125.286,69.854 123.354,74.14C121.001,79.371 115.014,80.632 110.471,78.834C107.081,77.493 105.725,74.14 105.569,70.834C105.569,70.834 114.81,71.37 112.634,61.163C111.006,53.49 109.067,36.731 116.722,27.04C116.831,26.906 116.939,26.772 117.048,26.638C117.122,26.537 117.211,26.436 117.299,26.342C117.455,26.161 117.617,25.98 117.78,25.806C117.936,25.645 118.092,25.484 118.248,25.323C120.648,22.915 123.808,21.105 127.937,20.219C127.937,20.219 143.695,18.073 146.407,27.208C146.407,27.208 150.753,29.36 151.303,37.422C151.845,45.483 150.482,48.434 150.211,54.617C149.885,62.135 149.668,69.667 157.819,71.276C157.832,71.263 158.117,75.367 150.74,77.533Z" + android:fillColor="#4A4A4A"/> + </group> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_proof.xml b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_proof.xml new file mode 100644 index 0000000000000000000000000000000000000000..09747a06e2d72eb638f896b9dc5267b3959af9ae --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_proof.xml @@ -0,0 +1,12 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="32dp" + android:height="32dp" + android:viewportWidth="32" + android:viewportHeight="32"> + <path + android:pathData="M0,15.6341a16,15.6341 0,1 0,32 0a16,15.6341 0,1 0,-32 0z" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M26.6104,15.3141L24.2136,12.5735L24.5476,8.9488L21.0015,8.1433L19.145,5L15.8052,6.4342L12.4654,5L10.6089,8.1335L7.0628,8.9292L7.3968,12.5636L5,15.3141L7.3968,18.0547L7.0628,21.6891L10.6089,22.4946L12.4654,25.6281L15.8052,24.1842L19.145,25.6183L21.0015,22.4848L24.5476,21.6793L24.2136,18.0547L26.6104,15.3141ZM13.929,19.9505L10.1963,16.2079L11.6501,14.7542L13.929,17.0429L19.6754,11.2768L21.1292,12.7306L13.929,19.9505Z" + android:fillColor="#007FAD"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_virus.xml b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_virus.xml new file mode 100644 index 0000000000000000000000000000000000000000..3f325d40eee4791e0aa769fd47dd93ed90f1c098 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_green_certificate_virus.xml @@ -0,0 +1,13 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="32dp" + android:height="32dp" + android:viewportWidth="32" + android:viewportHeight="32"> + <path + android:pathData="M0,15.6341a16,15.6341 0,1 0,32 0a16,15.6341 0,1 0,-32 0z" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M19.2198,9.1678L19.2543,9.1858C20.1691,9.6666 20.9314,10.3236 21.5213,11.0933C21.6763,11.1166 21.8305,11.1226 21.9667,11.0975C22.245,11.0463 23.0157,10.7098 23.1816,10.3384C23.3475,9.967 23.6788,9.2527 24.4647,10.4141L24.4731,10.4265C24.6463,10.6821 25.188,11.4815 24.095,11.4357C23.0606,11.3921 22.5279,12.0266 22.3073,12.3944C22.7285,13.3049 22.9498,14.3018 22.9486,15.3124C23.1674,15.4648 23.4807,15.5771 23.9284,15.5697C24.6777,15.5575 25.1236,15.5703 25.3704,15.5842C25.5299,15.593 26.1202,15.5889 26.2512,15.4987C26.5749,15.2763 27.2001,14.9899 27.1081,16.1798C27.0307,17.177 26.7955,17.5559 26.3234,17.1764C26.0824,16.9831 25.3774,16.7974 25.0776,16.7235C24.4489,16.5674 23.4309,16.4071 22.7886,16.7784C22.6588,17.3686 22.4488,17.9515 22.1539,18.5123C22.1114,18.5933 22.0674,18.6731 22.0222,18.7517L12.4564,9.3946C12.8215,9.1734 13.2055,8.9871 13.6029,8.8373C13.6864,8.6882 13.7592,8.4678 13.7067,8.1909C13.6998,8.1548 13.6932,8.1117 13.6858,8.064L13.6858,8.064C13.647,7.8138 13.5886,7.4368 13.3755,7.2799C13.1421,7.1093 12.6571,6.5371 14.0258,6.3421C14.0591,6.3373 14.0928,6.332 14.1264,6.3266L14.1264,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266L14.1265,6.3266C14.4711,6.272 14.805,6.2191 14.6417,6.8142C14.5794,7.0412 14.5683,7.2607 14.5869,7.4621C14.6285,7.9099 14.7627,8.1856 15.0538,8.4632C16.0109,8.3242 17.0032,8.3847 17.9654,8.6649C18.1846,8.5057 18.3983,8.2521 18.5621,7.8526C18.7489,7.3962 18.9077,6.8913 19.0156,6.5478C19.059,6.4097 19.0942,6.2977 19.1198,6.2255C19.1873,6.0334 19.2153,5.8302 19.1989,5.627C19.1698,5.2614 19.2671,4.6549 20.4057,5.2504C21.7254,5.9414 21.3086,6.272 20.8703,6.4467C20.6927,6.5171 20.5367,6.633 20.4092,6.775C20.0407,7.1874 19.3244,8.275 19.2198,9.1678ZM10.0397,11.881L19.5965,21.2207C19.2443,21.4318 18.8747,21.6104 18.4927,21.7553C18.4778,21.9366 18.4826,22.1527 18.5183,22.4095C18.5953,22.9677 18.8992,23.7501 19.0756,24.2043L19.0757,24.2044L19.0757,24.2045L19.0757,24.2046C19.1339,24.3542 19.1781,24.4682 19.1959,24.5268C19.2356,24.6585 19.3101,24.7099 19.4133,24.7811C19.4296,24.7923 19.4466,24.8041 19.4642,24.8167C19.7838,25.0437 20.2676,25.5327 19.1184,25.8546C18.1556,26.1242 17.719,26.0333 17.9128,25.4599C18.0124,25.1677 18.0589,24.95 18.0258,24.6432C17.9627,24.0588 17.5953,22.7526 17.0858,22.1259C16.1485,22.2699 15.1761,22.2225 14.2301,21.9645C13.9739,22.0547 13.6963,22.1853 13.5237,22.3636C13.3269,22.5668 12.895,23.2886 12.9759,23.6868C13.0562,24.0856 13.2018,24.8592 11.8873,24.3702L11.8734,24.3651C11.5842,24.2578 10.6783,23.9219 11.5951,23.3241C12.8112,22.5312 12.4496,21.2261 12.4496,21.2261L12.4356,21.1891C11.6218,20.6923 10.9441,20.0492 10.4187,19.312C10.2376,19.3739 10.0441,19.475 9.8409,19.6291C8.6854,20.5064 8.4584,20.7509 8.4584,20.7509C8.4584,20.7509 7.5153,22.6655 6.5251,21.1479C5.5348,19.6297 6.3492,19.2699 7.432,19.522C7.432,19.522 9.0503,19.0671 9.7667,18.1856C9.3816,17.3468 9.1657,16.4351 9.1369,15.5074C9.0463,15.4435 8.9534,15.387 8.8603,15.3426C8.5681,15.2041 7.6704,15.0789 7.2344,15.2571C6.7623,15.4497 5.8937,15.7251 6.0107,14.6505C6.1045,13.7895 6.4665,13.3767 7.2344,13.9106C7.9416,14.4022 8.7013,14.2481 9.2569,13.9969C9.382,13.3461 9.6036,12.7024 9.9278,12.0855C9.9641,12.0164 10.0014,11.9483 10.0397,11.881ZM7.6364,8.0651L23.1056,23.1964C23.4592,23.5417 23.9595,23.6044 24.2219,23.335C24.4842,23.0662 24.4102,22.5679 24.0567,22.2225L8.5874,7.0912C8.2339,6.7459 7.7341,6.6838 7.4712,6.9526C7.2088,7.2214 7.2828,7.7197 7.6364,8.0651Z" + android:fillColor="#007FAD" + android:fillType="evenOdd"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate.xml b/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate.xml new file mode 100644 index 0000000000000000000000000000000000000000..7c6c51477040be18f5f54b060129f01cd77112b1 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate.xml @@ -0,0 +1,207 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/colorBackground" + tools:context="ui.submission.greencertificate.RequestGreenCertificateFragment"> + + <com.google.android.material.appbar.MaterialToolbar + android:id="@+id/toolbar" + style="@style/CWAToolbar.Close.Transparent" + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:title="@string/request_green_certificate_title" /> + + <ScrollView + android:id="@+id/scrollview" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintBottom_toTopOf="@id/agree_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/toolbar"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:id="@+id/illustration_image" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="32dp" + android:importantForAccessibility="no" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" + app:srcCompat="@drawable/ic_green_certificate_illustration" /> + + <TextView + android:id="@+id/subtitle" + style="@style/subtitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/spacing_normal" + android:layout_marginTop="48dp" + android:text="@string/request_green_certificate_subtitle" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/illustration_image" /> + + <androidx.constraintlayout.widget.Group + android:id="@+id/birthDateGroup" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + app:constraint_referenced_ids="date_input_layout,birth_date_description" /> + + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/date_input_layout" + style="@style/TextInputLayoutTheme" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_small" + android:hint="@string/request_green_certificate_birthdate_hint" + app:endIconMode="clear_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/subtitle"> + + <com.google.android.material.textfield.TextInputEditText + android:id="@+id/date_input_edit" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:clickable="true" + android:cursorVisible="false" + android:focusable="true" + android:focusableInTouchMode="false" + android:imeOptions="actionDone" + android:inputType="date" /> + + </com.google.android.material.textfield.TextInputLayout> + + <TextView + android:id="@+id/birth_date_description" + style="@style/body2" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/spacing_normal" + android:layout_marginTop="16dp" + android:text="@string/request_green_certificate_birthdate_description" + android:textSize="16sp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/date_input_layout" /> + + <ImageView + android:id="@+id/request_green_certificate_info_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginStart="24dp" + android:layout_marginTop="24dp" + android:importantForAccessibility="no" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/birth_date_description" + app:srcCompat="@drawable/ic_green_certificate_virus" /> + + <TextView + android:id="@+id/request_green_certificate_info_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/request_green_certificate_body_1" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/request_green_certificate_info_icon" + app:layout_constraintTop_toTopOf="@id/request_green_certificate_info_icon" /> + + <ImageView + android:id="@+id/request_green_certificate_proof_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_medium" + android:importantForAccessibility="no" + app:layout_constraintStart_toStartOf="@id/request_green_certificate_info_icon" + app:layout_constraintTop_toBottomOf="@id/request_green_certificate_info_text" + app:srcCompat="@drawable/ic_green_certificate_proof" /> + + <TextView + android:id="@+id/request_green_certificate_proof_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/request_green_certificate_body_2" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/request_green_certificate_proof_icon" + app:layout_constraintTop_toTopOf="@id/request_green_certificate_proof_icon" /> + + <include + android:id="@+id/privacy_card" + layout="@layout/fragment_request_green_certificate_privacy" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_small" + android:layout_marginTop="@dimen/spacing_medium" + android:layout_marginEnd="@dimen/spacing_small" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/request_green_certificate_proof_text" /> + + <de.rki.coronawarnapp.ui.view.MoreInformationView + android:id="@+id/privacy_information" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_medium" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_medium" + android:layout_marginBottom="@dimen/spacing_small" + android:focusable="true" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/privacy_card" + app:titleText="@string/request_green_certificate_privacy_legal_information" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + </ScrollView> + + <Button + android:id="@+id/agree_button" + style="@style/buttonPrimary" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_normal" + android:layout_marginBottom="@dimen/spacing_small" + android:text="@string/request_green_certificate_agree_button" + app:layout_constraintBottom_toTopOf="@id/disagree_button" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/scrollview" /> + + <Button + android:id="@+id/disagree_button" + style="@style/button" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_normal" + android:layout_marginBottom="@dimen/spacing_small" + android:text="@string/request_green_certificate_disagree_button" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate_privacy.xml b/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate_privacy.xml new file mode 100644 index 0000000000000000000000000000000000000000..3261eb664318651aa2d5f001e444d4a8266f05f9 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/fragment_request_green_certificate_privacy.xml @@ -0,0 +1,145 @@ +<?xml version="1.0" encoding="utf-8"?> +<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + style="@style/GreyCard" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/green_certificatelegal_text_card_title" + style="@style/subtitleBoldSixteen" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_small" + android:layout_marginTop="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/request_green_certificate_privacy_title" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <include + android:id="@+id/bulletpoint_one" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/first_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/green_certificatelegal_text_card_title" /> + + <TextView + android:id="@+id/first_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/request_green_certificate_privacy_section_1" + app:layout_constraintEnd_toEndOf="@id/green_certificatelegal_text_card_title" + app:layout_constraintStart_toEndOf="@id/bulletpoint_one" + app:layout_constraintTop_toBottomOf="@id/green_certificatelegal_text_card_title" /> + + <include + android:id="@+id/bulletpoint_two" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/second_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/bulletpoint_one" /> + + <TextView + android:id="@+id/second_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/request_green_certificate_privacy_section_2" + app:layout_constraintEnd_toEndOf="@id/first_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/first_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/first_bulletpoint_text" /> + + <include + android:id="@+id/extra_pcr_bulletpoint" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/extra_pcr_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/bulletpoint_two" /> + + <TextView + android:id="@+id/extra_pcr_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/request_green_certificate_privacy_pcr_extra_section" + app:layout_constraintEnd_toEndOf="@id/second_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/second_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/second_bulletpoint_text" /> + + <androidx.constraintlayout.widget.Group + android:id="@+id/pcrExtraBullet" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:visibility="gone" + app:constraint_referenced_ids="extra_pcr_bulletpoint_text,extra_pcr_bulletpoint" /> + + <include + android:id="@+id/bulletpoint_three" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/third_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/green_certificatelegal_text_card_title" /> + + <TextView + android:id="@+id/third_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/request_green_certificate_privacy_section_3" + app:layout_constraintEnd_toEndOf="@id/second_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/second_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/extra_pcr_bulletpoint_text" /> + + <include + android:id="@+id/bulletpoint_four" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/fourth_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/green_certificatelegal_text_card_title" /> + + <TextView + android:id="@+id/fourth_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:paddingBottom="@dimen/spacing_small" + android:text="@string/request_green_certificate_privacy_section_4" + app:layout_constraintEnd_toEndOf="@id/third_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/third_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/third_bulletpoint_text" /> + + <include + android:id="@+id/bulletpoint_five" + layout="@layout/include_bullet_point" + android:layout_width="@dimen/bullet_point_size" + android:layout_height="@dimen/bullet_point_size" + app:layout_constraintBaseline_toBaselineOf="@id/fifth_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/green_certificatelegal_text_card_title" /> + + <TextView + android:id="@+id/fifth_bulletpoint_text" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:paddingBottom="@dimen/spacing_small" + android:text="@string/request_green_certificate_privacy_section_5" + app:layout_constraintEnd_toEndOf="@id/fourth_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/fourth_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/fourth_bulletpoint_text" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml index 2067ff633f64b74caf99933b59bbefd0d42bab24..040193d39d4b578b619c263f59f862c0e4e3bcd3 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml @@ -41,16 +41,19 @@ app:layout_constraintStart_toStartOf="@id/submission_qr_code_scan_preview" app:layout_constraintTop_toBottomOf="@id/submission_qr_code_scan_guideline_center" /> - <ProgressBar + <com.google.android.material.progressindicator.CircularProgressIndicator android:id="@+id/submission_qr_code_scan_spinner" - style="?android:attr/progressBarStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/spacing_normal" + android:indeterminate="true" android:visibility="gone" + app:hideAnimationBehavior="inward" + app:indicatorColor="@color/colorAccent" app:layout_constraintEnd_toEndOf="@+id/submission_qr_code_scan_body" app:layout_constraintStart_toStartOf="@+id/submission_qr_code_scan_body" - app:layout_constraintTop_toBottomOf="@+id/submission_qr_code_scan_body" /> + app:layout_constraintTop_toBottomOf="@+id/submission_qr_code_scan_body" + app:trackColor="@android:color/transparent" /> <com.google.android.material.appbar.MaterialToolbar android:id="@+id/submission_qr_code_scan_toolbar" diff --git a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml index e91b6e0d929306d60e5ecbf988254baa8baeb498..a5cb4fd1e2f4f59f7d6dd8f6e4c40adb0fd26a5d 100644 --- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml @@ -394,6 +394,10 @@ app:popUpTo="@id/mainFragment" app:popUpToInclusive="false" /> + <action + android:id="@+id/action_submissionTestResultGreenCertificateFragment" + app:destination="@id/requestGreenCertificateFragment" /> + <action android:id="@+id/action_to_submissionTestResultAvailableFragment" app:destination="@id/submissionTestResultAvailableFragment" @@ -812,10 +816,19 @@ app:argType="string" /> <argument android:name="correctionLevel" - app:argType="com.google.zxing.qrcode.decoder.ErrorCorrectionLevel" - android:defaultValue="Q" /> + android:defaultValue="Q" + app:argType="com.google.zxing.qrcode.decoder.ErrorCorrectionLevel" /> </fragment> <action android:id="@+id/action_global_qrCodeFullScreenFragment" app:destination="@id/qrCodeFullScreenFragment" /> + <fragment + android:id="@+id/requestGreenCertificateFragment" + android:name="de.rki.coronawarnapp.ui.submission.greencertificate.RequestGreenCertificateFragment" + android:label="fragment_request_green_certificate" + tools:layout="@layout/fragment_request_green_certificate"> + <argument + android:name="testType" + app:argType="de.rki.coronawarnapp.coronatest.type.CoronaTest$Type" /> + </fragment> </navigation> diff --git a/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml b/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml index a6b3daec9354f9ae75cdf8d94a67446c6227dd96..e852e422e654fc6fb90925755bfd806c86e98326 100644 --- a/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/green_certificate_strings.xml @@ -1,2 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<resources></resources> \ No newline at end of file +<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> + <!-- XTXT: Request green certificate title --> + <string name="request_green_certificate_title">COVID-19-Testzertifikat</string> + <!-- XTXT: Request green certificate subtitle --> + <string name="request_green_certificate_subtitle">Sie können über die App ein offizielles digitales Testzertifikat anfordern, das anschließend in der App hinzugefügt wird.</string> + <!-- XTXT: Request green certificate body section 1 --> + <string name="request_green_certificate_body_1">Das Testzertifikat wird nur bei einem negativen Testergebnis ausgestellt.</string> + <!-- XTXT: Request green certificate body section 2 --> + <string name="request_green_certificate_body_2">Das Testzertifikat gilt innerhalb der EU als gültiger Nachweis eines negativen Testergebnisses (z.B. für Reisen).</string> + <!-- XTXT: Request green certificate body section 3 --> + <string name="request_green_certificate_body_3">Das Testzertifikat enthält Daten, die der Prüf-App die Validierung Ihres Zertifikats erlauben.</string> + <!-- XBUT: Request green certificate agree button --> + <string name="request_green_certificate_agree_button">Testzertifikat Anfordern</string> + <!-- XBUT: Request green certificate disagree button --> + <string name="request_green_certificate_disagree_button">Nein Danke</string> + <!-- XTXT: Request green certificate birth date description --> + <string name="request_green_certificate_birthdate_description">Zur Sicherheit wird Ihr Testergebnis mit Ihrem Geburtsdatum geschützt. Das Testergebnis kann nur bei korrekt angegebenem Geburtstdatum zugestellt werden.</string> + <!-- XTXT: Request green certificate birth date hint --> + <string name="request_green_certificate_birthdate_hint">Geburtsdatum</string> + <!-- XTXT: Request green certificate exit dialog title --> + <string name="request_gc_dialog_title">Registrierung abbrechen</string> + <!-- XTXT: Request green certificate exit dialog message --> + <string name="request_gc_dialog_message">Wenn Sie die Test-Registrierung abbrechen, können Sie Ihr Testergebnis nicht in der App erhalten.</string> + <!-- XBUT: Request green certificate exit dialog negative button --> + <string name="request_gc_dialog_positive_button">OK</string> + <!-- XBUT: Request green certificate exit dialog negative button --> + <string name="request_gc_dialog_negative_button">Abbrechen</string> +</resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml index 9cc3d26ac762a94c05e17fca6c9df4c831a67fba..8b6fe987ca2a6c133e6f23b36ff42e1cc50010bd 100644 --- a/Corona-Warn-App/src/main/res/values-de/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/legal_strings.xml @@ -180,4 +180,22 @@ <string name="vaccination_privacy_card_third_bulletpoint_title_text" translatable="false">"Wenn Sie den QR-Code in der App vorzeigen und dieser mit der Prüf-App gescannt wird, können andere Personen nachvollziehen, ob Ihr Impfschutz vollständig ist. Bei der Prüfung werden in der offiziellen Prüf-App auch Ihr Name und Ihr Geburtsdatum angezeigt."</string> <!-- XTXT: First bulletpoint title for privacy card --> <string name="vaccination_privacy_card_fourth_bulletpoint_title_text" translatable="false">"Sie haben jederzeit die Möglichkeit, Impfzertifikate in der App wieder zu entfernen. Bis dahin bleiben die Impfzertifikate auf Ihrem Smartphone gespeichert."</string> + + <!-- Green Certificate --> + <!-- XTXT: Request GC title for privacy card --> + <string name="request_green_certificate_privacy_title">Datenschutz und Datensicherheit</string> + <!-- XTXT: Request GC bullet point 1 for privacy card --> + <string name="request_green_certificate_privacy_section_1" translatable="false">Die Anforderung und Verwendung des digitalen COVID-19-Testzertifikats ist freiwillig. Der Nachweis eines negativen Testzertifikats kann auch auf andere Weise erbracht werden.</string> + <!-- XTXT: Request GC bullet point 3 for privacy card --> + <string name="request_green_certificate_privacy_section_2" translatable="false">Zur Erstellung Ihres Testzertifikats werden Daten einmalig verschlüsselt an das RKI übermittelt. Das RKI signiert die Daten elektronisch, um die Gültigkeit zu bestätigen. Die Daten werden beim RKI nicht gespeichert.</string> + <!-- XTXT: Request GC extra bullet point PCR test for privacy card --> + <string name="request_green_certificate_privacy_pcr_extra_section" translatable="false">Um sicherzustellen, dass niemand mit Ihrem QR-Code Ihr Testergebnis abrufen kann, wird es mit Ihrem Geburtsdatum geschützt. Ihr Geburtsdatum wird verschlüsselt an das Labor übermittelt, um das Testergebnis abzurufen.</string> + <!-- XTXT: Request GC bullet point 3 for privacy card --> + <string name="request_green_certificate_privacy_section_3" translatable="false">Das COVID-19-Testzertifikat enthält die Daten über Ihren Corona-Test. Zum Nachweis des negativen Testergebnisses in den gesetzlich vorgesehenen Fällen genügt das Vorzeigen des QR-Codes in der App. Stellen Sie das Testzertifikat niemandem zur Verfügung, wenn Sie nicht wollen, dass die Daten ausgelesen werden.</string> + <!-- XTXT: Request GC bullet point 4 for privacy card --> + <string name="request_green_certificate_privacy_section_4" translatable="false">Wenn Sie den QR-Code des Testzertifikats in der App vorzeigen und dieser mit der Prüf-App gescannt wird, können andere Personen Ihr Testergebnis nachvollziehen. Bei der Prüfung werden in der offiziellen Prüf-App auch Ihr Name und Ihr Geburtsdatum angezeigt.</string> + <!-- XTXT: Request GC bullet point 5 for privacy card --> + <string name="request_green_certificate_privacy_section_5" translatable="false">Sie haben jederzeit die Möglichkeit, Testzertifikate in der App wieder zu entfernen. Bis dahin bleiben die Testzertifikate auf Ihrem Smartphone gespeichert.</string> <!-- XTXT: Request GC bullet point 1 for privacy card --> + <!-- XTXT: Request GC legal information section for privacy card --> + <string name="request_green_certificate_privacy_legal_information" translatable="false">Ausführliche Hinweise zur Datenverarbeitung finden Sie in der Datenschutzerklärung</string> </resources> diff --git a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml index 7a09f10daad48bcbd43615d73098a38ab68b16eb..1c074fcc7a663cedc3220ff7ef59d5ccf87cf57a 100644 --- a/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values-tr/legal_strings.xml @@ -36,7 +36,7 @@ <string name="submission_no_consent_your_consent_subsection_body_second_part">"<b>Uygulama test sonucunuzu, karşılaştığınız kullanıcıları uyarmak için paylaşır. Bu yukarıda belirtilen ülkelerdeki Korona Uygulamasının kullanıcıları ve aynı zamanda aynı etkinlikte ya da yerde bulunduğunuz kullanıcılar için geçerlidir. Hızlı test durumunda sadece Korona Uyarı Uygulamasının kullanıcıları uyarılır. Semptomlarınızın başladığına ilişkin ek bilgiler verirseniz bu veriler de paylaşılır.</b>"</string> <!-- YTXT: Body for keys submission no consent text third part--> <string name="submission_no_consent_your_consent_subsection_body_third_part">"Sonraki adımada, rastgele kimiliklerinize erişim onayı verin."</string> - <!-- YTXT: Body for keys submission no consent text fourth part--> + <!-- YTXT: Body for keys submission no consent text fourth part--> <string name="submission_no_consent_your_consent_subsection_body_fourth_part">"Uyarı gerçekleştikten sonra, Uygulamayı silerek verdiğiniz rıza beyanını da geri alabilirsiniz."</string> <!-- XTXT: Title for legal information of the contact diary onboarding screen --> @@ -178,4 +178,21 @@ <!-- XTXT: First bulletpoint title for privacy card --> <string name="vaccination_privacy_card_fourth_bulletpoint_title_text" translatable="false">"Aşı sertifikasını istediğiniz zaman Uygulamadan kaldırma seçeneğiniz vardır. Bunu yapıncaya kadar aşı sertifikaları akıllı telefonunuzda kayıtlı kalacaktır."</string> + <!-- Green Certificate --> + <!-- XTXT: Request GC title for privacy card --> + <string name="request_green_certificate_privacy_title" translatable="false">Veri gizliliği ve veri güvenliği</string> + <!-- XTXT: Request GC bullet point 1 for privacy card --> + <string name="request_green_certificate_privacy_section_1" translatable="false">Dijital COVID-19 test sertifikasının talep etmek ve kullanmak isteğe bağlıdır. Yapılan testin negatif çıktığına ilişkin sertifikanın kanıtı, başka yollarla da sağlanabilir.</string> + <!-- XTXT: Request GC bullet point 2 for privacy card --> + <string name="request_green_certificate_privacy_section_2" translatable="false">Verileriniz, test sertifikanızı oluşturmak üzere bir kez şifrelenir ve RKI’ye aktarılır. RKI, bu verilerin geçerliliğini onaylamak için onları elektronik olarak imzalar. Veriler RKI’de saklanmaz.</string> + <!-- XTXT: Request GC extra bullet point PCR test for privacy card --> + <string name="request_green_certificate_privacy_pcr_extra_section" translatable="false">Hiç kimsenin QR kodunuz üzerinden test sonucunuza erişememesi için test sonucunuz, doğum tarihinizle korunur. Doğum tarihiniz şifrelenir ve test sonucunu çağırmak üzere ilgili laboratuvara gönderilir.</string> + <!-- XTXT: Request GC bullet point 3 for privacy card --> + <string name="request_green_certificate_privacy_section_3" translatable="false">COVID-19 test sertifikası, yaptırdığınız Korona testinize ilişkin verileri içerir. Yasal açıdan zorunlu durumlarda ilgili test sonucunu kanıtlamak için, Uygulamadaki QR kodu göstermeniz yeterli olacaktır. Söz konusu verilerin okunmasını istemiyorsanız, test sertifikasını hiç kimseye göstermeyin.</string> + <!-- XTXT: Request GC bullet point 4 for privacy card --> + <string name="request_green_certificate_privacy_section_4" translatable="false">Eğer Uygulamada test sertifikasına ilişkin QR kodu gösterirseniz ve bu bir kontrol uygulamasıyla taranırsa, diğer kişiler sizin test sertifikanızı öğrenebilir. Kontrol işlemi sırasında adınız ve doğum tarihiniz de resmi kontrol uygulamasında görüntülenecektir.</string> + <!-- XTXT: Request GC bullet point 5 for privacy card --> + <string name="request_green_certificate_privacy_section_5" translatable="false">Test sertifikasını istediğiniz zaman Uygulamadan kaldırma seçeneğiniz vardır. Bunu yapıncaya kadar test sertifikaları akıllı telefonunuzda kayıtlı kalacaktır.</string> + <!-- XTXT: Request GC legal information section for privacy card --> + <string name="request_green_certificate_privacy_legal_information" translatable="false">Veri işleme ile ilgili ayrıntılı bilgileri Veri Gizliliği Beyanında bulabilirsiniz</string> </resources> diff --git a/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml b/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml index 9f9425aac3192ae7ff4f348955d7d961099b5de0..e852e422e654fc6fb90925755bfd806c86e98326 100644 --- a/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml +++ b/Corona-Warn-App/src/main/res/values/green_certificate_strings.xml @@ -1,4 +1,29 @@ <?xml version="1.0" encoding="utf-8"?> -<resources xmlns:tools="http://schemas.android.com/tools" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2" tools:ignore="MissingTranslation"> - +<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> + <!-- XTXT: Request green certificate title --> + <string name="request_green_certificate_title">COVID-19-Testzertifikat</string> + <!-- XTXT: Request green certificate subtitle --> + <string name="request_green_certificate_subtitle">Sie können über die App ein offizielles digitales Testzertifikat anfordern, das anschließend in der App hinzugefügt wird.</string> + <!-- XTXT: Request green certificate body section 1 --> + <string name="request_green_certificate_body_1">Das Testzertifikat wird nur bei einem negativen Testergebnis ausgestellt.</string> + <!-- XTXT: Request green certificate body section 2 --> + <string name="request_green_certificate_body_2">Das Testzertifikat gilt innerhalb der EU als gültiger Nachweis eines negativen Testergebnisses (z.B. für Reisen).</string> + <!-- XTXT: Request green certificate body section 3 --> + <string name="request_green_certificate_body_3">Das Testzertifikat enthält Daten, die der Prüf-App die Validierung Ihres Zertifikats erlauben.</string> + <!-- XBUT: Request green certificate agree button --> + <string name="request_green_certificate_agree_button">Testzertifikat Anfordern</string> + <!-- XBUT: Request green certificate disagree button --> + <string name="request_green_certificate_disagree_button">Nein Danke</string> + <!-- XTXT: Request green certificate birth date description --> + <string name="request_green_certificate_birthdate_description">Zur Sicherheit wird Ihr Testergebnis mit Ihrem Geburtsdatum geschützt. Das Testergebnis kann nur bei korrekt angegebenem Geburtstdatum zugestellt werden.</string> + <!-- XTXT: Request green certificate birth date hint --> + <string name="request_green_certificate_birthdate_hint">Geburtsdatum</string> + <!-- XTXT: Request green certificate exit dialog title --> + <string name="request_gc_dialog_title">Registrierung abbrechen</string> + <!-- XTXT: Request green certificate exit dialog message --> + <string name="request_gc_dialog_message">Wenn Sie die Test-Registrierung abbrechen, können Sie Ihr Testergebnis nicht in der App erhalten.</string> + <!-- XBUT: Request green certificate exit dialog negative button --> + <string name="request_gc_dialog_positive_button">OK</string> + <!-- XBUT: Request green certificate exit dialog negative button --> + <string name="request_gc_dialog_negative_button">Abbrechen</string> </resources> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/values/legal_strings.xml b/Corona-Warn-App/src/main/res/values/legal_strings.xml index d11cb77f78bea52d0463da0d41d81d44ef628d17..81e90222d0ba73000577a969241d55287ff456f8 100644 --- a/Corona-Warn-App/src/main/res/values/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values/legal_strings.xml @@ -179,4 +179,21 @@ <!-- XTXT: First bulletpoint title for privacy card --> <string name="vaccination_privacy_card_fourth_bulletpoint_title_text" translatable="false">"You have the possibility to delete vaccination certificates in the app at any time. Until then, the vaccination certificates will be stored on your smartphone."</string> + <!-- Green Certificate --> + <!-- XTXT: Request GC title for privacy card --> + <string name="request_green_certificate_privacy_title" translatable="false">Data protection and data security</string> + <!-- XTXT: Request GC bullet point 1 for privacy card --> + <string name="request_green_certificate_privacy_section_1" translatable="false">Requesting and using a digital COVID-19 test certificate is voluntary. There are other ways to prove that you have a negative test certificate.</string> + <!-- XTXT: Request GC bullet point 2 for privacy card --> + <string name="request_green_certificate_privacy_section_2" translatable="false">To create your test certificate, data is transmitted once in encrypted form to the RKI. The RKI signs this data electronically to confirm its validity. The RKI will not store the data.</string> + <!-- XTXT: Request GC extra bullet point PCR test for privacy card --> + <string name="request_green_certificate_privacy_pcr_extra_section" translatable="false">To ensure that no one with your QR code can retrieve your test result, it is protected with your date of birth. Your date of birth is transmitted in encrypted form to the laboratory in order to retrieve the test result.</string> + <!-- XTXT: Request GC bullet point 3 for privacy card --> + <string name="request_green_certificate_privacy_section_3" translatable="false">The COVID-19 test certificate contains the data about your coronavirus test. In cases where you are required by law to prove a negative test result, it is sufficient to show the QR code in the app. Do not provide the test certificate to anyone if you do not want the data to be read.</string> + <!-- XTXT: Request GC bullet point 4 for privacy card --> + <string name="request_green_certificate_privacy_section_4" translatable="false">If you present the QR code of the test certificate in the app and it is scanned using the verification app, others will be able to find out your test result. During verification, the official verification app will also display your name and date of birth.</string> + <!-- XTXT: Request GC bullet point 5 for privacy card --> + <string name="request_green_certificate_privacy_section_5" translatable="false">You have the possibility to delete test certificates in the app at any time. Until then, the test certificates will be stored on your smartphone.</string> + <!-- XTXT: Request GC legal information section for privacy card --> + <string name="request_green_certificate_privacy_legal_information" translatable="false">Detailed information about this data processing is available in the privacy notice</string> </resources> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt index 46c6931ed6b508af6ac73b82d579a3a623d1dd97..92d0fba01298f5a61c6f67b13c6c31635830c19e 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/ui/submission/qrcode/scan/SubmissionQRCodeScanViewModelTest.kt @@ -56,13 +56,13 @@ class SubmissionQRCodeScanViewModelTest : BaseTest() { } private fun createViewModel() = SubmissionQRCodeScanViewModel( - TestDispatcherProvider(), - cameraSettings, - qrCodeRegistrationStateProcessor, isConsentGiven = true, - submissionRepository, - qrCodeValidator, - analyticsKeySubmissionCollector + dispatcherProvider = TestDispatcherProvider(), + cameraSettings = cameraSettings, + qrCodeRegistrationStateProcessor = qrCodeRegistrationStateProcessor, + submissionRepository = submissionRepository, + qrCodeValidator = qrCodeValidator, + analyticsKeySubmissionCollector = analyticsKeySubmissionCollector ) @Test