From 60488d70741a22461d82f4045c948c9c39fec241 Mon Sep 17 00:00:00 2001 From: Alex Paulescu <alex.paulescu@gmail.com> Date: Wed, 31 Mar 2021 17:01:11 +0300 Subject: [PATCH] Trace Location QR Info screen (EXPOSUREAPP-5411) (#2708) * Added drawables. * Updated Strings. * Added QR info screen. * Accounted for all navigation possibilities. * Ktlin fix. * Fixed instrumentation test. * Update legal strings * BE to AE English fix * Addressed PR comments. * Now using MoreInformationView for DataPrivacy. * Removed duplicate code. Co-authored-by: Ralf Gehrer <ralfgehrer@users.noreply.github.com> Co-authored-by: ralfgehrer <mail@ralfgehrer.com> Co-authored-by: harambasicluka <64483219+harambasicluka@users.noreply.github.com> --- .../ui/main/home/HomeFragmentTest.kt | 5 +- .../EventRegistrationUIModule.kt | 5 + .../TraceLocationPreferences.kt | 26 +++ .../TraceLocationOrganizerSettings.kt | 15 ++ .../qrinfo/TraceLocationQRInfoFragment.kt | 51 +++++ .../TraceLocationQRInfoFragmentModule.kt | 18 ++ .../TraceLocationQRInfoNavigationEvents.kt | 6 + .../qrinfo/TraceLocationQRInfoViewModel.kt | 22 +++ .../ui/main/home/HomeFragment.kt | 14 ++ .../ui/main/home/HomeFragmentViewModel.kt | 9 +- .../home/items/CreateTraceLocationCard.kt | 7 +- .../de/rki/coronawarnapp/util/DataReset.kt | 3 + .../ic_qr_code_illustration.xml | 46 +++++ .../main/res/drawable-night/ic_qr_time.xml | 15 ++ .../drawable-night/ic_qr_tracing_static.xml | 25 +++ .../res/drawable/ic_qr_code_illustration.xml | 46 +++++ .../src/main/res/drawable/ic_qr_info.xml | 51 +++++ .../src/main/res/drawable/ic_qr_time.xml | 15 ++ .../res/drawable/ic_qr_tracing_static.xml | 25 +++ ...cation_organizer_qr_code_info_fragment.xml | 184 ++++++++++++++++++ .../layout/trace_location_privacy_card.xml | 132 +++++++++++++ .../navigation/contact_diary_nav_graph.xml | 5 +- .../src/main/res/navigation/nav_graph.xml | 19 +- .../trace_location_organizer_nav_graph.xml | 17 +- .../values-de/event_registration_strings.xml | 18 ++ .../src/main/res/values-de/legal_strings.xml | 18 ++ .../src/main/res/values-tr/legal_strings.xml | 18 ++ .../res/values/event_registration_strings.xml | 19 ++ .../src/main/res/values/legal_strings.xml | 18 ++ .../main/home/HomeFragmentViewModelTest.kt | 5 +- .../rki/coronawarnapp/util/DataResetTest.kt | 4 + 31 files changed, 843 insertions(+), 18 deletions(-) create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/TraceLocationPreferences.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/TraceLocationOrganizerSettings.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragment.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragmentModule.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoNavigationEvents.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoViewModel.kt create mode 100644 Corona-Warn-App/src/main/res/drawable-night/ic_qr_code_illustration.xml create mode 100644 Corona-Warn-App/src/main/res/drawable-night/ic_qr_time.xml create mode 100644 Corona-Warn-App/src/main/res/drawable-night/ic_qr_tracing_static.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_qr_code_illustration.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_qr_info.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_qr_time.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_qr_tracing_static.xml create mode 100644 Corona-Warn-App/src/main/res/layout/trace_location_organizer_qr_code_info_fragment.xml create mode 100644 Corona-Warn-App/src/main/res/layout/trace_location_privacy_card.xml diff --git a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt index 76acc846d..873fd9bf5 100644 --- a/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt +++ b/Corona-Warn-App/src/androidTest/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentTest.kt @@ -27,6 +27,7 @@ import de.rki.coronawarnapp.tracing.GeneralTracingStatus import de.rki.coronawarnapp.tracing.states.TracingStateProvider import de.rki.coronawarnapp.tracing.ui.homecards.TracingStateItem import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState +import de.rki.coronawarnapp.ui.eventregistration.organizer.TraceLocationOrganizerSettings import de.rki.coronawarnapp.ui.main.home.items.FAQCard import de.rki.coronawarnapp.ui.main.home.items.HomeItem import de.rki.coronawarnapp.ui.statistics.Statistics @@ -71,6 +72,7 @@ class HomeFragmentTest : BaseUITest() { @MockK lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler @MockK lateinit var appShortcutsHelper: AppShortcutsHelper @MockK lateinit var tracingSettings: TracingSettings + @MockK lateinit var traceLocationOrganizerSettings: TraceLocationOrganizerSettings private lateinit var homeFragmentViewModel: HomeFragmentViewModel @@ -273,7 +275,8 @@ class HomeFragmentTest : BaseUITest() { statisticsProvider = statisticsProvider, deadmanNotificationScheduler = deadmanNotificationScheduler, appShortcutsHelper = appShortcutsHelper, - tracingSettings = tracingSettings + tracingSettings = tracingSettings, + traceLocationOrganizerSettings = traceLocationOrganizerSettings ) ) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/EventRegistrationUIModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/EventRegistrationUIModule.kt index f18c3eb96..09f3e8853 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/EventRegistrationUIModule.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/EventRegistrationUIModule.kt @@ -12,6 +12,8 @@ import de.rki.coronawarnapp.ui.eventregistration.attendee.scan.ScanCheckInQrCode import de.rki.coronawarnapp.ui.eventregistration.organizer.category.TraceLocationCategoryFragment import de.rki.coronawarnapp.ui.eventregistration.organizer.category.TraceLocationCategoryFragmentModule import de.rki.coronawarnapp.ui.eventregistration.organizer.create.TraceLocationCreateFragmentModule +import de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo.TraceLocationQRInfoFragment +import de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo.TraceLocationQRInfoFragmentModule import de.rki.coronawarnapp.ui.eventregistration.organizer.list.TraceLocationsFragment import de.rki.coronawarnapp.ui.eventregistration.organizer.list.TraceLocationsFragmentModule @@ -33,6 +35,9 @@ internal abstract class EventRegistrationUIModule { @ContributesAndroidInjector(modules = [TraceLocationCreateFragmentModule::class]) abstract fun traceLocationCreateFragment(): TraceLocationCreateFragment + @ContributesAndroidInjector(modules = [TraceLocationQRInfoFragmentModule::class]) + abstract fun traceLocationQRInfoFragment(): TraceLocationQRInfoFragment + @ContributesAndroidInjector(modules = [TraceLocationsFragmentModule::class]) abstract fun traceLocationsFragment(): TraceLocationsFragment } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/TraceLocationPreferences.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/TraceLocationPreferences.kt new file mode 100644 index 000000000..1f0b4fca0 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/TraceLocationPreferences.kt @@ -0,0 +1,26 @@ +package de.rki.coronawarnapp.ui.eventregistration + +import android.content.Context +import de.rki.coronawarnapp.util.di.AppContext +import de.rki.coronawarnapp.util.preferences.clearAndNotify +import de.rki.coronawarnapp.util.preferences.createFlowPreference +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class TraceLocationPreferences @Inject constructor( + @AppContext val context: Context +) { + private val prefs by lazy { + context.getSharedPreferences("trace_location_localdata", Context.MODE_PRIVATE) + } + + val qrInfoAcknowledged = prefs.createFlowPreference( + key = "trace_location_qr_info_acknowledged", + defaultValue = false + ) + + fun clear() { + prefs.clearAndNotify() + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/TraceLocationOrganizerSettings.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/TraceLocationOrganizerSettings.kt new file mode 100644 index 000000000..8752beda3 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/TraceLocationOrganizerSettings.kt @@ -0,0 +1,15 @@ +package de.rki.coronawarnapp.ui.eventregistration.organizer + +import de.rki.coronawarnapp.ui.eventregistration.TraceLocationPreferences +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +class TraceLocationOrganizerSettings @Inject constructor(val preferences: TraceLocationPreferences) { + + var qrInfoAcknowledged: Boolean + get() { + return preferences.qrInfoAcknowledged.value + } + set(value) = preferences.qrInfoAcknowledged.update { value } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragment.kt new file mode 100644 index 000000000..a89c82c78 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragment.kt @@ -0,0 +1,51 @@ +package de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo + +import android.os.Bundle +import android.view.View +import androidx.core.net.toUri +import androidx.fragment.app.Fragment +import androidx.navigation.fragment.findNavController +import de.rki.coronawarnapp.R +import de.rki.coronawarnapp.databinding.TraceLocationOrganizerQrCodeInfoFragmentBinding +import de.rki.coronawarnapp.ui.eventregistration.organizer.TraceLocationOrganizerSettings +import de.rki.coronawarnapp.util.di.AutoInject +import de.rki.coronawarnapp.util.ui.doNavigate +import de.rki.coronawarnapp.util.ui.observe2 +import de.rki.coronawarnapp.util.ui.popBackStack +import de.rki.coronawarnapp.util.ui.viewBindingLazy +import de.rki.coronawarnapp.util.viewmodel.CWAViewModelFactoryProvider +import de.rki.coronawarnapp.util.viewmodel.cwaViewModels +import javax.inject.Inject + +class TraceLocationQRInfoFragment : Fragment(R.layout.trace_location_organizer_qr_code_info_fragment), AutoInject { + + private val binding: TraceLocationOrganizerQrCodeInfoFragmentBinding by viewBindingLazy() + + @Inject lateinit var settings: TraceLocationOrganizerSettings + + @Inject lateinit var viewModelFactory: CWAViewModelFactoryProvider.Factory + private val vm: TraceLocationQRInfoViewModel by cwaViewModels { viewModelFactory } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + binding.apply { + toolbar.setNavigationOnClickListener { popBackStack() } + privacyInformation.setOnClickListener { vm.openPrivacyCard() } + traceLocationQrInfoUnderstandButton.setOnClickListener { vm.navigateToMyQRCodes() } + } + + vm.routeToScreen.observe2(this) { + when (it) { + is TraceLocationQRInfoNavigationEvents.NavigateToDataPrivacy -> + findNavController().navigate("coronawarnapp://contactdiary/dataPrivacy".toUri()) + is TraceLocationQRInfoNavigationEvents.NavigateToMyQrCodes -> { + settings.qrInfoAcknowledged = true + doNavigate( + TraceLocationQRInfoFragmentDirections + .actionTraceLocationOrganizerQRInfoFragmentToTraceLocationOrganizerListFragment() + ) + } + } + } + } +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragmentModule.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragmentModule.kt new file mode 100644 index 000000000..830c5f14d --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoFragmentModule.kt @@ -0,0 +1,18 @@ +package de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo + +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 TraceLocationQRInfoFragmentModule { + + @Binds + @IntoMap + @CWAViewModelKey(TraceLocationQRInfoViewModel::class) + abstract fun traceLocationCreateViewModel(factory: TraceLocationQRInfoViewModel.Factory): + CWAViewModelFactory<out CWAViewModel> +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoNavigationEvents.kt new file mode 100644 index 000000000..cb197c473 --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoNavigationEvents.kt @@ -0,0 +1,6 @@ +package de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo + +sealed class TraceLocationQRInfoNavigationEvents { + object NavigateToDataPrivacy : TraceLocationQRInfoNavigationEvents() + object NavigateToMyQrCodes : TraceLocationQRInfoNavigationEvents() +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoViewModel.kt new file mode 100644 index 000000000..5f9da66ec --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/eventregistration/organizer/qrinfo/TraceLocationQRInfoViewModel.kt @@ -0,0 +1,22 @@ +package de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo + +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import de.rki.coronawarnapp.util.ui.SingleLiveEvent +import de.rki.coronawarnapp.util.viewmodel.CWAViewModel +import de.rki.coronawarnapp.util.viewmodel.SimpleCWAViewModelFactory + +class TraceLocationQRInfoViewModel @AssistedInject constructor() : CWAViewModel() { + val routeToScreen: SingleLiveEvent<TraceLocationQRInfoNavigationEvents> = SingleLiveEvent() + + fun openPrivacyCard() { + routeToScreen.postValue(TraceLocationQRInfoNavigationEvents.NavigateToDataPrivacy) + } + + fun navigateToMyQRCodes() { + routeToScreen.postValue(TraceLocationQRInfoNavigationEvents.NavigateToMyQrCodes) + } + + @AssistedFactory + interface Factory : SimpleCWAViewModelFactory<TraceLocationQRInfoViewModel> +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt index 3c6852ad0..a51ff4495 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragment.kt @@ -5,6 +5,8 @@ import android.os.Bundle import android.view.View import android.view.accessibility.AccessibilityEvent import androidx.fragment.app.Fragment +import androidx.navigation.NavGraph +import androidx.navigation.fragment.findNavController import androidx.recyclerview.widget.DefaultItemAnimator import androidx.recyclerview.widget.LinearLayoutManager import de.rki.coronawarnapp.R @@ -78,6 +80,18 @@ class HomeFragment : Fragment(R.layout.home_fragment_layout), AutoInject { ExternalActionHelper.openUrl(this@HomeFragment, getString(R.string.main_about_link)) } + vm.openTraceLocationOrganizerFlow.observe2(this) { + vm.wasQRInfoWasAcknowledged() + val nestedGraph = findNavController().graph.findNode(R.id.trace_location_organizer_nav_graph) as NavGraph + + if (vm.wasQRInfoWasAcknowledged()) { + nestedGraph.startDestination = R.id.traceLocationOrganizerListFragment + } else { + nestedGraph.startDestination = R.id.traceLocationOrganizerQRInfoFragment + } + doNavigate(HomeFragmentDirections.actionMainFragmentToTraceLocationOrganizerNavGraph()) + } + vm.popupEvents.observe2(this) { event -> when (event) { HomeFragmentEvents.ShowErrorResetDialog -> { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt index 382a12eca..c795ab4d5 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/HomeFragmentViewModel.kt @@ -47,9 +47,10 @@ import de.rki.coronawarnapp.tracing.ui.homecards.TracingFailedCard import de.rki.coronawarnapp.tracing.ui.homecards.TracingProgressCard import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState import de.rki.coronawarnapp.tracing.ui.statusbar.toHeaderState +import de.rki.coronawarnapp.ui.eventregistration.organizer.TraceLocationOrganizerSettings import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents.ShowErrorResetDialog -import de.rki.coronawarnapp.ui.main.home.items.CreateTraceLocationCard import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents.ShowTracingExplanation +import de.rki.coronawarnapp.ui.main.home.items.CreateTraceLocationCard import de.rki.coronawarnapp.ui.main.home.items.FAQCard import de.rki.coronawarnapp.ui.main.home.items.HomeItem import de.rki.coronawarnapp.ui.main.home.items.ReenableRiskCard @@ -83,12 +84,14 @@ class HomeFragmentViewModel @AssistedInject constructor( private val deadmanNotificationScheduler: DeadmanNotificationScheduler, private val appShortcutsHelper: AppShortcutsHelper, private val tracingSettings: TracingSettings, + private val traceLocationOrganizerSettings: TraceLocationOrganizerSettings ) : CWAViewModel(dispatcherProvider = dispatcherProvider) { private val tracingStateProvider by lazy { tracingStateProviderFactory.create(isDetailsMode = false) } val routeToScreen = SingleLiveEvent<NavDirections>() val openFAQUrlEvent = SingleLiveEvent<Unit>() + val openTraceLocationOrganizerFlow = SingleLiveEvent<Unit>() val tracingHeaderState: LiveData<TracingHeaderState> = tracingStatus.generalStatus .map { it.toHeaderState() } @@ -240,7 +243,7 @@ class HomeFragmentViewModel @AssistedInject constructor( ) } - add(CreateTraceLocationCard.Item(onClickAction = { /** Todo: Add navigation on click */ })) + add(CreateTraceLocationCard.Item(onClickAction = { openTraceLocationOrganizerFlow.postValue(Unit) })) add(FAQCard.Item(onClickAction = { openFAQUrlEvent.postValue(Unit) })) } @@ -322,6 +325,8 @@ class HomeFragmentViewModel @AssistedInject constructor( cwaSettings.wasTracingExplanationDialogShown = true } + fun wasQRInfoWasAcknowledged() = traceLocationOrganizerSettings.qrInfoAcknowledged + @AssistedFactory interface Factory : SimpleCWAViewModelFactory<HomeFragmentViewModel> } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/CreateTraceLocationCard.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/CreateTraceLocationCard.kt index 63895380e..0ccc11830 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/CreateTraceLocationCard.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/ui/main/home/items/CreateTraceLocationCard.kt @@ -20,10 +20,9 @@ class CreateTraceLocationCard(parent: ViewGroup) : payloads: List<Any> ) -> Unit = { item, payloads -> - itemView.setOnClickListener { - val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item - curItem.onClickAction(item) - } + val curItem = payloads.filterIsInstance<Item>().singleOrNull() ?: item + itemView.setOnClickListener { curItem.onClickAction(item) } + createTraceLocationCardButton.setOnClickListener { curItem.onClickAction(item) } } data class Item(val onClickAction: (Item) -> Unit) : HomeItem, HasPayloadDiffer { diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt index e8c47684c..6550161fb 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DataReset.kt @@ -21,6 +21,7 @@ import de.rki.coronawarnapp.storage.OnboardingSettings import de.rki.coronawarnapp.storage.TracingSettings import de.rki.coronawarnapp.submission.SubmissionRepository import de.rki.coronawarnapp.submission.SubmissionSettings +import de.rki.coronawarnapp.ui.eventregistration.TraceLocationPreferences import de.rki.coronawarnapp.util.di.AppContext import kotlinx.coroutines.sync.Mutex import kotlinx.coroutines.sync.withLock @@ -43,6 +44,7 @@ class DataReset @Inject constructor( private val riskLevelStorage: RiskLevelStorage, private val contactDiaryRepository: ContactDiaryRepository, private var contactDiaryPreferences: ContactDiaryPreferences, + private var traceLocationPreferences: TraceLocationPreferences, private val cwaSettings: CWASettings, private val statisticsProvider: StatisticsProvider, private val surveySettings: SurveySettings, @@ -76,6 +78,7 @@ class DataReset @Inject constructor( downloadDiagnosisKeysSettings.clear() riskLevelStorage.clear() contactDiaryPreferences.clear() + traceLocationPreferences.clear() cwaSettings.clear() surveySettings.clear() analyticsSettings.clear() diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_qr_code_illustration.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_code_illustration.xml new file mode 100644 index 000000000..c51ba93aa --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_code_illustration.xml @@ -0,0 +1,46 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,40C31.0457,40 40,31.0457 40,20C40,8.9543 31.0457,0 20,0C8.9543,0 0,8.9543 0,20C0,31.0457 8.9543,40 20,40Z" + android:fillColor="#434445"/> + <group> + <clip-path + android:pathData="M10,10h20v20h-20z"/> + <path + android:pathData="M10,18.8892H18.8892V10H10V18.8892ZM12.2223,12.2223H16.6669V16.6669H12.2223V12.2223Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M10,29.9986H18.8892V21.1094H10V29.9986ZM12.2223,23.3317H16.6669V27.7763H12.2223V23.3317Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M21.1094,10V18.8892H29.9987V10H21.1094ZM27.7764,16.6669H23.3317V12.2223H27.7764V16.6669Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M29.9996,27.7773H27.7773V29.9997H29.9996V27.7773Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M23.3317,21.1094H21.1094V23.3317H23.3317V21.1094Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M25.5543,23.332H23.332V25.5543H25.5543V23.332Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M23.3317,25.5547H21.1094V27.777H23.3317V25.5547Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M25.5543,27.7773H23.332V29.9997H25.5543V27.7773Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M27.7771,25.5547H25.5547V27.777H27.7771V25.5547Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M27.7771,21.1094H25.5547V23.3317H27.7771V21.1094Z" + android:fillColor="#83D2F2"/> + <path + android:pathData="M29.9996,23.332H27.7773V25.5543H29.9996V23.332Z" + android:fillColor="#83D2F2"/> + </group> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_qr_time.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_time.xml new file mode 100644 index 000000000..86d535a2b --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_time.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,20m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M20,20m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0" + android:fillColor="#434445"/> + <path + android:pathData="M25,20C22.24,20 20,22.24 20,25C20,27.76 22.24,30 25,30C27.76,30 30,27.76 30,25C30,22.24 27.76,20 25,20ZM26.65,27.35L24.5,25.2V22H25.5V24.79L27.35,26.64L26.65,27.35ZM26,11H22.82C22.4,9.84 21.3,9 20,9C18.7,9 17.6,9.84 17.18,11H14C12.9,11 12,11.9 12,13V28C12,29.1 12.9,30 14,30H20.11C19.52,29.43 19.04,28.75 18.69,28H14V13H16V16H24V13H26V18.08C26.71,18.18 27.38,18.39 28,18.68V13C28,11.9 27.1,11 26,11ZM20,13C19.45,13 19,12.55 19,12C19,11.45 19.45,11 20,11C20.55,11 21,11.45 21,12C21,12.55 20.55,13 20,13Z" + android:fillColor="#83D2F2"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable-night/ic_qr_tracing_static.xml b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_tracing_static.xml new file mode 100644 index 000000000..34d509682 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable-night/ic_qr_tracing_static.xml @@ -0,0 +1,25 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,40C31.0457,40 40,31.0457 40,20C40,8.9543 31.0457,0 20,0C8.9543,0 0,8.9543 0,20C0,31.0457 8.9543,40 20,40Z" + android:fillColor="#434445"/> + <path + android:pathData="M11.5137,12.0002L12.5128,12.9993C10.5967,14.9154 9.4116,17.5625 9.4116,20.4864C9.4116,23.3339 10.5388,25.9992 12.5125,27.973L12.5128,27.9733L11.5156,28.9706C9.3435,26.7989 8,23.7986 8,20.4844C8,17.1712 9.3427,14.1717 11.5137,12.0002ZM28.4861,12C30.6572,14.1715 32,17.1712 32,20.4844C32,23.7987 30.6564,26.7991 28.4843,28.9707L27.4869,27.9733C29.4029,26.0572 30.5881,23.4102 30.5881,20.4864C30.5881,17.5625 29.4029,14.9154 27.4868,12.9993L28.4861,12Z" + android:strokeAlpha="0.24" + android:fillColor="#95B9CB" + android:fillType="evenOdd" + android:fillAlpha="0.24"/> + <path + android:pathData="M13.5128,13.9961L14.5103,14.9936C13.1052,16.3988 12.2361,18.3399 12.2361,20.4841C12.2361,22.5723 13.0627,24.5269 14.5101,25.9743L14.5103,25.9746L13.5112,26.9737C11.851,25.3131 10.8242,23.0193 10.8242,20.4857C10.8242,17.9513 11.8517,15.6568 13.5128,13.9961ZM26.4887,13.9962C28.1498,15.6569 29.1772,17.9513 29.1772,20.4857C29.1772,23.0193 28.1504,25.313 26.4903,26.9736L25.4913,25.9746C26.8964,24.5694 27.7655,22.6283 27.7655,20.4841C27.7655,18.3399 26.8964,16.3988 25.4913,14.9936L26.4887,13.9962Z" + android:strokeAlpha="0.6" + android:fillColor="#95B9CB" + android:fillType="evenOdd" + android:fillAlpha="0.6"/> + <path + android:pathData="M13.6484,20.4858C13.6484,16.9771 16.4927,14.1328 20.0014,14.1328C23.51,14.1328 26.3543,16.9771 26.3543,20.4858C26.3543,23.9944 23.51,26.8387 20.0014,26.8387C18.2941,26.8387 16.6922,26.1611 15.509,24.9778C14.3258,23.7945 13.6484,22.1929 13.6484,20.4858ZM24.5495,20.4858C24.5495,17.9739 22.5133,15.9377 20.0014,15.9377C17.4895,15.9377 15.4533,17.9739 15.4533,20.4858C15.4533,21.7089 15.9375,22.8538 16.7852,23.7016C17.6331,24.5495 18.7781,25.0339 20.0014,25.0339C22.5133,25.0339 24.5495,22.9976 24.5495,20.4858Z" + android:fillColor="#83D2F2" + android:fillType="evenOdd"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_qr_code_illustration.xml b/Corona-Warn-App/src/main/res/drawable/ic_qr_code_illustration.xml new file mode 100644 index 000000000..f6de18a88 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_qr_code_illustration.xml @@ -0,0 +1,46 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,40C31.0457,40 40,31.0457 40,20C40,8.9543 31.0457,0 20,0C8.9543,0 0,8.9543 0,20C0,31.0457 8.9543,40 20,40Z" + android:fillColor="#F5F5F5"/> + <group> + <clip-path + android:pathData="M10,10h20v20h-20z"/> + <path + android:pathData="M10,18.8892H18.8892V10H10V18.8892ZM12.2223,12.2223H16.6669V16.6669H12.2223V12.2223Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M10,29.9986H18.8892V21.1094H10V29.9986ZM12.2223,23.3317H16.6669V27.7763H12.2223V23.3317Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M21.1094,10V18.8892H29.9987V10H21.1094ZM27.7764,16.6669H23.3317V12.2223H27.7764V16.6669Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M29.9996,27.7773H27.7773V29.9997H29.9996V27.7773Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M23.3317,21.1094H21.1094V23.3317H23.3317V21.1094Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M25.5543,23.332H23.332V25.5543H25.5543V23.332Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M23.3317,25.5547H21.1094V27.777H23.3317V25.5547Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M25.5543,27.7773H23.332V29.9997H25.5543V27.7773Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M27.7771,25.5547H25.5547V27.777H27.7771V25.5547Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M27.7771,21.1094H25.5547V23.3317H27.7771V21.1094Z" + android:fillColor="#007FAD"/> + <path + android:pathData="M29.9996,23.332H27.7773V25.5543H29.9996V23.332Z" + android:fillColor="#007FAD"/> + </group> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_qr_info.xml b/Corona-Warn-App/src/main/res/drawable/ic_qr_info.xml new file mode 100644 index 000000000..850e248c9 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_qr_info.xml @@ -0,0 +1,51 @@ +<vector android:autoMirrored="true" android:height="167dp" + android:viewportHeight="167" android:viewportWidth="273" + android:width="273dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#E8F5FF" android:fillType="evenOdd" android:pathData="M16.314,33.425C3.812,72.166 51.009,71.69 33.236,101.625C16.031,130.54 41.171,133.895 41.171,133.895L246.894,134.858C246.894,134.858 273.916,91.084 266.877,57.998C261.425,29.831 225.54,11.05 206.917,20.594C158.564,45.224 132.381,13.6 108.26,6.72C61.653,-6.507 27.592,-1.509 16.314,33.425Z"/> + <path android:fillColor="#6A7F90" android:pathData="M240.809,79.73H259.239C261.963,79.73 264.575,80.812 266.501,82.738C268.427,84.664 269.509,87.276 269.509,90V121.85C269.509,122.734 269.157,123.581 268.532,124.206C267.908,124.831 267.06,125.182 266.176,125.182H233.589C232.78,125.182 232.005,124.861 231.433,124.289C230.861,123.718 230.54,122.942 230.54,122.133V90C230.54,87.276 231.622,84.664 233.548,82.738C235.474,80.812 238.086,79.73 240.809,79.73Z"/> + <path android:fillColor="#6A7F90" android:pathData="M239.346,120.297H235.118V149.552H239.346V120.297Z"/> + <path android:fillColor="#6A7F90" android:pathData="M264.352,120.297H260.124V149.552H264.352V120.297Z"/> + <path android:fillColor="#93A3AD" android:pathData="M269.101,116.715H231.21C230.202,116.715 229.385,117.532 229.385,118.54V125.522C229.385,126.53 230.202,127.347 231.21,127.347H269.101C270.109,127.347 270.926,126.53 270.926,125.522V118.54C270.926,117.532 270.109,116.715 269.101,116.715Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M242.566,150.219C242.566,150.219 241.999,159.683 244.051,160.42C246.102,161.157 250.126,158.573 250.126,157.19C250.126,155.807 248.823,149.392 247.598,148.791C246.374,148.19 242.566,150.219 242.566,150.219Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M254.4,146.219C254.4,146.219 250.036,153.462 250.75,156.057C250.854,156.604 251.084,157.118 251.42,157.561C251.757,158.004 252.191,158.363 252.69,158.61C253.188,158.857 253.737,158.985 254.293,158.985C254.849,158.984 255.398,158.855 255.896,158.607C257.993,157.667 259.659,150.673 259.432,148.814C259.206,146.955 254.4,146.219 254.4,146.219Z"/> + <path android:fillColor="#8C8C98" android:pathData="M253.289,144.395C253.799,145.653 256.78,150.221 261.472,148.045C261.527,148.022 261.577,147.988 261.617,147.945C261.658,147.902 261.69,147.851 261.71,147.796L269.282,129.66L269.429,129.4C270.121,128.039 272.694,124.582 268.579,120.899C268.548,120.881 268.523,120.853 268.511,120.819C268.103,120.23 263.615,113.644 262.323,112.352C261.03,111.06 241.773,111.004 239.438,110.992C239.366,110.992 239.295,111.008 239.23,111.04C239.165,111.071 239.108,111.117 239.064,111.174L229.554,123.098C229.282,123.324 226.913,125.467 229.917,129.434C232.92,133.401 239.631,147.875 240.673,150.131C240.715,150.218 240.781,150.291 240.864,150.341C240.946,150.392 241.042,150.417 241.138,150.414C242.861,150.289 249.65,149.541 248.46,146.118C248.041,144.917 242.328,131.803 241.308,129.876C241.197,129.723 241.109,129.555 241.047,129.377C240.957,128.992 240.821,128.64 241.535,127.722C242.442,126.589 247.553,122.247 248.438,121.511C248.522,121.443 248.625,121.404 248.732,121.397H251.713C251.829,121.395 251.942,121.436 252.031,121.511L259.228,127.835C259.303,127.899 259.356,127.985 259.381,128.08C259.405,128.176 259.399,128.276 259.364,128.368L253.289,143.953C253.23,144.095 253.23,144.254 253.289,144.395Z"/> + <path android:fillColor="#CB8E75" android:pathData="M265.236,102.94L262.572,117.108C262.572,117.108 259.376,121.245 262.878,121.268C266.199,121.268 266.018,117.516 266.018,117.516L271.413,102.781"/> + <path android:fillColor="#3E6883" android:pathData="M240.616,111.331C243.937,111.819 252.937,113.417 260.066,112.555C260.656,112.479 261.196,112.184 261.578,111.728C261.96,111.273 262.157,110.69 262.129,110.096C261.948,106.378 261.687,98.931 262.344,98.013C263.228,96.778 264.611,103.125 264.611,103.125L272.001,102.683C272.001,102.683 269.599,94.749 268.159,91.156C267.806,90.271 267.548,89.352 267.388,88.413C266.878,85.545 264.861,79.118 256.858,79.345C256.858,79.345 252.2,86.928 246.238,79.118C246.238,79.118 240.355,76.851 236.365,87.143L233.056,99.294L239.856,102.445C239.856,102.445 240.117,98.92 240.503,98.478C241.081,97.82 240.038,106.525 239.471,109.812C239.444,109.988 239.452,110.167 239.495,110.339C239.539,110.511 239.616,110.672 239.723,110.814C239.829,110.955 239.963,111.074 240.117,111.163C240.27,111.252 240.44,111.309 240.616,111.331Z"/> + <path android:fillColor="#CB8E75" android:pathData="M233.6,99.555C233.6,99.555 232.263,109.631 233.532,110.719C235.289,112.238 245.91,106.446 247.191,105.539C247.278,105.506 247.375,105.506 247.463,105.539C248.086,105.641 251.997,105.947 252.053,103.272C252.053,103.272 252.053,102.955 252.053,102.898C252.053,102.4 251.056,99.657 247.055,102.354L238.384,105.63L239.302,102.23"/> + <path android:fillColor="#CB8E75" android:pathData="M246.182,79.059C246.182,79.059 247.621,83.208 253.345,82.97C254.386,82.955 255.392,82.589 256.199,81.931C257.006,81.272 257.566,80.36 257.788,79.343C257.788,79.343 255.465,79.581 255.34,74.809L248.392,74.582C248.392,74.582 250.353,79.739 246.182,79.059Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M244.936,62.988C245.094,49.908 268.546,56.459 258.061,69.993C256.554,71.999 255.148,75.059 252.031,75.592L251.634,66.604C248.687,64.257 246.024,62.421 244.936,62.988Z"/> + <path android:fillColor="#CB8E75" android:pathData="M257.778,66.466C259.637,65.627 259.818,67.837 258.991,69.288C258.367,70.422 256.667,71.793 256.531,70.116C256.803,69.503 257.087,66.874 257.778,66.466Z"/> + <path android:fillColor="#CB8E75" android:fillType="evenOdd" android:pathData="M251.815,81.203C251.427,81.246 251.034,81.207 250.662,81.087C250.291,80.968 249.948,80.771 249.658,80.51C249.368,80.249 249.137,79.929 248.979,79.572C248.821,79.215 248.741,78.828 248.743,78.438L248.959,70.073C248.976,69.359 249.276,68.682 249.793,68.189C250.309,67.696 250.999,67.428 251.713,67.443C252.107,67.399 252.505,67.44 252.882,67.563C253.259,67.687 253.604,67.89 253.895,68.159C254.187,68.427 254.417,68.756 254.57,69.121C254.724,69.486 254.797,69.881 254.785,70.277L255.771,78.336C255.771,79.82 253.3,81.305 251.815,81.26"/> + <path android:fillColor="#CB8E75" android:pathData="M244.923,62.977C245.717,57.899 252.586,58.794 256.655,62.229C256.927,63.553 257.306,64.853 257.788,66.116C257.397,68.241 256.855,70.336 256.167,72.384C255.034,74.005 251.18,76.918 248.788,76.533C244.708,74.594 244.277,66.003 244.923,62.977Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M245.23,61.039V61.141C248.392,58.443 251.011,59.248 253.64,60.11C253.561,60.11 253.516,60.189 253.55,60.257C253.874,60.318 254.182,60.443 254.458,60.623C254.734,60.804 254.971,61.038 255.157,61.31C255.342,61.583 255.472,61.89 255.538,62.213C255.605,62.536 255.607,62.869 255.544,63.193C255.942,63.885 256.198,64.649 256.297,65.441C256.396,66.233 256.337,67.037 256.123,67.806C256.123,67.976 256.055,68.134 256.032,68.293C255.941,68.633 255.839,69.019 255.737,69.426C255.572,69.941 255.286,70.41 254.904,70.792C254.521,71.174 254.053,71.46 253.538,71.626C253.258,71.776 252.931,71.818 252.621,71.743C252.312,71.667 252.041,71.48 251.861,71.217C251.271,70.39 248.585,70.719 247.735,70.571C246.239,70.401 245.967,73.008 245.128,70.469C245.23,71.195 246.647,76.771 248.732,77.077C250.569,77.349 252.529,76.171 254.048,74.811C254.887,74.076 255.647,73.255 256.315,72.362C256.463,72.113 257.211,71.319 256.803,70.855C256.395,70.39 256.803,69.778 256.803,69.223C257.018,66.581 257.313,66.956 258.616,65.459C259.047,66.321 259.41,66.287 259.602,67.386C260.006,66.217 260.287,65.009 260.441,63.782C260.951,54.284 247.214,52.515 245.23,61.039ZM251.181,72.657C250.716,74.266 247.78,74.346 247.452,72.657C247.372,72.305 247.18,71.523 247.769,71.523L250.807,71.66C251.339,71.671 251.328,72.305 251.181,72.657Z"/> + <path android:fillColor="#6A7F90" android:pathData="M23.663,158.173L25.762,157.973L22.202,120.658L20.103,120.859L23.663,158.173Z"/> + <path android:fillColor="#6A7F90" android:pathData="M57.916,157.536L60.015,157.336L56.455,120.022L54.356,120.222L57.916,157.536Z"/> + <path android:fillColor="#6A7F90" android:pathData="M0,153.953L1.813,154.242L14.628,73.967L12.815,73.677L0,153.953Z"/> + <path android:fillColor="#E1E1E1" android:pathData="M12.54,120.497L3.744,45.836H52.948L63.251,120.225L12.54,120.497Z"/> + <path android:fillColor="#3E6883" android:pathData="M14.182,60.876L13.196,54.449H43.426L44.468,60.853L14.182,60.876Z"/> + <path android:fillColor="#3E6883" android:pathData="M15.532,70.829L14.568,64.402H38.054L38.87,70.806L15.532,70.829Z"/> + <path android:fillColor="#3E6883" android:pathData="M16.914,80.907L15.996,74.469H44.775L45.795,80.884L16.914,80.907Z"/> + <path android:fillColor="#3E6883" android:pathData="M18.071,90.981L17.232,84.543H31.378L32.375,90.958L18.071,90.981Z"/> + <path android:fillColor="#6A7F90" android:pathData="M64.893,120.885L64.84,118.777L10.813,120.135L10.866,122.243L64.893,120.885Z"/> + <path android:fillColor="#6A7F90" android:pathData="M170.374,79.344H188.804C191.528,79.344 194.14,80.426 196.066,82.352C197.992,84.277 199.074,86.889 199.074,89.613V121.463C199.074,122.347 198.722,123.195 198.098,123.82C197.473,124.445 196.625,124.796 195.741,124.796H163.143C162.334,124.796 161.559,124.474 160.987,123.903C160.415,123.331 160.094,122.555 160.094,121.747V89.624C160.092,88.274 160.357,86.936 160.873,85.688C161.389,84.44 162.147,83.307 163.102,82.352C164.056,81.397 165.19,80.639 166.438,80.123C167.686,79.607 169.024,79.342 170.374,79.344Z"/> + <path android:fillColor="#6A7F90" android:pathData="M168.902,119.918H164.674V149.173H168.902V119.918Z"/> + <path android:fillColor="#6A7F90" android:pathData="M193.906,119.918H189.678V149.173H193.906V119.918Z"/> + <path android:fillColor="#93A3AD" android:pathData="M198.666,116.348H160.774C159.766,116.348 158.949,117.165 158.949,118.173V125.155C158.949,126.163 159.766,126.98 160.774,126.98H198.666C199.674,126.98 200.491,126.163 200.491,125.155V118.173C200.491,117.165 199.674,116.348 198.666,116.348Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M189.746,56.365C189.795,55.919 189.756,55.467 189.63,55.035C189.505,54.604 189.296,54.202 189.015,53.851C188.734,53.501 188.386,53.209 187.993,52.993C187.599,52.777 187.166,52.64 186.72,52.591C186.273,52.542 185.821,52.581 185.39,52.707C184.959,52.832 184.556,53.041 184.206,53.322C183.855,53.603 183.564,53.951 183.347,54.344C183.131,54.738 182.994,55.171 182.945,55.617C182.846,56.519 183.109,57.423 183.677,58.131C184.244,58.839 185.07,59.292 185.972,59.392C186.874,59.491 187.778,59.228 188.486,58.66C189.194,58.093 189.647,57.267 189.746,56.365Z"/> + <path android:fillColor="#F6B893" android:pathData="M185.893,70.066L186.154,77.366H179.421L180.418,70.066H185.893Z"/> + <path android:fillColor="#F6B893" android:pathData="M177.108,64.956C177.108,76.189 188.443,74.76 188.704,63.482C188.704,52.239 177.414,53.667 177.108,64.956Z"/> + <path android:fillColor="#DDA7A2" android:pathData="M193.827,107.789C195.652,126.231 185.19,121.731 179.33,123.431C178.48,135.559 176.803,138.313 175.986,150.509L172.087,150.634L169.82,121.651L169.741,120.665L168.823,121.085C168.472,121.164 167.928,121.64 168.064,122.909C167.508,134.697 165.128,138.653 164.572,150.43L159.959,150.317C159.959,150.317 158.882,124.78 158.894,124.757C157.16,111.688 165.083,113.422 174.91,108.344L193.827,107.789Z"/> + <path android:fillColor="#F6B893" android:pathData="M169.661,108.64C171.928,118.127 158.565,118.841 167.882,106.656L169.661,108.64Z"/> + <path android:fillColor="#B1DAEF" android:pathData="M199.029,87.841C197.703,83.046 194.416,74.772 186.436,74.376C186.085,74.376 184.169,76.189 180.021,74.273C171.27,76.45 169.604,87.002 168.21,93.384C167.383,97.226 167.077,102.825 166.578,106.498C166.51,106.974 166.079,108.923 167.235,109.343C168.584,109.808 169.287,110.227 169.978,109.071C171.542,106.441 173.379,95.934 174.603,90.335C174.852,89.122 175.43,87.002 175.43,87.558C175.43,88.113 173.957,107.348 174.875,108.935C176.008,110.93 191.117,110.216 193.758,108.379C194.132,108.119 193.94,104.571 193.452,100.286C197.748,104.276 200.593,105.818 202.633,102.553C203.71,100.876 200.423,92.828 199.029,87.841ZM192.829,95.469C192.682,94.483 192.523,93.497 192.364,92.556C191.911,89.8 191.634,87.017 191.537,84.225C191.537,84.225 192.523,89.258 193.203,91.445C194.336,95.05 194.869,96.444 194.869,96.444C194.172,96.156 193.491,95.831 192.829,95.469Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M164.685,150.296C164.583,151.033 165.297,156.304 164.527,156.78C164.343,156.985 164.108,157.137 163.847,157.222H151.379C149.168,154.796 160.254,154.116 160.072,150.16L164.685,150.296Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M181.801,85.961H177.959C177.844,85.959 177.73,85.981 177.625,86.026C177.519,86.072 177.425,86.139 177.348,86.224C177.27,86.308 177.212,86.409 177.177,86.518C177.141,86.627 177.13,86.743 177.143,86.856L177.948,96.038C177.97,96.282 178.082,96.51 178.262,96.677C178.441,96.845 178.677,96.94 178.922,96.944H182.708C182.824,96.947 182.94,96.924 183.046,96.878C183.153,96.832 183.249,96.764 183.327,96.678C183.406,96.593 183.465,96.491 183.501,96.381C183.537,96.27 183.549,96.153 183.536,96.038L182.731,86.856C182.706,86.614 182.593,86.389 182.413,86.224C182.234,86.059 182,85.965 181.756,85.961"/> + <path android:fillColor="#F6B893" android:pathData="M187.32,95.21L186.651,96.457C181.63,96.933 175.623,90.563 182.333,90.653C182.722,90.667 183.106,90.752 183.466,90.903C185.041,91.745 186.519,92.756 187.875,93.918"/> + <path android:fillColor="#4A4A4A" android:pathData="M188.408,58.393C185.076,52.85 177.334,55.299 177.334,62.235C181.222,61.68 183.489,61.102 185.665,59.458C185.79,59.368 185.744,59.243 185.937,59.458C187.705,61.453 188.442,65.296 188.442,65.296C189.575,64.162 189.292,59.742 188.442,58.393"/> + <path android:fillColor="#4A4A4A" android:pathData="M175.975,149.988C175.873,150.725 177.211,156.007 176.44,156.483C176.26,156.694 176.024,156.851 175.76,156.936H163.292C161.093,154.511 172.167,153.831 171.986,149.875L175.975,149.988Z"/> + <path android:fillColor="#F6B893" android:pathData="M115.128,89.816C115.128,89.816 107.976,95.087 111.081,96.028C114.856,97.161 117.406,95.937 119.412,92.174L115.128,89.816Z"/> + <path android:fillColor="#8C8C98" android:pathData="M84.593,121.641C84.944,127.308 87.415,159.193 87.415,159.193L93.479,158.921C93.989,147.779 96.256,115.985 99.146,104.979C99.725,109.195 101.198,154.647 101.413,158.524H106.695L114.21,91.559L114.074,90.278L86.44,89.145C86.44,89.145 84.842,115.611 84.581,120.258C84.557,120.719 84.561,121.181 84.593,121.641Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M107.114,162.412C107.115,161.074 107.001,159.74 106.774,158.422L101.47,158.524C101.39,162.502 97.015,161.811 94.261,163.477C94.103,161.845 93.842,160.225 93.479,158.626L87.392,158.887C87.46,159.295 87.44,159.712 87.335,160.112C87.229,160.512 87.04,160.885 86.78,161.206C86.519,161.528 86.194,161.79 85.825,161.976C85.455,162.163 85.051,162.269 84.638,162.287C84.443,162.322 84.25,162.367 84.06,162.423C71.932,165.971 90.124,167.331 93.286,166.73C93.989,166.617 94.238,166.118 94.317,165.483C96.471,166.424 104.791,166.617 106.446,166.277C107.76,166.005 107.171,163.942 107.114,162.412Z"/> + <path android:fillColor="#F6B893" android:pathData="M98.443,25.808C98.431,25.54 98.358,25.277 98.231,25.04C98.103,24.804 97.923,24.599 97.706,24.441C97.488,24.283 97.237,24.176 96.973,24.128C96.708,24.081 96.436,24.093 96.176,24.165C95.338,24.426 94.941,25.219 94.125,27.078C92.459,31.419 92.844,35.352 97.593,38.129C98.647,38.786 97.457,43.286 96.925,43.626C96.392,43.966 90.056,48.251 87.63,49.895C87.354,50.078 87.033,50.183 86.702,50.2C86.371,50.215 86.041,50.141 85.749,49.985L79.537,46.585C79.429,46.522 79.327,46.45 79.231,46.369L59.498,29.526L59.26,29.277L58.489,28.336C58.393,28.223 58.313,28.097 58.251,27.962C57.117,25.502 55.667,14.496 51.45,21.977L51.359,22.147C49.376,26.556 52.935,29.129 55.304,32.144C55.386,32.247 55.477,32.342 55.576,32.428L76.59,49.566C76.768,49.712 76.972,49.824 77.191,49.895L82.643,51.629C82.753,51.662 82.86,51.708 82.96,51.765L88.628,54.87C88.899,55.023 89.206,55.104 89.517,55.104C89.829,55.104 90.136,55.023 90.407,54.87C93.944,52.807 106.888,45.168 106.468,44.306C105.426,42.278 105.822,36.848 106.672,34.989C107.07,34.262 107.328,33.466 107.432,32.643C107.545,32.008 107.545,32.201 106.99,32.757C106.82,32.893 106.344,32.926 106.117,31.952C105.89,30.977 103.283,29.742 101.798,28.551C101.614,28.407 101.402,28.303 101.175,28.245L99.747,27.803C99.395,27.691 99.085,27.476 98.859,27.184C98.632,26.893 98.499,26.54 98.477,26.171L98.443,25.808Z"/> + <path android:fillColor="#C66A61" android:pathData="M96.018,43.636C99.056,44.021 108.838,43.398 112.669,45.688C114.873,47.202 116.712,49.188 118.053,51.502C118.053,51.502 124.763,67.291 125.046,69.513C126.701,74.546 120.32,89.133 119.436,92.182L115.128,89.825C116.477,82.31 119.141,77.572 118.529,71.689C118.223,68.844 116.704,65.852 114.732,61.953C113.666,63.936 113.984,89.847 114.346,91.117L107.036,92.137C103.78,92.585 100.473,92.505 97.242,91.899C93.026,91.094 86.021,91.479 86.339,89.553C87.2,84.35 89.637,66.464 89.172,58.654C89.126,57.679 88.791,56.74 88.209,55.957C87.495,55.027 86.531,54.506 84.536,53.905C81.339,52.941 78.265,51.606 75.378,49.927C72.114,47.773 64.633,42.242 62.003,38.841C60.099,36.699 58.376,35.441 58.399,35.067C58.569,33.65 61.799,30.295 62.082,30.851C64.508,33.299 77.679,42.083 83.936,43.319C87.279,44.044 92.607,43.715 96.018,43.636Z"/> + <path android:fillColor="#4A4A4A" android:pathData="M106.129,19.267C109.938,20.968 113.191,26.986 110.822,30.92C108.204,35.272 105.71,36.473 103.035,35.34C101.765,34.649 100.711,33.606 101.097,32.846C102.638,29.843 100.485,27.179 99.578,29.446C99.578,29.525 99.136,28.834 99.079,28.755C97.696,25.978 93.117,24.561 95.452,22.736C96.699,21.603 97.266,20.061 98.852,19.392C101.074,18.52 104.282,18.202 106.129,19.267Z"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_qr_time.xml b/Corona-Warn-App/src/main/res/drawable/ic_qr_time.xml new file mode 100644 index 000000000..2dda5a112 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_qr_time.xml @@ -0,0 +1,15 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,20m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M20,20m-20,0a20,20 0,1 1,40 0a20,20 0,1 1,-40 0" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M25,20C22.24,20 20,22.24 20,25C20,27.76 22.24,30 25,30C27.76,30 30,27.76 30,25C30,22.24 27.76,20 25,20ZM26.65,27.35L24.5,25.2V22H25.5V24.79L27.35,26.64L26.65,27.35ZM26,11H22.82C22.4,9.84 21.3,9 20,9C18.7,9 17.6,9.84 17.18,11H14C12.9,11 12,11.9 12,13V28C12,29.1 12.9,30 14,30H20.11C19.52,29.43 19.04,28.75 18.69,28H14V13H16V16H24V13H26V18.08C26.71,18.18 27.38,18.39 28,18.68V13C28,11.9 27.1,11 26,11ZM20,13C19.45,13 19,12.55 19,12C19,11.45 19.45,11 20,11C20.55,11 21,11.45 21,12C21,12.55 20.55,13 20,13Z" + android:fillColor="#007FAD"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_qr_tracing_static.xml b/Corona-Warn-App/src/main/res/drawable/ic_qr_tracing_static.xml new file mode 100644 index 000000000..cbf5f9acc --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_qr_tracing_static.xml @@ -0,0 +1,25 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="40dp" + android:height="40dp" + android:viewportWidth="40" + android:viewportHeight="40"> + <path + android:pathData="M20,40C31.0457,40 40,31.0457 40,20C40,8.9543 31.0457,0 20,0C8.9543,0 0,8.9543 0,20C0,31.0457 8.9543,40 20,40Z" + android:fillColor="#F5F5F5"/> + <path + android:pathData="M11.5137,12.0002L12.5128,12.9993C10.5967,14.9154 9.4116,17.5625 9.4116,20.4864C9.4116,23.3339 10.5388,25.9992 12.5125,27.973L12.5128,27.9733L11.5156,28.9706C9.3435,26.7989 8,23.7986 8,20.4844C8,17.1712 9.3427,14.1717 11.5137,12.0002ZM28.4861,12C30.6572,14.1715 32,17.1712 32,20.4844C32,23.7987 30.6564,26.7991 28.4843,28.9707L27.4869,27.9733C29.4029,26.0572 30.5881,23.4102 30.5881,20.4864C30.5881,17.5625 29.4029,14.9154 27.4868,12.9993L28.4861,12Z" + android:strokeAlpha="0.24" + android:fillColor="#95B9CB" + android:fillType="evenOdd" + android:fillAlpha="0.24"/> + <path + android:pathData="M13.5128,13.9961L14.5103,14.9936C13.1052,16.3988 12.2361,18.3399 12.2361,20.4841C12.2361,22.5723 13.0627,24.5269 14.5101,25.9743L14.5103,25.9746L13.5112,26.9737C11.851,25.3131 10.8242,23.0193 10.8242,20.4857C10.8242,17.9513 11.8517,15.6568 13.5128,13.9961ZM26.4887,13.9962C28.1498,15.6569 29.1772,17.9513 29.1772,20.4857C29.1772,23.0193 28.1504,25.313 26.4903,26.9736L25.4913,25.9746C26.8964,24.5694 27.7655,22.6283 27.7655,20.4841C27.7655,18.3399 26.8964,16.3988 25.4913,14.9936L26.4887,13.9962Z" + android:strokeAlpha="0.6" + android:fillColor="#95B9CB" + android:fillType="evenOdd" + android:fillAlpha="0.6"/> + <path + android:pathData="M13.6484,20.4858C13.6484,16.9771 16.4927,14.1328 20.0014,14.1328C23.51,14.1328 26.3543,16.9771 26.3543,20.4858C26.3543,23.9944 23.51,26.8387 20.0014,26.8387C18.2941,26.8387 16.6922,26.1611 15.509,24.9778C14.3258,23.7945 13.6484,22.1929 13.6484,20.4858ZM24.5495,20.4858C24.5495,17.9739 22.5133,15.9377 20.0014,15.9377C17.4895,15.9377 15.4533,17.9739 15.4533,20.4858C15.4533,21.7089 15.9375,22.8538 16.7852,23.7016C17.6331,24.5495 18.7781,25.0339 20.0014,25.0339C22.5133,25.0339 24.5495,22.9976 24.5495,20.4858Z" + android:fillColor="#007FAD" + android:fillType="evenOdd"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/trace_location_organizer_qr_code_info_fragment.xml b/Corona-Warn-App/src/main/res/layout/trace_location_organizer_qr_code_info_fragment.xml new file mode 100644 index 000000000..8cafcb270 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/trace_location_organizer_qr_code_info_fragment.xml @@ -0,0 +1,184 @@ +<?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:contentDescription="@string/tracelocation_organizer_category_title" + tools:context=".ui.eventregistration.organizer.qrinfo.TraceLocationQRInfoFragment"> + + <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/tracelocation_organizer_category_title" /> + + <ScrollView + android:id="@+id/scrollview" + android:layout_width="match_parent" + android:layout_height="0dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/toolbar" + app:layout_constraintBottom_toTopOf="@id/trace_location_qr_info_understand_button"> + + + <androidx.constraintlayout.widget.ConstraintLayout + android:layout_width="match_parent" + android:layout_height="wrap_content" + app:layout_constraintTop_toTopOf="parent"> + + <ImageView + android:id="@+id/trace_location_qr_info_graphic" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_huge" + android:contentDescription="@string/trace_location_qr_info_content_description" + android:src="@drawable/ic_qr_info" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/trace_location_qr_info_headline" + style="@style/headline5" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_huge" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/trace_location_qr_info_headline_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_info_graphic" /> + + <TextView + android:id="@+id/trace_location_qr_info_subtitle" + style="@style/subtitleMedium" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/trace_location_qr_info_subtitle_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_info_headline" /> + + <ImageView + android:id="@+id/trace_location_tracing_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_large" + android:importantForAccessibility="no" + android:src="@drawable/ic_qr_tracing_static" + app:layout_constraintStart_toStartOf="@id/trace_location_qr_info_subtitle" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_info_subtitle" /> + + <TextView + android:id="@+id/trace_location_qr_info_tracing" + 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/trace_location_qr_info_tracing_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/trace_location_tracing_icon" + app:layout_constraintTop_toTopOf="@id/trace_location_tracing_icon" /> + + <ImageView + android:id="@+id/trace_location_qr_code_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_medium" + android:importantForAccessibility="no" + android:src="@drawable/ic_qr_code_illustration" + app:layout_constraintStart_toStartOf="@id/trace_location_tracing_icon" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_info_tracing" /> + + <TextView + android:id="@+id/trace_location_qr_code_illustration_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/trace_location_qr_info_qr_code_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@id/trace_location_qr_code_icon" + app:layout_constraintTop_toTopOf="@id/trace_location_qr_code_icon" /> + + <ImageView + android:id="@+id/trace_location_qr_time_sheet_icon" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_medium" + android:importantForAccessibility="no" + android:src="@drawable/ic_qr_time" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_code_illustration_text" + app:layout_constraintStart_toStartOf="@id/trace_location_qr_code_icon" /> + + <TextView + android:id="@+id/trace_location_qr_time_sheet_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/trace_location_qr_info_time_text" + app:layout_constraintTop_toTopOf="@id/trace_location_qr_time_sheet_icon" + app:layout_constraintStart_toEndOf="@id/trace_location_qr_time_sheet_icon" + app:layout_constraintEnd_toEndOf="parent"/> + + <include + android:id="@+id/privacy_card" + layout="@layout/trace_location_privacy_card" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_medium" + android:layout_marginStart="@dimen/spacing_small" + android:layout_marginEnd="@dimen/spacing_small" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/trace_location_qr_time_sheet_text" /> + + <de.rki.coronawarnapp.util.ui.views.MoreInformationView + android:id="@+id/privacy_information" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_large" + android:layout_marginStart="@dimen/spacing_medium" + android:layout_marginEnd="@dimen/spacing_medium" + android:layout_marginBottom="@dimen/spacing_medium" + android:focusable="true" + app:titleText="@string/contact_diary_onboarding_legal_information" + app:layout_constraintTop_toBottomOf="@id/privacy_card" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintBottom_toBottomOf="parent"/> + + </androidx.constraintlayout.widget.ConstraintLayout> + </ScrollView> + + <android.widget.Button + android:id="@+id/trace_location_qr_info_understand_button" + style="@style/buttonPrimary" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_small" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:layout_marginBottom="@dimen/spacing_small" + android:text="@string/acknowledge_button" + app:layout_constraintTop_toBottomOf="@id/scrollview" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/acknowledge_button" /> + +</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/trace_location_privacy_card.xml b/Corona-Warn-App/src/main/res/layout/trace_location_privacy_card.xml new file mode 100644 index 000000000..3d36130cb --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/trace_location_privacy_card.xml @@ -0,0 +1,132 @@ +<?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" + android:id="@+id/trace_location_qr_privacy_card" + style="@style/GreyCard" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + <TextView + android:id="@+id/trace_location_legal_text_card_title" + style="@style/headline5" + 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/trace_location_privacy_card_title_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/trace_location_legal_text_card_subtitle" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/trace_location_privacy_card_subtitle_text" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="@id/trace_location_legal_text_card_title" + app:layout_constraintTop_toBottomOf="@id/trace_location_legal_text_card_title" /> + + <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_title" + app:layout_constraintStart_toStartOf="@id/trace_location_legal_text_card_subtitle" /> + + <TextView + android:id="@+id/first_bulletpoint_title" + style="@style/subtitleBoldSixteen" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/trace_location_privacy_card_first_bulletpoint_title_text" + app:layout_constraintEnd_toEndOf="@id/trace_location_legal_text_card_subtitle" + app:layout_constraintStart_toEndOf="@id/bulletpoint_one" + app:layout_constraintTop_toBottomOf="@id/trace_location_legal_text_card_subtitle" /> + + <TextView + android:id="@+id/first_bulletpoint_subtitle" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/trace_location_privacy_card_fist_bulletpoint_subtitle_text" + app:layout_constraintEnd_toEndOf="@id/first_bulletpoint_title" + app:layout_constraintStart_toStartOf="@id/first_bulletpoint_title" + app:layout_constraintTop_toBottomOf="@id/first_bulletpoint_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_title" + app:layout_constraintStart_toStartOf="@id/bulletpoint_one" /> + + <TextView + android:id="@+id/second_bulletpoint_title" + style="@style/subtitleBoldSixteen" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + android:text="@string/trace_location_privacy_card_second_bulletpoint_title_text" + app:layout_constraintEnd_toEndOf="@id/first_bulletpoint_subtitle" + app:layout_constraintStart_toStartOf="@id/first_bulletpoint_subtitle" + app:layout_constraintTop_toBottomOf="@id/first_bulletpoint_subtitle" /> + + <TextView + android:id="@+id/second_bulletpoint_subtitle" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:text="@string/trace_location_pricacy_card_second_bulletpoint_subtitle_text" + app:layout_constraintEnd_toEndOf="@id/second_bulletpoint_title" + app:layout_constraintStart_toStartOf="@id/second_bulletpoint_title" + app:layout_constraintTop_toBottomOf="@id/second_bulletpoint_title" /> + + <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/trace_location_legal_text_card_subtitle" /> + + <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/trace_location_privacy_card_third_bulletpoint_text" + app:layout_constraintEnd_toEndOf="@id/second_bulletpoint_subtitle" + app:layout_constraintStart_toStartOf="@id/second_bulletpoint_subtitle" + app:layout_constraintTop_toBottomOf="@id/second_bulletpoint_subtitle" /> + + <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/trace_location_legal_text_card_subtitle" /> + + <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_medium" + android:text="@string/trace_location_privacy_card_fourth_bulletpoint_text" + app:layout_constraintEnd_toEndOf="@id/third_bulletpoint_text" + app:layout_constraintStart_toStartOf="@id/third_bulletpoint_text" + app:layout_constraintTop_toBottomOf="@id/third_bulletpoint_text" /> + +</androidx.constraintlayout.widget.ConstraintLayout> diff --git a/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml index 48be50fd3..82c07fce5 100644 --- a/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/contact_diary_nav_graph.xml @@ -100,7 +100,10 @@ android:id="@+id/contactDiaryInformationPrivacyFragment" android:name="de.rki.coronawarnapp.ui.information.InformationPrivacyFragment" android:label="InformationPrivacyFragment" - tools:layout="@layout/fragment_information_privacy" /> + tools:layout="@layout/fragment_information_privacy"> + <deepLink + app:uri="coronawarnapp://contactdiary/dataPrivacy"/> + </fragment> <fragment android:id="@+id/contactDiaryOverviewFragment" android:name="de.rki.coronawarnapp.contactdiary.ui.overview.ContactDiaryOverviewFragment" 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 cc6efcc8e..5389cde77 100644 --- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml @@ -61,6 +61,9 @@ <action android:id="@+id/action_mainFragment_to_statisticsExplanationFragment" app:destination="@id/statisticsExplanationFragment" /> + <action + android:id="@+id/action_mainFragment_to_trace_location_organizer_nav_graph" + app:destination="@id/trace_location_organizer_nav_graph" /> </fragment> <fragment @@ -150,7 +153,7 @@ tools:layout="@layout/fragment_settings_reset"> <action android:id="@+id/action_settingsResetFragment_to_mainFragment" - app:destination="@id/mainFragment" /> + app:destination="@id/trace_location_organizer_nav_graph" /> </fragment> <!-- Information --> @@ -264,7 +267,7 @@ tools:layout="@layout/fragment_submission_no_consent_positive_other_warning"> <action android:id="@+id/action_submissionResultPositiveOtherWarningNoConsentFragment_to_mainFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> <action @@ -368,7 +371,7 @@ tools:layout="@layout/fragment_submission_result_ready"> <action android:id="@+id/action_submissionResultReadyFragment_to_mainFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> <action @@ -392,7 +395,7 @@ app:destination="@id/submissionSymptomCalendarFragment" /> <action android:id="@+id/action_submissionSymptomIntroductionFragment_to_mainFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> </fragment> @@ -411,7 +414,7 @@ app:destination="@id/submissionResultPositiveOtherWarningNoConsentFragment" /> <action android:id="@+id/action_submissionSymptomCalendarFragment_to_mainFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> </fragment> @@ -434,7 +437,7 @@ android:label="SubmissionTestResultConsentFragment"> <action android:id="@+id/action_submissionTestResultConsentGivenFragment_to_homeFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> <action @@ -447,7 +450,7 @@ android:label="SubmissionTestResultNoConsentFragment"> <action android:id="@+id/action_submissionTestResultNoConsentFragment_to_homeFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> <action @@ -474,7 +477,7 @@ tools:layout="@layout/fragment_submission_test_result_available"> <action android:id="@+id/action_submissionTestResultAvailableFragment_to_mainFragment" - app:destination="@id/mainFragment" + app:destination="@id/trace_location_organizer_nav_graph" app:popUpTo="@id/nav_graph" app:popUpToInclusive="true" /> <action diff --git a/Corona-Warn-App/src/main/res/navigation/trace_location_organizer_nav_graph.xml b/Corona-Warn-App/src/main/res/navigation/trace_location_organizer_nav_graph.xml index 426b8588c..469c3064b 100644 --- a/Corona-Warn-App/src/main/res/navigation/trace_location_organizer_nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/trace_location_organizer_nav_graph.xml @@ -2,7 +2,22 @@ <navigation 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:id="@+id/event_organizer_nav_graph"> + android:id="@+id/trace_location_organizer_nav_graph" + app:startDestination="@id/traceLocationOrganizerQRInfoFragment"> + + <fragment + android:id="@+id/traceLocationOrganizerQRInfoFragment" + android:name="de.rki.coronawarnapp.ui.eventregistration.organizer.qrinfo.TraceLocationQRInfoFragment" + android:label="TraceLocationQRInfoFragment" + tools:layout="@layout/trace_location_organizer_qr_code_info_fragment"> + + + <action + android:id="@+id/action_traceLocationOrganizerQRInfoFragment_to_traceLocationOrganizerListFragment" + app:destination="@id/traceLocationOrganizerListFragment" + app:popUpTo="@id/traceLocationOrganizerQRInfoFragment" + app:popUpToInclusive="true" /> + </fragment> <fragment android:id="@+id/traceLocationOrganizerCategoriesFragment" diff --git a/Corona-Warn-App/src/main/res/values-de/event_registration_strings.xml b/Corona-Warn-App/src/main/res/values-de/event_registration_strings.xml index 90fd86914..f73789641 100644 --- a/Corona-Warn-App/src/main/res/values-de/event_registration_strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/event_registration_strings.xml @@ -140,6 +140,24 @@ <string name="create_trace_location_card_subtitle">"Sie planen ein Event oder haben ein Geschäft? Erstellen Sie einen QR-Code, mit dem sich Ihre Gäste bei Ankunft einchecken können."</string> <!-- XTXT: Text for trace location creation card --> <string name="create_trace_location_card_button">"QR-Code erstellen"</string> + <!-- XTXT: Text for content description of tile image --> + <string name="create_trace_location_card_content_description">"Eine Person zeigt auf ein Flipchart."</string> + + <!-- Trace Location QR Code Info Screen--> + <!-- XTXT: Text for content description of info screen image --> + <string name="trace_location_qr_info_content_description">"Eine Person zeigt auf ein Flipchart, zwei Personen sitzen daneben und schauen auf das Flipchart."</string> + <!-- XHED: Headline for trace location creation card --> + <string name="trace_location_qr_info_headline_text">"Mehr Sicherheit für Sie und Ihre Gäste"</string> + <!-- XTXT: Text for subtitle of qr info screen --> + <string name="trace_location_qr_info_subtitle_text">"Erstellen Sie einen QR-Code, den Ihre Gäste bei ihrer Ankunft scannen können. So können sie bei Bedarf andere Gäste warnen oder von ihnen gewarnt werden."</string> + <!-- XTXT: Text for tracing icon of qr info screen --> + <string name="trace_location_qr_info_tracing_text">"Jeder Check-in wird bei der Ermittlung des Risikostatus zusätzlich berücksichtigt. Wird eine eingecheckte Person später positiv getestet, können die Gäste gewarnt werden, wenn sie sich zur gleichen Zeit oder bis zu 30 Minuten nach der positiv getesteten Person im gleichen Raum aufgehalten haben."</string> + <!-- XTXT: Text for qr icon of qr info screen --> + <string name="trace_location_qr_info_qr_code_text">"Stellen Sie den QR-Code Ihren Gästen entweder über Ihr Smartphone oder in ausgedruckter Form zur Verfügung."</string> + <!-- XTXT: Text for time sheet icon of qr info screen --> + <string name="trace_location_qr_info_time_text">"Wenn Sie dauerhaft einen QR-Code verwenden, sollten Sie diesen einmal täglich neu erstellen außerhalb der Öffnungszeiten."</string> + <!-- XTXT: Text for I understand button --> + <string name="acknowledge_button">"Enverstanden"</string> <!-- #################################### Event Organiser Trace Locations List 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 6278c1f56..bb6d8b9c6 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 @@ -110,4 +110,22 @@ <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2" translatable="false">"Sollten Sie dem technischen Support nach der Ãœbersendung Ihre Fehlerbericht-ID mitgeteilt haben, können Sie auch jederzeit die Löschung der weiteren mitgeteilten Informationen, der Fehlerbericht-ID und des Fehlerberichtes verlangen. Andernfalls wird der Fehlerbericht automatisch nach 14 Tagen gelöscht."</string> + <!-- Trace Location QR Info Privacy Strings --> + <!-- XHED: Title for privacy card --> + <string name="trace_location_privacy_card_title_text">"Datenschutz und Datensicherheit"</string> + <!-- XTXT: Subtitle for privacy card --> + <string name="trace_location_privacy_card_subtitle_text">"Wenn Sie auf „Weiter“ tippen, können Sie einen QR-Code für Ihre Gäste erstellen."</string> + <!-- XTXT: First bulletpoint title for privacy card --> + <string name="trace_location_privacy_card_first_bulletpoint_title_text">"Ihre Angaben zum Event oder Ort werden in codierter Form in einem ausdruckbaren QR-Code gespeichert."</string> + <!-- XTXT: First bulletpoint subtitle for privacy card --> + <string name="trace_location_privacy_card_fist_bulletpoint_subtitle_text">"Ihre Gäste können den QR-Code dann mit der App scannen."</string> + <!-- XTXT: Second bulleptoint title for privacy card --> + <string name="trace_location_privacy_card_second_bulletpoint_title_text">"Bitte achten Sie darauf, dass Sie möglichst präzise Angaben zur Bezeichnung, Kategorie und Uhrzeit Ihres Events oder Orts und zur typischen Aufenthaltsdauer machen."</string> + <!-- XTXT: Second vulletpoint subtitle for privacy card --> + <string name="trace_location_pricacy_card_second_bulletpoint_subtitle_text">"Je genauer Ihre Angaben sind, desto zuverlässiger können Ihre Gäste gewarnt werden."</string> + <!-- XTXT: Third bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_third_bulletpoint_text">"Bitte stellen Sie den QR-Code so zur Verfügung, dass alle Ihre Gäste ihn unter Einhaltung der Abstands- und Hygieneregeln (mindestens 1,5 Meter) scannen können."</string> + <!-- XTXT: Fourth bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_fourth_bulletpoint_text">"Wir empfehlen die QR-Codes für Orte in einmal täglich außerhalb der Öffnungszeiten neu zu erstellen, um dauerhaft zuverlässige Warnungen zu ermöglichen und Missbrauch der QR-Codes zu verhindern."</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 84df908b2..359d5125f 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 @@ -109,4 +109,22 @@ <string name="debugging_debuglog_share_privacy_card_bullet_point_2" translatable="false">"Rapor RKI’ye gönderilmeden önce, Uygulamanızın orijinal olduÄŸu bir kez kontrol edilir. Bunun için, akıllı telefonunuz tarafından benzersiz bir kimlik kodu oluÅŸturulur ve Apple’ın Uygulamanızın orijinal ürün olduÄŸunu RKI’ye doÄŸrulaması için ABD veya diÄŸer bir üçüncü ülkedeki Apple’a aktarılır. Bu kimlik kodu, akıllı telefonunuzun sürümü ve Uygulama hakkında veriler içerir. Apple, böylece kim olduÄŸunuzu ortaya çıkarabilir ve akıllı telefonunuzun orijinallik kontrolünün yapıldığını anlayabilir. Apple, Uygulamadan daha fazla bilgi almaz."</string> <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2" translatable="false">"Gönderimden sonra hata raporu kimlik numarasını teknik desteÄŸe bildirirseniz, saÄŸlanan diÄŸer bilgilerin, hata raporu kimliÄŸinin ve hata raporunun silinmesini istediÄŸiniz zaman talep edebilirsiniz. Aksi halde bu hata raporu 14 gün sonra otomatik olarak silinecektir."</string> + + <!-- Trace Location QR Info Privacy Strings --> + <!-- XHED: Title for privacy card --> + <string name="trace_location_privacy_card_title_text" translatable="false">"Veri gizliliÄŸi ve veri güvenliÄŸi"</string> + <!-- XTXT: Subtitle for privacy card --> + <string name="trace_location_privacy_card_subtitle_text" translatable="false">"“Devamâ€a tıklarsanız, konuklarınız için bir QR kodu oluÅŸturabilirsiniz."</string> + <!-- XTXT: First bulletpoint title for privacy card --> + <string name="trace_location_privacy_card_first_bulletpoint_title_text" translatable="false">"Olay veya konumla ilgili verileriniz, yazdırılabilir biçimde bir QR kodunda kaydedilecektir."</string> + <!-- XTXT: First bulletpoint subtitle for privacy card --> + <string name="trace_location_privacy_card_fist_bulletpoint_subtitle_text" translatable="false">"Daha sonra konuklarınız, Uygulama ile QR kodu tarayabilir."</string> + <!-- XTXT: Second bulleptoint title for privacy card --> + <string name="trace_location_privacy_card_second_bulletpoint_title_text" translatable="false">"Lütfen olayınızın veya konumunuzun adı, kategorisi ve saati ve kalış süresi ile ilgili olarak mümkün olduÄŸunca kesin bilgi saÄŸlayın."</string> + <!-- XTXT: Second vulletpoint subtitle for privacy card --> + <string name="trace_location_pricacy_card_second_bulletpoint_subtitle_text" translatable="false">"VerdiÄŸinizi bilgiler ne kadar kesin olursa, konuklarınız da o kadar güvenilir bir biçimde uyarılabilir."</string> + <!-- XTXT: Third bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_third_bulletpoint_text" translatable="false">"Lütfen tüm konuklarınızın QR kodu, mesafe ve hijyen kuralları çerçevesinde (en az 1,5 metre) tarayabilmesi için gerekli ortamı saÄŸlayın."</string> + <!-- XTXT: Fourth bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_fourth_bulletpoint_text" translatable="false">"Kalıcı ve güvenilir uyarılar tetiklemek ve QR kodların suistimal edilmesinin önüne geçmek adına, konumlar için olan QR kodları düzenli aralıklarla yeniden oluÅŸturmanızı öneririz."</string> </resources> diff --git a/Corona-Warn-App/src/main/res/values/event_registration_strings.xml b/Corona-Warn-App/src/main/res/values/event_registration_strings.xml index f76e28a05..e2115b054 100644 --- a/Corona-Warn-App/src/main/res/values/event_registration_strings.xml +++ b/Corona-Warn-App/src/main/res/values/event_registration_strings.xml @@ -139,6 +139,25 @@ <string name="create_trace_location_card_subtitle">"Are you planning an event or do you run a business? Create a QR code so your guests can check in when they arrive."</string> <!-- XTXT: Text for trace location creation card --> <string name="create_trace_location_card_button">"Create QR Code"</string> + <!-- XTXT: Text for content description of tile image --> + <string name="create_trace_location_card_content_description">"Eine Person zeigt auf ein Flipchart."</string> + + <!-- Trace Location QR Code Info Screen--> + <!-- XTXT: Text for content description of info screen image --> + <string name="trace_location_qr_info_content_description">"Eine Person zeigt auf ein Flipchart, zwei Personen sitzen daneben und schauen auf das Flipchart."</string> + <!-- XHED: Headline for trace location creation card --> + <string name="trace_location_qr_info_headline_text">"Mehr Sicherheit für Sie und Ihre Gäste"</string> + <!-- XTXT: Text for subtitle of qr info screen --> + <string name="trace_location_qr_info_subtitle_text">"Erstellen Sie einen QR-Code, den Ihre Gäste bei ihrer Ankunft scannen können. So können sie bei Bedarf andere Gäste warnen oder von ihnen gewarnt werden."</string> + <!-- XTXT: Text for tracing icon of qr info screen --> + <string name="trace_location_qr_info_tracing_text">"Jeder Check-in wird bei der Ermittlung des Risikostatus zusätzlich berücksichtigt. Wird eine eingecheckte Person später positiv getestet, können die Gäste gewarnt werden, wenn sie sich zur gleichen Zeit oder bis zu 30 Minuten nach der positiv getesteten Person im gleichen Raum aufgehalten haben."</string> + <!-- XTXT: Text for qr icon of qr info screen --> + <string name="trace_location_qr_info_qr_code_text">"Stellen Sie den QR-Code Ihren Gästen entweder über Ihr Smartphone oder in ausgedruckter Form zur Verfügung."</string> + <!-- XTXT: Text for time sheet icon of qr info screen --> + <string name="trace_location_qr_info_time_text">"Wenn Sie dauerhaft einen QR-Code verwenden, sollten Sie diesen einmal täglich neu erstellen außerhalb der Öffnungszeiten."</string> + <!-- XTXT: Text for I understand button --> + <string name="acknowledge_button">"Enverstanden"</string> + <!-- #################################### Event Organiser Trace Locations List 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 7b66e8565..c88e9d0cb 100644 --- a/Corona-Warn-App/src/main/res/values/legal_strings.xml +++ b/Corona-Warn-App/src/main/res/values/legal_strings.xml @@ -111,4 +111,22 @@ <!-- YTXT: Second body section for Bugreporting share log Privacy Card --> <string name="debugging_debuglog_share_privacy_card_body_2" translatable="false">"If, after sending the report, you have provided your error report ID to the technical support team, then you may also request at any time that the other information you provided, the error report ID, and the error report itself be erased. Otherwise, the error report will be automatically erased after 14 days."</string> + <!-- Trace Location QR Info Privacy Strings --> + <!-- XHED: Title for privacy card --> + <string name="trace_location_privacy_card_title_text" translatable="false">"Data protection and data security"</string> + <!-- XTXT: Subtitle for privacy card --> + <string name="trace_location_privacy_card_subtitle_text" translatable="false">"If you tap on “Nextâ€, you can create a QR code for your guests."</string> + <!-- XTXT: First bulletpoint title for privacy card --> + <string name="trace_location_privacy_card_first_bulletpoint_title_text" translatable="false">"Your event or place details will be stored in encoded form in a printable QR code."</string> + <!-- XTXT: First bulletpoint subtitle for privacy card --> + <string name="trace_location_privacy_card_fist_bulletpoint_subtitle_text" translatable="false">"Your guests can then scan the QR code with the app."</string> + <!-- XTXT: Second bulleptoint title for privacy card --> + <string name="trace_location_privacy_card_second_bulletpoint_title_text" translatable="false">"Please ensure that you are as specific as possible about the name, category and time of your event or place, and the typical length of stay."</string> + <!-- XTXT: Second vulletpoint subtitle for privacy card --> + <string name="trace_location_pricacy_card_second_bulletpoint_subtitle_text" translatable="false">"The more accurate your information, the more reliably your guests can be warned."</string> + <!-- XTXT: Third bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_third_bulletpoint_text" translatable="false">"Please display the QR code in such a way that all your guests can scan it while observing the social distancing and hygiene rules (at least 1.5 meters)."</string> + <!-- XTXT: Fourth bulletpoint text for privacy card --> + <string name="trace_location_privacy_card_fourth_bulletpoint_text" translatable="false">"We recommend creating new QR codes for places at regular intervals, so that warnings are as reliable as possible over time and in order to prevent the QR codes from being misused."</string> + </resources> diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt index 2dfc0688e..962b58001 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/main/home/HomeFragmentViewModelTest.kt @@ -17,6 +17,7 @@ import de.rki.coronawarnapp.tracing.GeneralTracingStatus.Status import de.rki.coronawarnapp.tracing.states.LowRisk import de.rki.coronawarnapp.tracing.states.TracingStateProvider import de.rki.coronawarnapp.tracing.ui.statusbar.TracingHeaderState +import de.rki.coronawarnapp.ui.eventregistration.organizer.TraceLocationOrganizerSettings import de.rki.coronawarnapp.ui.main.home.HomeFragmentEvents import de.rki.coronawarnapp.ui.main.home.HomeFragmentViewModel import de.rki.coronawarnapp.util.DeviceUIState.PAIRED_POSITIVE @@ -65,6 +66,7 @@ class HomeFragmentViewModelTest : BaseTest() { @MockK lateinit var deadmanNotificationScheduler: DeadmanNotificationScheduler @MockK lateinit var appShortcutsHelper: AppShortcutsHelper @MockK lateinit var tracingSettings: TracingSettings + @MockK lateinit var traceLocationOrganizerSettings: TraceLocationOrganizerSettings @BeforeEach fun setup() { @@ -97,7 +99,8 @@ class HomeFragmentViewModelTest : BaseTest() { statisticsProvider = statisticsProvider, deadmanNotificationScheduler = deadmanNotificationScheduler, appShortcutsHelper = appShortcutsHelper, - tracingSettings = tracingSettings + tracingSettings = tracingSettings, + traceLocationOrganizerSettings = traceLocationOrganizerSettings ) @Test diff --git a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/DataResetTest.kt b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/DataResetTest.kt index 457f7d156..9eec1401f 100644 --- a/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/DataResetTest.kt +++ b/Corona-Warn-App/src/test/java/de/rki/coronawarnapp/util/DataResetTest.kt @@ -20,6 +20,7 @@ import de.rki.coronawarnapp.storage.OnboardingSettings import de.rki.coronawarnapp.storage.TracingSettings import de.rki.coronawarnapp.submission.SubmissionRepository import de.rki.coronawarnapp.submission.SubmissionSettings +import de.rki.coronawarnapp.ui.eventregistration.TraceLocationPreferences import io.mockk.MockKAnnotations import io.mockk.coVerify import io.mockk.impl.annotations.MockK @@ -39,6 +40,7 @@ internal class DataResetTest : BaseTest() { @MockK lateinit var riskLevelStorage: RiskLevelStorage @MockK lateinit var contactDiaryRepository: ContactDiaryRepository @MockK lateinit var contactDiaryPreferences: ContactDiaryPreferences + @MockK lateinit var traceLocationPreferences: TraceLocationPreferences @MockK lateinit var cwaSettings: CWASettings @MockK lateinit var statisticsProvider: StatisticsProvider @MockK lateinit var surveySettings: SurveySettings @@ -65,6 +67,7 @@ internal class DataResetTest : BaseTest() { downloadDiagnosisKeysSettings = downloadDiagnosisKeysSettings, riskLevelStorage = riskLevelStorage, contactDiaryRepository = contactDiaryRepository, + traceLocationPreferences = traceLocationPreferences, contactDiaryPreferences = contactDiaryPreferences, cwaSettings = cwaSettings, statisticsProvider = statisticsProvider, @@ -92,6 +95,7 @@ internal class DataResetTest : BaseTest() { coVerify(exactly = 1) { downloadDiagnosisKeysSettings.clear() } coVerify(exactly = 1) { riskLevelStorage.clear() } coVerify(exactly = 1) { contactDiaryPreferences.clear() } + coVerify(exactly = 1) { traceLocationPreferences.clear() } coVerify(exactly = 1) { cwaSettings.clear() } coVerify(exactly = 1) { surveySettings.clear() } coVerify(exactly = 1) { analyticsSettings.clear() } -- GitLab