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