From 87f35c1c2e9675609efb8d4f01ed007d400d1acb Mon Sep 17 00:00:00 2001 From: axelherbstreith <75120552+axelherbstreith@users.noreply.github.com> Date: Tue, 2 Mar 2021 15:28:21 +0100 Subject: [PATCH] UI: Adapt Logging Screen for Debug Log (EXPOSUREAPP-4451) (#2501) * Adapted app information entry * added privacy card * updated layout * adapted texts * added button styling, links and navigation * linting * linting * added id history section * linting * formatting * Address UA feedback. * Format layout files. Co-authored-by: Matthias Urhahn <matthias.urhahn@sap.com> --- .../debuglog/ui/DebugLogFragment.kt | 68 +++- .../debuglog/ui/DebugLogNavigationEvents.kt | 5 + .../debuglog/ui/DebugLogViewModel.kt | 12 + .../src/main/res/color/button_debug_log.xml | 5 + .../ic_debug_log_indicator_activated.xml | 9 + .../ic_debug_log_indicator_deactivated.xml | 9 + .../layout/bugreporting_debuglog_fragment.xml | 303 +++++++++++++----- .../main/res/layout/fragment_information.xml | 8 +- .../layout/include_debuglog_privacy_card.xml | 183 +++++++++++ .../src/main/res/navigation/nav_graph.xml | 6 +- .../src/main/res/values-bg/strings.xml | 2 +- .../src/main/res/values-de/strings.xml | 31 +- .../src/main/res/values-en/strings.xml | 2 +- .../src/main/res/values-pl/strings.xml | 2 +- .../src/main/res/values-ro/strings.xml | 2 +- .../src/main/res/values-tr/strings.xml | 2 +- .../src/main/res/values/strings.xml | 30 +- .../src/main/res/values/styles.xml | 5 + 18 files changed, 572 insertions(+), 112 deletions(-) create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogNavigationEvents.kt create mode 100644 Corona-Warn-App/src/main/res/color/button_debug_log.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_activated.xml create mode 100644 Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_deactivated.xml create mode 100644 Corona-Warn-App/src/main/res/layout/include_debuglog_privacy_card.xml diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogFragment.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogFragment.kt index def69cfa0..537e312a1 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogFragment.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogFragment.kt @@ -4,11 +4,13 @@ import android.os.Bundle import android.text.format.Formatter import android.view.View import android.widget.Toast -import androidx.core.view.isGone import androidx.fragment.app.Fragment import de.rki.coronawarnapp.R import de.rki.coronawarnapp.databinding.BugreportingDebuglogFragmentBinding +import de.rki.coronawarnapp.util.ContextExtensions.getDrawableCompat import de.rki.coronawarnapp.util.di.AutoInject +import de.rki.coronawarnapp.util.setUrl +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 @@ -27,24 +29,64 @@ class DebugLogFragment : Fragment(R.layout.bugreporting_debuglog_fragment), Auto vm.state.observe2(this) { binding.apply { - debuglogActivityIndicator.isGone = !it.isRecording + + if (explanationSectionTwo.text == + context?.getString(R.string.debugging_debuglog_intro_explanation_section_two) + ) { + explanationSectionTwo.setUrl( + R.string.debugging_debuglog_intro_explanation_section_two, + R.string.debugging_debuglog_intro_explanation_section_two_link_label, + R.string.debugging_debuglog_intro_explanation_section_two_faq_link + ) + } + + debuglogActivityIndicator.setImageDrawable( + context?.getDrawableCompat( + if (it.isRecording) + R.drawable.ic_debug_log_indicator_activated + else R.drawable.ic_debug_log_indicator_deactivated + ) + ) + debuglogStatusPrimary.text = getString( if (it.isRecording) R.string.debugging_debuglog_status_recording else R.string.debugging_debuglog_status_not_recording ) - debuglogStatusSecondary.text = getString( - R.string.debugging_debuglog_status_additional_infos, - Formatter.formatFileSize(context, it.currentSize) - ) - toggleRecording.text = getString( - if (it.isRecording) R.string.debugging_debuglog_action_stop_recording - else R.string.debugging_debuglog_action_start_recording - ) - shareRecording.isEnabled = it.currentSize > 0L && !it.sharingInProgress + + debuglogStatusSecondary.text = + getString( + R.string.debugging_debuglog_status_additional_infos, + Formatter.formatFileSize(context, it.currentSize) + ) + + toggleRecording.isActivated = it.isRecording + + toggleRecording.text = + getString( + if (it.isRecording) R.string.debugging_debuglog_action_stop_recording + else R.string.debugging_debuglog_action_start_recording + ) + + toggleSendErrorLog.visibility = if (it.isRecording) View.VISIBLE else View.GONE + toggleSendErrorLog.isEnabled = it.currentSize > 0L && !it.sharingInProgress + + toggleStoreLog.visibility = if (it.isRecording) View.VISIBLE else View.GONE + toggleRecording.isEnabled = !it.sharingInProgress } } + vm.routeToScreen.observe2(this) { + when (it) { + + DebugLogNavigationEvents.NavigateToPrivacyFragment -> { + doNavigate( + DebugLogFragmentDirections.actionDebuglogFragmentToInformationPrivacyFragment() + ) + } + } + } + vm.errorEvent.observe2(this) { Toast.makeText(requireContext(), it.toString(), Toast.LENGTH_LONG).show() } @@ -55,7 +97,9 @@ class DebugLogFragment : Fragment(R.layout.bugreporting_debuglog_fragment), Auto binding.apply { toggleRecording.setOnClickListener { vm.toggleRecording() } - shareRecording.setOnClickListener { vm.shareRecording() } + toggleSendErrorLog.setOnClickListener { vm.shareRecording() } + debugLogHistoryContainer.setOnClickListener { vm.onIdHistoryPress() } + debugLogPrivacyInformation.setOnClickListener { vm.onPrivacyButtonPress() } toolbar.setNavigationOnClickListener { popBackStack() } } } diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogNavigationEvents.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogNavigationEvents.kt new file mode 100644 index 000000000..c631452fc --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogNavigationEvents.kt @@ -0,0 +1,5 @@ +package de.rki.coronawarnapp.bugreporting.debuglog.ui + +sealed class DebugLogNavigationEvents { + object NavigateToPrivacyFragment : DebugLogNavigationEvents() +} diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogViewModel.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogViewModel.kt index d31e9f34a..ddbe13966 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogViewModel.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/bugreporting/debuglog/ui/DebugLogViewModel.kt @@ -38,6 +38,18 @@ class DebugLogViewModel @AssistedInject constructor( } private val manualTick = MutableStateFlow(Unit) private val sharingInProgress = MutableStateFlow(false) + + val routeToScreen: de.rki.coronawarnapp.ui.SingleLiveEvent<DebugLogNavigationEvents> = + de.rki.coronawarnapp.ui.SingleLiveEvent() + + fun onPrivacyButtonPress() { + routeToScreen.postValue(DebugLogNavigationEvents.NavigateToPrivacyFragment) + } + + fun onIdHistoryPress() { + // TODO Add Navigation + } + val state: LiveData<State> = combine(ticker, manualTick, sharingInProgress) { _, _, sharingInProgress -> State( isRecording = debugLogger.isLogging, diff --git a/Corona-Warn-App/src/main/res/color/button_debug_log.xml b/Corona-Warn-App/src/main/res/color/button_debug_log.xml new file mode 100644 index 000000000..061c98a5f --- /dev/null +++ b/Corona-Warn-App/src/main/res/color/button_debug_log.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<selector xmlns:android="http://schemas.android.com/apk/res/android"> + <item android:color="@color/colorAccentTintButton" android:state_activated="false" /> <!-- default --> + <item android:color="@color/colorSemanticHighRiskPressed" /> <!-- enabled --> +</selector> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_activated.xml b/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_activated.xml new file mode 100644 index 000000000..96147bb65 --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_activated.xml @@ -0,0 +1,9 @@ +<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="M16.1494,31.9512C24.6602,31.9512 31.6621,24.9492 31.6621,16.4385C31.6621,7.9131 24.6602,0.9111 16.1348,0.9111C7.6094,0.9111 0.6221,7.9131 0.6221,16.4385C0.6221,24.9492 7.624,31.9512 16.1494,31.9512ZM16.1494,22.5029C12.7656,22.5029 10.041,19.7783 10.041,16.3945C10.041,13.04 12.7656,10.3154 16.1494,10.3154C19.5186,10.3154 22.2432,13.04 22.2432,16.3945C22.2432,19.7783 19.5186,22.5029 16.1494,22.5029Z" + android:fillColor="#BF0F2D"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_deactivated.xml b/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_deactivated.xml new file mode 100644 index 000000000..733482b1e --- /dev/null +++ b/Corona-Warn-App/src/main/res/drawable/ic_debug_log_indicator_deactivated.xml @@ -0,0 +1,9 @@ +<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="M16.1494,31.9512C24.6602,31.9512 31.6621,24.9492 31.6621,16.4385C31.6621,7.9131 24.6602,0.9111 16.1348,0.9111C7.6094,0.9111 0.6221,7.9131 0.6221,16.4385C0.6221,24.9492 7.624,31.9512 16.1494,31.9512ZM16.1494,22.5029C12.7656,22.5029 10.041,19.7783 10.041,16.3945C10.041,13.04 12.7656,10.3154 16.1494,10.3154C19.5186,10.3154 22.2432,13.04 22.2432,16.3945C22.2432,19.7783 19.5186,22.5029 16.1494,22.5029Z" + android:fillColor="#D6D6D9"/> +</vector> diff --git a/Corona-Warn-App/src/main/res/layout/bugreporting_debuglog_fragment.xml b/Corona-Warn-App/src/main/res/layout/bugreporting_debuglog_fragment.xml index c33bf0eb5..dc17cdd13 100644 --- a/Corona-Warn-App/src/main/res/layout/bugreporting_debuglog_fragment.xml +++ b/Corona-Warn-App/src/main/res/layout/bugreporting_debuglog_fragment.xml @@ -1,114 +1,255 @@ -<?xml version="1.0" encoding="utf-8"?> - -<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" +<layout 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="wrap_content" - android:orientation="vertical"> - - <Toolbar - android:id="@+id/toolbar" - style="@style/CWAToolbar" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:navigationIcon="@drawable/ic_back" - android:title="@string/debugging_debuglog_title" /> + xmlns:tools="http://schemas.android.com/tools"> - <ScrollView + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/content_container" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:background="@drawable/contact_diary_onboarding_background" + android:contentDescription="@string/contact_diary_title" + android:focusable="true"> - <LinearLayout + <Toolbar + android:id="@+id/toolbar" + style="@style/CWAToolbar" android:layout_width="match_parent" android:layout_height="wrap_content" - android:orientation="vertical"> - <TextView - android:id="@+id/explanation" - style="@style/body1" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_margin="@dimen/spacing_normal" - android:text="@string/debugging_debuglog_intro_explanation" /> + android:navigationIcon="@drawable/ic_back" + android:title="@string/debugging_debuglog_title" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> - <TextView - android:id="@+id/sensitive_information" - style="@style/body1" - android:layout_width="match_parent" - android:layout_height="wrap_content" - android:background="@color/cwaGrayHighlight" - android:padding="@dimen/spacing_normal" - android:text="@string/debugging_debuglog_intro_warning" - android:textColor="@color/colorStableLight" /> + <ScrollView + android:layout_width="match_parent" + android:layout_height="0dp" + android:layout_marginBottom="12dp" + android:clipToPadding="false" + android:paddingBottom="32dp" + app:layout_constraintBottom_toTopOf="@+id/debug_log_analysis_title" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/toolbar"> <androidx.constraintlayout.widget.ConstraintLayout - style="@style/cardTracing" android:layout_width="match_parent" - android:layout_height="wrap_content" - android:layout_marginStart="@dimen/spacing_small" - android:layout_marginTop="@dimen/spacing_normal" - android:layout_marginEnd="@dimen/spacing_small" - android:layout_marginBottom="@dimen/spacing_tiny"> - - <ProgressBar - android:id="@+id/debuglog_activity_indicator" - android:layout_width="36dp" - android:layout_height="36dp" - android:visibility="gone" - app:layout_constraintBottom_toBottomOf="@+id/debuglog_status_secondary" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="@+id/debuglog_status_primary" - tools:visibility="visible" /> + android:layout_height="0dp"> <TextView - android:id="@+id/debuglog_status_primary" + android:id="@+id/explanation_section_one" style="@style/body1" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="16dp" + android:layout_margin="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_intro_explanation_section_one" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@+id/debuglog_activity_indicator" - app:layout_constraintTop_toTopOf="parent" - app:layout_goneMarginStart="0dp" - tools:text="@string/debugging_debuglog_status_not_recording" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> <TextView - android:id="@+id/debuglog_status_secondary" - style="@style/TextAppearance.AppCompat.Caption" + android:id="@+id/explanation_section_two" + style="@style/body1" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="16dp" + android:layout_margin="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_intro_explanation_section_two" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@+id/debuglog_activity_indicator" - app:layout_constraintTop_toBottomOf="@id/debuglog_status_primary" - app:layout_goneMarginStart="0dp" - tools:text="@string/debugging_debuglog_status_additional_infos" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/explanation_section_one" /> - <Button - android:id="@+id/share_recording" + <include + android:id="@+id/debug_log_privacy_card" + layout="@layout/include_debuglog_privacy_card" android:layout_width="0dp" android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/guideline_card" android:layout_marginTop="16dp" - android:layout_marginEnd="8dp" - android:enabled="false" - android:text="@string/debugging_debuglog_action_share_log" - app:layout_constraintEnd_toStartOf="@+id/toggle_recording" + android:focusable="true" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/explanation_section_two" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_history_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:visibility="gone" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/debug_log_privacy_card"> + + <TextView + android:id="@+id/log_history_title" + style="@style/body1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_margin="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_id_history_title" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + <TextView + android:id="@+id/log_history_body" + style="@style/TextAppearance.AppCompat.Caption" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="@dimen/spacing_normal" + android:layout_marginTop="4dp" + android:text="@string/debugging_debuglog_id_history_body" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/log_history_title" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <View + android:id="@+id/debug_log_first_divider" + android:layout_width="0dp" + android:layout_height="@dimen/card_divider" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="24dp" + android:background="?android:attr/listDivider" + app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/debuglog_status_secondary" /> - <Button - android:id="@+id/toggle_recording" + app:layout_constraintTop_toBottomOf="@id/debug_log_history_container" /> + + <TextView + android:id="@+id/debug_log_privacy_information" + style="@style/subtitle" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginStart="8dp" - android:layout_marginTop="16dp" - android:text="@string/debugging_debuglog_action_start_recording" + android:layout_marginHorizontal="24dp" + android:background="?selectableItemBackground" + android:clickable="true" + android:focusable="true" + android:paddingVertical="@dimen/spacing_tiny" + android:text="@string/contact_diary_onboarding_legal_information" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toEndOf="@id/share_recording" - app:layout_constraintTop_toBottomOf="@id/debuglog_status_secondary" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/debug_log_first_divider" + tools:text="@string/contact_diary_onboarding_legal_information" /> + <View + android:id="@+id/debug_log_second_divider" + android:layout_width="0dp" + android:layout_height="@dimen/card_divider" + android:layout_marginHorizontal="24dp" + android:layout_marginBottom="24dp" + android:background="?android:attr/listDivider" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@id/debug_log_privacy_information" /> </androidx.constraintlayout.widget.ConstraintLayout> - </LinearLayout> - </ScrollView> -</LinearLayout> \ No newline at end of file + </ScrollView> + + <TextView + android:id="@+id/debug_log_analysis_title" + style="@style/headline5" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:layout_marginBottom="12dp" + android:accessibilityHeading="true" + android:focusable="true" + android:text="@string/debugging_debuglog_current_status_title" + app:layout_constraintBottom_toTopOf="@+id/debug_log_current_status_card" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" /> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_current_status_card" + style="@style/cardTracing" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginHorizontal="24dp" + android:layout_marginTop="@dimen/spacing_normal" + android:layout_marginBottom="16dp" + app:layout_constraintBottom_toTopOf="@+id/toggle_send_error_log" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent"> + + + <ImageView + android:id="@+id/debuglog_activity_indicator" + android:layout_width="36dp" + android:layout_height="36dp" + android:importantForAccessibility="no" + android:src="@drawable/ic_debug_log_indicator_deactivated" + app:layout_constraintBottom_toBottomOf="@+id/debuglog_status_secondary" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="@+id/debuglog_status_primary" + tools:src="@drawable/ic_debug_log_indicator_deactivated" /> + + <TextView + android:id="@+id/debuglog_status_primary" + style="@style/body1" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/debuglog_activity_indicator" + app:layout_constraintTop_toTopOf="parent" + tools:text="@string/debugging_debuglog_status_not_recording" /> + + <TextView + android:id="@+id/debuglog_status_secondary" + style="@style/TextAppearance.AppCompat.Caption" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/debuglog_activity_indicator" + app:layout_constraintTop_toBottomOf="@id/debuglog_status_primary" + tools:text="@string/debugging_debuglog_status_additional_infos" /> + + + </androidx.constraintlayout.widget.ConstraintLayout> + + <android.widget.Button + android:id="@+id/toggle_send_error_log" + style="@style/buttonPrimary" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginVertical="@dimen/spacing_small" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_action_share_log" + app:layout_constraintBottom_toTopOf="@+id/toggle_store_log" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/debugging_debuglog_action_share_log" /> + + <android.widget.Button + android:id="@+id/toggle_store_log" + style="@style/buttonPrimary" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginVertical="@dimen/spacing_small" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_action_local_log_store" + app:layout_constraintBottom_toTopOf="@+id/toggle_recording" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/debugging_debuglog_action_local_log_store" /> + + <android.widget.Button + android:id="@+id/toggle_recording" + style="@style/debugLogButton" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginVertical="@dimen/spacing_small" + android:layout_marginStart="@dimen/spacing_normal" + android:layout_marginEnd="@dimen/spacing_normal" + android:text="@string/debugging_debuglog_action_start_recording" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + tools:text="@string/debugging_debuglog_action_start_recording" /> + + </androidx.constraintlayout.widget.ConstraintLayout> +</layout> \ No newline at end of file diff --git a/Corona-Warn-App/src/main/res/layout/fragment_information.xml b/Corona-Warn-App/src/main/res/layout/fragment_information.xml index b50623767..25dfed9ca 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_information.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_information.xml @@ -89,18 +89,18 @@ app:subtitle="@{@string/information_contact_title}" /> <include - android:id="@+id/information_legal" + android:id="@+id/information_debuglog" layout="@layout/include_row" android:layout_width="match_parent" android:layout_height="wrap_content" - app:subtitle="@{@string/information_legal_title}" /> + app:subtitle="@{@string/debugging_debuglog_title}" /> <include - android:id="@+id/information_debuglog" + android:id="@+id/information_legal" layout="@layout/include_row" android:layout_width="match_parent" android:layout_height="wrap_content" - app:subtitle="@{@string/debugging_debuglog_title}" /> + app:subtitle="@{@string/information_legal_title}" /> <TextView android:id="@+id/information_version" diff --git a/Corona-Warn-App/src/main/res/layout/include_debuglog_privacy_card.xml b/Corona-Warn-App/src/main/res/layout/include_debuglog_privacy_card.xml new file mode 100644 index 000000000..94d852b77 --- /dev/null +++ b/Corona-Warn-App/src/main/res/layout/include_debuglog_privacy_card.xml @@ -0,0 +1,183 @@ +<?xml version="1.0" encoding="utf-8"?> +<layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto"> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card" + style="@style/GreyCard" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:padding="@dimen/spacing_normal" + app:layout_constraintTop_toTopOf="parent"> + + <TextView + android:id="@+id/debug_log_privacy_card_title" + style="@style/headline5" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:accessibilityHeading="true" + android:focusable="true" + android:text="@string/debugging_debuglog_privacy_card_title" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card_container_section_one" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.104" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/debug_log_privacy_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/debug_log_privacy_card_first_section_body_one" /> + + <TextView + android:id="@+id/debug_log_privacy_card_first_section_body_one" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:focusable="true" + android:text="@string/debug_log_privacy_card_section_body_one" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/bulletpoint_one" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card_container_section_two" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/debug_log_privacy_card_container_section_one"> + + <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/debug_log_privacy_card_first_section_body_two" /> + + <TextView + android:id="@+id/debug_log_privacy_card_first_section_body_two" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:focusable="true" + android:text="@string/debug_log_privacy_card_container_section_two" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/bulletpoint_two" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card_container_section_three" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/debug_log_privacy_card_container_section_two"> + + <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/debug_log_privacy_card_second_section_body_one" /> + + <TextView + android:id="@+id/debug_log_privacy_card_second_section_body_one" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:focusable="true" + android:text="@string/debug_log_privacy_card_container_section_three" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/bulletpoint_three" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card_container_section_four" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/debug_log_privacy_card_container_section_three"> + + <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/debug_log_privacy_card_second_section_body_two" /> + + <TextView + android:id="@+id/debug_log_privacy_card_second_section_body_two" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:focusable="true" + android:text="@string/debug_log_privacy_card_container_section_four" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/bulletpoint_four" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + <androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/debug_log_privacy_card_container_section_five" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="@dimen/spacing_normal" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/debug_log_privacy_card_container_section_four"> + + <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/debug_log_privacy_card_second_section_body_five" /> + + <TextView + android:id="@+id/debug_log_privacy_card_second_section_body_five" + style="@style/subtitle" + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginStart="@dimen/spacing_normal" + android:focusable="true" + android:text="@string/debug_log_privacy_card_container_section_five" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toEndOf="@+id/bulletpoint_five" + app:layout_constraintTop_toTopOf="parent" /> + + </androidx.constraintlayout.widget.ConstraintLayout> + + </androidx.constraintlayout.widget.ConstraintLayout> +</layout> 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 b4fe423e3..2af00ef76 100644 --- a/Corona-Warn-App/src/main/res/navigation/nav_graph.xml +++ b/Corona-Warn-App/src/main/res/navigation/nav_graph.xml @@ -501,7 +501,11 @@ <fragment android:id="@+id/debuglogFragment" android:name="de.rki.coronawarnapp.bugreporting.debuglog.ui.DebugLogFragment" - android:label="DebuglogFragment" /> + android:label="DebuglogFragment" > + <action + android:id="@+id/action_debuglogFragment_to_informationPrivacyFragment" + app:destination="@id/informationPrivacyFragment" /> + </fragment> <!-- New Release --> <fragment diff --git a/Corona-Warn-App/src/main/res/values-bg/strings.xml b/Corona-Warn-App/src/main/res/values-bg/strings.xml index 658893e14..69c27d8e7 100644 --- a/Corona-Warn-App/src/main/res/values-bg/strings.xml +++ b/Corona-Warn-App/src/main/res/values-bg/strings.xml @@ -866,7 +866,7 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Отчети за грешки"</string> <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñва дейÑтвиÑта на приложението в журнал. Ðко е активна и възникне грешка, ще можете да Ñподелите отчета Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ñ†Ð¸Ñ‚Ðµ, за да им помогнете да решат проблема.\nÐко оÑтавите опциÑта активна, това може да доведе до запълване на проÑтранÑтвото за Ñъхранение. Ðко Ñ Ð´ÐµÐ·Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°Ñ‚Ðµ, отчетите за грешки Ñе изтриват."</string> + <string name="debugging_debuglog_intro_explanation_section_one">"Тази Ð¾Ð¿Ñ†Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñва дейÑтвиÑта на приложението в журнал. Ðко е активна и възникне грешка, ще можете да Ñподелите отчета Ñ Ñ€Ð°Ð·Ñ€Ð°Ð±Ð¾Ñ‚Ñ‡Ð¸Ñ†Ð¸Ñ‚Ðµ, за да им помогнете да решат проблема.\nÐко оÑтавите опциÑта активна, това може да доведе до запълване на проÑтранÑтвото за Ñъхранение. Ðко Ñ Ð´ÐµÐ·Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ€Ð°Ñ‚Ðµ, отчетите за грешки Ñе изтриват."</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"МолÑ, имайте предвид, че отчетите за грешки може да Ñъдържат поверителни данни (например резултати от теÑтове или запиÑи в дневника на контактите). Ето защо не бива да ÑподелÑте отчетите за грешки публично."</string> <!-- XBUT: Button text to start the log recording --> diff --git a/Corona-Warn-App/src/main/res/values-de/strings.xml b/Corona-Warn-App/src/main/res/values-de/strings.xml index 4fb850acf..13d605e60 100644 --- a/Corona-Warn-App/src/main/res/values-de/strings.xml +++ b/Corona-Warn-App/src/main/res/values-de/strings.xml @@ -865,17 +865,31 @@ <string name="information_legal_illustration_description">"Eine Hand hält ein Smartphone mit viel Text, daneben ist ein Paragraphenzeichen als Symbol für das Impressum."</string> <!-- XHED: Headline for debug log screen --> - <string name="debugging_debuglog_title">"Fehlerbericht"</string> - <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"Durch diese Option wird das App-Verhalten in einer Textdatei protokolliert. Ist die Option aktiviert bevor ein Fehler auftritt, können Sie diesen Bericht zur Verfügung stellen, um die Entwickler bei der Problemlösung zu unterstützen.\nEine dauerhafte Aktivierung dieser Option führt zu hohem Speicherbedarf. Der Fehlerbericht wird durch Deaktivieren der Option gelöscht."</string> + <string name="debugging_debuglog_title">"Fehlerberichte"</string> + <!-- XHED: Headline for current status of debug log screen --> + <string name="debugging_debuglog_current_status_title">"Fehleranalyse"</string> + <!-- YTXT: Description one for the debug option to record log files --> + <string name="debugging_debuglog_intro_explanation_section_one">"Um den technischen Support der App bei der Fehleranalyse zu unterstützen, können Sie einen Fehlerbericht der CWA aufzeichnen. Hierbei werden die einzelnen technischen Schritte und Ereignisse beim Ablauf der App detailliert aufgezeichnet. Den Fehlerbericht können Sie dann an den technischen Support senden und so helfen, Fehler zu erkennen und zu beheben."</string> + <!-- YTXT: Description two for the debug option to record log files --> + <string name="debugging_debuglog_intro_explanation_section_two">"Weitere Informationen finden Sie in den FAQ:\nFAQ zu den Fehlerberichten"</string> + <!-- XTXT: Debug Log screen increased risk level link label - HAS TO MATCH the link text above --> + <string name="debugging_debuglog_intro_explanation_section_two_link_label">"FAQ zu den Fehlerberichten"</string> + <!-- XTXT: Explains user about about debug log: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details --> + <string name="debugging_debuglog_intro_explanation_section_two_faq_link">"https://www.coronawarn.app/en/faq/#error_log"</string> + <!-- YTXT: Title of ID History --> + <string name="debugging_debuglog_id_history_title">"ID History"</string> + <!-- YTXT: Description of ID History --> + <string name="debugging_debuglog_id_history_body">"IDs der bisher geteilten Fehleranalysen"</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"Bitte beachten Sie, dass in Fehlerberichten sensible Daten (z.B. Testergebnis oder Kontakt-Tagebuch-Einträge) enthalten sein können. Aus diesem Grund sollten Sie Fehlerberichte nicht öffentlich teilen."</string> <!-- XBUT: Button text to start the log recording --> <string name="debugging_debuglog_action_start_recording">"Starten"</string> <!-- XBUT: Button text to stop the log recording --> - <string name="debugging_debuglog_action_stop_recording">"Löschen"</string> + <string name="debugging_debuglog_action_stop_recording">"Stoppen und löschen"</string> <!-- XBUT: Button text to share the log recording --> - <string name="debugging_debuglog_action_share_log">"Teilen"</string> + <string name="debugging_debuglog_action_share_log">"Fehlerbericht senden"</string> + <!-- XBUT: Button text to locally store the log recording --> + <string name="debugging_debuglog_action_local_log_store">"Lokal speichern und fortsetzen"</string> <!-- YTXT: Status text if a debug log is being recorded --> <string name="debugging_debuglog_status_recording">"Aufzeichnung läuft"</string> <!-- YTXT: Status text if a debug log is not being recorded --> @@ -885,6 +899,13 @@ <!-- XHED: Title for native sharing dialog --> <string name="debugging_debuglog_sharing_dialog_title">"CWA Fehlerbericht teilen"</string> + <string name="debugging_debuglog_privacy_card_title">"Datenschutz und Datensicherheit"</string> + <string name="debug_log_privacy_card_section_body_one">"Die Aufzeichnung des Fehlerberichts ist freiwillig."</string> + <string name="debug_log_privacy_card_container_section_two">"Auf den Fehlerbericht haben zunächst nur Sie Zugriff. Sie können im Anschluss entscheiden, ob Sie den Fehlerbericht an den technischen Support senden, ob Sie den Fehlerbericht zunächst auf Ihrem Smartphone speichern oder die Aufzeichnung stoppen und löschen wollen. Wenn Sie den Fehlerbericht zunächst lokal speichern, haben Sie die Möglichkeit, sich den Fehlerbericht selbst anzuschauen, bevor Sie diesen an den Support übermitteln."</string> + <string name="debug_log_privacy_card_container_section_three">"Der Fehlerbericht enthält sensible Informationen, zum Beispiel Angaben über Ihr Testergebnis oder das für Sie ermittelte Ansteckungsrisiko. Er enthält keine Informationen über die QR-Codes, die Sie bei der Testregistrierung verwendet haben, über Angaben, die Sie im Kontakt-Tagebuch erfasste haben oder Angaben zu Ihrer Identität."</string> + <string name="debug_log_privacy_card_container_section_four">"Wir empfehlen die Fehlerberichte nicht zu veröffentlichen und nicht per E-Mail zu versenden."</string> + <string name="debug_log_privacy_card_container_section_five">"Private Personen oder Unternehmen dürfen von Ihnen nicht die Weitergabe eines aufgezeichneten Fehlerberichtes verlangen."</string> + <!-- #################################### Interoperability ###################################### --> diff --git a/Corona-Warn-App/src/main/res/values-en/strings.xml b/Corona-Warn-App/src/main/res/values-en/strings.xml index d8c0ec6c5..5d7dd22ba 100644 --- a/Corona-Warn-App/src/main/res/values-en/strings.xml +++ b/Corona-Warn-App/src/main/res/values-en/strings.xml @@ -866,7 +866,7 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Error Report"</string> <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"This option logs the app’s behavior in a text file. If this option is activated before an error occurs, you can make this report available to help the developers solve the problem.\nIf you leave this option activated, it will result in high storage requirements. If you deactivate the option, the error report is deleted."</string> + <string name="debugging_debuglog_intro_explanation_section_one">"This option logs the app’s behavior in a text file. If this option is activated before an error occurs, you can make this report available to help the developers solve the problem.\nIf you leave this option activated, it will result in high storage requirements. If you deactivate the option, the error report is deleted."</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"Please note that error reports may contain sensitive data (such as a test result or contact journal entries). Therefore, you should not share these error reports publicly."</string> <!-- XBUT: Button text to start the log recording --> diff --git a/Corona-Warn-App/src/main/res/values-pl/strings.xml b/Corona-Warn-App/src/main/res/values-pl/strings.xml index eaa9f8c59..d133834d9 100644 --- a/Corona-Warn-App/src/main/res/values-pl/strings.xml +++ b/Corona-Warn-App/src/main/res/values-pl/strings.xml @@ -866,7 +866,7 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Raport o bÅ‚Ä™dach"</string> <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"Ta opcja umożliwia rejestrowanie zachowania aplikacji w pliku tekstowym. JeÅ›li zostanie ona aktywowana przed wystÄ…pieniem bÅ‚Ä™du, bÄ™dziesz mieć możliwość udostÄ™pnienia tego raportu, aby pomóc programistom rozwiÄ…zać problem.\nPozostawienie tej opcji w stanie aktywnoÅ›ci wiąże siÄ™ z dużym zapotrzebowaniem na pamięć. JeÅ›li jÄ… wyÅ‚Ä…czysz, raport o bÅ‚Ä™dach zostanie usuniÄ™ty."</string> + <string name="debugging_debuglog_intro_explanation_section_one">"Ta opcja umożliwia rejestrowanie zachowania aplikacji w pliku tekstowym. JeÅ›li zostanie ona aktywowana przed wystÄ…pieniem bÅ‚Ä™du, bÄ™dziesz mieć możliwość udostÄ™pnienia tego raportu, aby pomóc programistom rozwiÄ…zać problem.\nPozostawienie tej opcji w stanie aktywnoÅ›ci wiąże siÄ™ z dużym zapotrzebowaniem na pamięć. JeÅ›li jÄ… wyÅ‚Ä…czysz, raport o bÅ‚Ä™dach zostanie usuniÄ™ty."</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"Należy pamiÄ™tać, że raporty o bÅ‚Ä™dach mogÄ… zawierać dane wrażliwe (takie jak wynik testu lub wpisy dziennika kontaktów). Z tego wzglÄ™du takie raporty nie powinny być udostÄ™pniane publicznie."</string> <!-- XBUT: Button text to start the log recording --> diff --git a/Corona-Warn-App/src/main/res/values-ro/strings.xml b/Corona-Warn-App/src/main/res/values-ro/strings.xml index 9e673a7e8..4a247aeb3 100644 --- a/Corona-Warn-App/src/main/res/values-ro/strings.xml +++ b/Corona-Warn-App/src/main/res/values-ro/strings.xml @@ -866,7 +866,7 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Raport de erori"</string> <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"Această opÈ›iune înregistrează comportamentul aplicaÈ›iei într-un fiÈ™ier text de jurnal. Dacă opÈ›iunea este activată înainte de apariÈ›ia unei erori, puteÈ›i face disponibil acest raport pentru a-i ajuta pe dezvoltatori să rezolve problema.\nDacă lăsaÈ›i activată această opÈ›iune, acest lucru va conduce la cerinÈ›e de stocare ridicate. Dacă dezactivaÈ›i opÈ›iunea, raportul de erori este È™ters."</string> + <string name="debugging_debuglog_intro_explanation_section_one">"Această opÈ›iune înregistrează comportamentul aplicaÈ›iei într-un fiÈ™ier text de jurnal. Dacă opÈ›iunea este activată înainte de apariÈ›ia unei erori, puteÈ›i face disponibil acest raport pentru a-i ajuta pe dezvoltatori să rezolve problema.\nDacă lăsaÈ›i activată această opÈ›iune, acest lucru va conduce la cerinÈ›e de stocare ridicate. Dacă dezactivaÈ›i opÈ›iunea, raportul de erori este È™ters."</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"ReÈ›ineÈ›i că rapoartele de erori pot conÈ›ine date sensibile (precum un rezultat al testului sau intrări în jurnal ale contactelor). ÃŽn consecință, nu este recomandat să împărtășiÈ›i public aceste rapoarte de erori."</string> <!-- XBUT: Button text to start the log recording --> diff --git a/Corona-Warn-App/src/main/res/values-tr/strings.xml b/Corona-Warn-App/src/main/res/values-tr/strings.xml index 771a2ed84..0266b0162 100644 --- a/Corona-Warn-App/src/main/res/values-tr/strings.xml +++ b/Corona-Warn-App/src/main/res/values-tr/strings.xml @@ -866,7 +866,7 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Hata Raporu"</string> <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"Bu seçenek, uygulama davranışını bir metin dosyasına kaydeder. Bir hata meydana gelmeden önce bu seçenek etkinleÅŸtirilirse geliÅŸtiricilerin sorunu çözmesine yardımcı olmak için bu raporu sunabilirsiniz.\nBu seçeneÄŸi etkinleÅŸtirilmiÅŸ durumda bırakırsanız yüksek depolama alanı gereklilikleri oluÅŸacaktır. SeçeneÄŸi devre dışı bırakırsanız hata raporu silinir."</string> + <string name="debugging_debuglog_intro_explanation_section_one">"Bu seçenek, uygulama davranışını bir metin dosyasına kaydeder. Bir hata meydana gelmeden önce bu seçenek etkinleÅŸtirilirse geliÅŸtiricilerin sorunu çözmesine yardımcı olmak için bu raporu sunabilirsiniz.\nBu seçeneÄŸi etkinleÅŸtirilmiÅŸ durumda bırakırsanız yüksek depolama alanı gereklilikleri oluÅŸacaktır. SeçeneÄŸi devre dışı bırakırsanız hata raporu silinir."</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"Lütfen hata raporlarının hassas veriler içerebileceÄŸini unutmayın (örneÄŸin, test sonucu ya da temas güncesi giriÅŸleri). Bu nedenle bu hata raporlarını herkese açık ÅŸekilde paylaÅŸmamanız gerekir."</string> <!-- XBUT: Button text to start the log recording --> diff --git a/Corona-Warn-App/src/main/res/values/strings.xml b/Corona-Warn-App/src/main/res/values/strings.xml index 0ad1b02f4..d933ab429 100644 --- a/Corona-Warn-App/src/main/res/values/strings.xml +++ b/Corona-Warn-App/src/main/res/values/strings.xml @@ -880,16 +880,30 @@ <!-- XHED: Headline for debug log screen --> <string name="debugging_debuglog_title">"Error Report"</string> - <!-- YTXT: Description for the debug option to record log files --> - <string name="debugging_debuglog_intro_explanation">"This option logs the app’s behavior in a text file. If this option is activated before an error occurs, you can make this report available to help the developers solve the problem.\nIf you leave this option activated, it will result in high storage requirements. If you deactivate the option, the error report is deleted."</string> + <!-- XHED: Headline for current status of debug log screen --> + <string name="debugging_debuglog_current_status_title">"Fehleranalyse"</string> + <!-- YTXT: Description one for the debug option to record log files --> + <string name="debugging_debuglog_intro_explanation_section_one">"Um den technischen Support der App bei der Fehleranalyse zu unterstützen, können Sie einen Fehlerbericht der CWA aufzeichnen. Hierbei werden die einzelnen technischen Schritte und Ereignisse beim Ablauf der App detailliert aufgezeichnet. Den Fehlerbericht können Sie dann an den technischen Support senden und so helfen, Fehler zu erkennen und zu beheben."</string> + <!-- YTXT: Description two for the debug option to record log files --> + <string name="debugging_debuglog_intro_explanation_section_two">"Weitere Informationen finden Sie in den FAQ:\nFAQ zu den Fehlerberichten"</string> + <!-- XTXT: Debug Log screen increased risk level link label - HAS TO MATCH the link text above --> + <string name="debugging_debuglog_intro_explanation_section_two_link_label">"FAQ zu den Fehlerberichten"</string> + <!-- XTXT: Explains user about about debug log: URL, has to be "translated" into english (relevant for all languages except german) - https://www.coronawarn.app/en/faq/#further_details --> + <string name="debugging_debuglog_intro_explanation_section_two_faq_link">"https://www.coronawarn.app/en/faq/#error_log"</string> + <!-- YTXT: Title of ID History --> + <string name="debugging_debuglog_id_history_title">"ID History"</string> + <!-- YTXT: Description of ID History --> + <string name="debugging_debuglog_id_history_body">"IDs der bisher geteilten Fehleranalysen"</string> <!-- YTXT: Warning regarding downsides of recording a log file --> <string name="debugging_debuglog_intro_warning">"Please note that error reports may contain sensitive data (such as a test result or contact journal entries). Therefore, you should not share these error reports publicly."</string> <!-- XBUT: Button text to start the log recording --> <string name="debugging_debuglog_action_start_recording">"Start"</string> <!-- XBUT: Button text to stop the log recording --> - <string name="debugging_debuglog_action_stop_recording">"Delete"</string> + <string name="debugging_debuglog_action_stop_recording">"Stoppen und löschen"</string> <!-- XBUT: Button text to share the log recording --> - <string name="debugging_debuglog_action_share_log">"Share"</string> + <string name="debugging_debuglog_action_share_log">"Fehlerbericht senden"</string> + <!-- XBUT: Button text to locally store the log recording --> + <string name="debugging_debuglog_action_local_log_store">"Lokal speichern und fortsetzen"</string> <!-- YTXT: Status text if a debug log is being recorded --> <string name="debugging_debuglog_status_recording">"Recording Active"</string> <!-- YTXT: Status text if a debug log is not being recorded --> @@ -899,6 +913,14 @@ <!-- XHED: Title for native sharing dialog --> <string name="debugging_debuglog_sharing_dialog_title">"Share CWA Error Report"</string> + <string name="debugging_debuglog_privacy_card_title">"Datenschutz und Datensicherheit"</string> + <string name="debug_log_privacy_card_section_body_one">"Die Aufzeichnung des Fehlerberichts ist freiwillig."</string> + <string name="debug_log_privacy_card_container_section_two">"Auf den Fehlerbericht haben zunächst nur Sie Zugriff. Sie können im Anschluss entscheiden, ob Sie den Fehlerbericht an den technischen Support senden, ob Sie den Fehlerbericht zunächst auf Ihrem Smartphone speichern oder die Aufzeichnung stoppen und löschen wollen. Wenn Sie den Fehlerbericht zunächst lokal speichern, haben Sie die Möglichkeit, sich den Fehlerbericht selbst anzuschauen, bevor Sie diesen an den Support übermitteln."</string> + <string name="debug_log_privacy_card_container_section_three">"Der Fehlerbericht enthält sensible Informationen, zum Beispiel Angaben über Ihr Testergebnis oder das für Sie ermittelte Ansteckungsrisiko. Er enthält keine Informationen über die QR-Codes, die Sie bei der Testregistrierung verwendet haben, über Angaben, die Sie im Kontakt-Tagebuch erfasste haben oder Angaben zu Ihrer Identität."</string> + <string name="debug_log_privacy_card_container_section_four">"Wir empfehlen die Fehlerberichte nicht zu veröffentlichen und nicht per E-Mail zu versenden."</string> + <string name="debug_log_privacy_card_container_section_five">"Private Personen oder Unternehmen dürfen von Ihnen nicht die Weitergabe eines aufgezeichneten Fehlerberichtes verlangen."</string> + + <!-- #################################### Interoperability ###################################### --> diff --git a/Corona-Warn-App/src/main/res/values/styles.xml b/Corona-Warn-App/src/main/res/values/styles.xml index d1fc93e47..a8dcb7dc1 100644 --- a/Corona-Warn-App/src/main/res/values/styles.xml +++ b/Corona-Warn-App/src/main/res/values/styles.xml @@ -104,6 +104,11 @@ <item name="android:textColor">@color/button_text_color_emphasized</item> </style> + <style name="debugLogButton" parent="button"> + <item name="android:backgroundTint">@color/button_debug_log</item> + <item name="android:textColor">@color/button_text_color_emphasized</item> + </style> + <style name="contactDiaryPersonButton" parent="Widget.MaterialComponents.Button.OutlinedButton"> <item name="strokeColor">@color/button_contact_diary_person</item> <item name="strokeWidth">2dp</item> -- GitLab