From 2694ec1efb2e1512c735b27f8a9def0204eb44ee Mon Sep 17 00:00:00 2001 From: Matthias Urhahn <matthias.urhahn@sap.com> Date: Thu, 8 Oct 2020 16:27:40 +0200 Subject: [PATCH] Remove FromatterAccessibilityHelper.kt and replace with BindingAdapters to remove static app context access. (#1349) --- .../formatter/FromatterAccessibilityHelper.kt | 17 -------------- .../AccessibilityBindingAdapters.kt | 22 +++++++++++++++++++ .../src/main/res/layout/fragment_home.xml | 10 ++++----- .../main/res/layout/fragment_risk_details.xml | 8 +++---- .../fragment_submission_qr_code_scan.xml | 15 +++++-------- .../main/res/layout/include_button_icon.xml | 7 +++--- .../res/layout/include_dispatcher_card.xml | 5 ++--- .../layout/include_information_details.xml | 8 +++---- .../main/res/layout/include_onboarding.xml | 8 +++---- .../res/layout/include_submission_contact.xml | 15 +++++-------- .../res/layout/include_submission_done.xml | 15 +++++-------- .../res/layout/include_submission_intro.xml | 15 +++++-------- ...lude_submission_positive_other_warning.xml | 13 ++++++----- .../layout/include_tracing_status_card.xml | 2 -- .../include_tracing_status_card_location.xml | 2 -- 15 files changed, 75 insertions(+), 87 deletions(-) delete mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt create mode 100644 Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/bindingadapters/AccessibilityBindingAdapters.kt diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt deleted file mode 100644 index 987e0f5ba..000000000 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/formatter/FromatterAccessibilityHelper.kt +++ /dev/null @@ -1,17 +0,0 @@ -@file:JvmName("FormatterAccessibilityHelper") - -package de.rki.coronawarnapp.util.formatter - -import de.rki.coronawarnapp.CoronaWarnApplication -import de.rki.coronawarnapp.R - -fun formatSuffix(string: String?, suffix: Int): String { - val appContext = CoronaWarnApplication.getAppContext() - return if (string != null) { - "$string ${appContext.getString(suffix)}" - } else "" -} - -fun formatButton(string: String?): String = formatSuffix(string, R.string.suffix_button) - -fun formatImage(string: String?): String = formatSuffix(string, R.string.suffix_image) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/bindingadapters/AccessibilityBindingAdapters.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/bindingadapters/AccessibilityBindingAdapters.kt new file mode 100644 index 000000000..599e0181c --- /dev/null +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/ui/bindingadapters/AccessibilityBindingAdapters.kt @@ -0,0 +1,22 @@ +package de.rki.coronawarnapp.util.ui.bindingadapters + +import android.content.Context +import android.view.View +import android.widget.ImageView +import androidx.annotation.StringRes +import androidx.databinding.BindingAdapter +import de.rki.coronawarnapp.R + +private fun formatSuffix(context: Context, prefix: String, @StringRes suffix: Int): String { + return "$prefix ${context.getString(suffix)}" +} + +@BindingAdapter("cwaContentDescription") +fun ImageView.setCWAContentDescription(description: String) { + contentDescription = formatSuffix(context, description, R.string.suffix_image) +} + +@BindingAdapter("cwaContentDescription") +fun View.setCWAContentDescription(description: String) { + contentDescription = formatSuffix(context, description, R.string.suffix_button) +} diff --git a/Corona-Warn-App/src/main/res/layout/fragment_home.xml b/Corona-Warn-App/src/main/res/layout/fragment_home.xml index d0330cb93..ab99e81ef 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_home.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_home.xml @@ -1,7 +1,8 @@ <?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" - xmlns:tools="http://schemas.android.com/tools"> + xmlns:tools="http://schemas.android.com/tools" + xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> @@ -9,8 +10,6 @@ <import type="de.rki.coronawarnapp.util.formatter.FormatterSubmissionHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="submissionViewModel" type="de.rki.coronawarnapp.ui.viewmodel.SubmissionViewModel" /> @@ -50,14 +49,15 @@ android:id="@+id/main_header_logo" android:layout_width="0dp" android:layout_height="match_parent" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/accessibility_logo)}" + bind:cwaContentDescription="@{@string/accessibility_logo}" android:scaleType="fitStart" android:src="@drawable/ic_main_header" android:focusable="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/main_header_share" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" /> <include android:id="@+id/main_header_share" diff --git a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml index a28df3528..11ebeec82 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_risk_details.xml @@ -1,6 +1,7 @@ <?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" + xmlns:bind="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> @@ -9,8 +10,6 @@ <import type="de.rki.coronawarnapp.util.formatter.FormatterRiskHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <import type="android.view.View" /> <variable @@ -51,12 +50,13 @@ style="@style/icon" android:layout_width="@dimen/icon_size_button" android:layout_height="@dimen/icon_size_button" - android:contentDescription="@{FormatterAccessibilityHelper.formatButton(@string/accessibility_back)}" + bind:cwaContentDescription="@{@string/accessibility_back}" android:src="@{@drawable/ic_close}" android:tint="@{FormatterRiskHelper.formatStableTextColor(tracingViewModel.riskLevel)}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml index f39dd6998..dfa553e43 100644 --- a/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml +++ b/Corona-Warn-App/src/main/res/layout/fragment_submission_qr_code_scan.xml @@ -1,12 +1,8 @@ <?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"> - - <data> - - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - - </data> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/submission_qr_code_scan_container" @@ -74,12 +70,13 @@ style="@style/iconStable" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/accessibility_close)" + bind:cwaContentDescription="@{@string/accessibility_close}" android:src="@drawable/ic_close" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" /> </androidx.constraintlayout.widget.ConstraintLayout> diff --git a/Corona-Warn-App/src/main/res/layout/include_button_icon.xml b/Corona-Warn-App/src/main/res/layout/include_button_icon.xml index f98fe4793..0b3ddec16 100644 --- a/Corona-Warn-App/src/main/res/layout/include_button_icon.xml +++ b/Corona-Warn-App/src/main/res/layout/include_button_icon.xml @@ -1,13 +1,12 @@ <?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"> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="icon" type="android.graphics.drawable.Drawable" /> @@ -21,7 +20,7 @@ <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/button_icon" style="@style/buttonIcon" - android:contentDescription="@{FormatterAccessibilityHelper.formatButton(iconDescription)}" + bind:cwaContentDescription="@{iconDescription}" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintStart_toStartOf="parent" diff --git a/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml b/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml index d0a348e06..5135e6303 100644 --- a/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml +++ b/Corona-Warn-App/src/main/res/layout/include_dispatcher_card.xml @@ -1,12 +1,11 @@ <?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" + xmlns:bind="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="headline" type="String" /> @@ -66,7 +65,7 @@ android:layout_marginEnd="@dimen/spacing_small" android:layout_marginBottom="@dimen/spacing_normal" android:text="@{body}" - android:contentDescription="@{FormatterAccessibilityHelper.formatButton(body)}" + bind:cwaContentDescription="@{body}" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/dispatcher_card_illustration" app:layout_constraintStart_toStartOf="parent" diff --git a/Corona-Warn-App/src/main/res/layout/include_information_details.xml b/Corona-Warn-App/src/main/res/layout/include_information_details.xml index 4a9a7050e..fefe19b40 100644 --- a/Corona-Warn-App/src/main/res/layout/include_information_details.xml +++ b/Corona-Warn-App/src/main/res/layout/include_information_details.xml @@ -1,5 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:bind="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> @@ -7,8 +8,6 @@ <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="illustration" type="android.graphics.drawable.Drawable" /> @@ -34,13 +33,14 @@ android:id="@+id/information_details_header_illustration" android:layout_width="0dp" android:layout_height="wrap_content" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(illustrationDescription)}" + bind:cwaContentDescription="@{illustrationDescription}" android:focusable="true" android:src="@{illustration}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - tools:src="@drawable/ic_illustration_tracing_on" /> + tools:src="@drawable/ic_illustration_tracing_on" + tools:ignore="ContentDescription" /> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" diff --git a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml index 148009f3a..c3d9ad1d2 100644 --- a/Corona-Warn-App/src/main/res/layout/include_onboarding.xml +++ b/Corona-Warn-App/src/main/res/layout/include_onboarding.xml @@ -1,14 +1,13 @@ <?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" + xmlns:bind="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="illustration" type="android.graphics.drawable.Drawable" /> @@ -79,13 +78,14 @@ android:id="@+id/onboarding_illustration" android:layout_width="0dp" android:layout_height="wrap_content" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(illustrationDescription)}" + bind:cwaContentDescription="@{illustrationDescription}" android:focusable="true" android:src="@{illustration}" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" - tools:src="@drawable/ic_illustration_together" /> + tools:src="@drawable/ic_illustration_together" + tools:ignore="ContentDescription" /> <TextView android:id="@+id/onboarding_headline" diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml b/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml index bed4b0c4f..c346d7fa9 100644 --- a/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml +++ b/Corona-Warn-App/src/main/res/layout/include_submission_contact.xml @@ -1,12 +1,8 @@ <?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"> - - <data> - - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - - </data> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> <ScrollView android:layout_width="match_parent" @@ -21,11 +17,12 @@ android:layout_width="@dimen/match_constraint" android:layout_height="wrap_content" android:src="@drawable/ic_submission_illustration_hotline" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/information_contact_illustration_description)}" android:focusable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + bind:cwaContentDescription="@{@string/information_contact_illustration_description}" + tools:ignore="ContentDescription" /> <TextView android:id="@+id/submission_contact_body" diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_done.xml b/Corona-Warn-App/src/main/res/layout/include_submission_done.xml index 811b74fdb..e4105a8df 100644 --- a/Corona-Warn-App/src/main/res/layout/include_submission_done.xml +++ b/Corona-Warn-App/src/main/res/layout/include_submission_done.xml @@ -1,12 +1,8 @@ <?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"> - - <data> - - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - - </data> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> <ScrollView android:layout_width="match_parent" @@ -21,12 +17,13 @@ android:id="@+id/submission_done_hero_illustration" android:layout_width="@dimen/match_constraint" android:layout_height="wrap_content" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/submission_done_illustration_description)}" android:focusable="true" android:src="@drawable/ic_submission_illustration_thanks" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + bind:cwaContentDescription="@{@string/submission_done_illustration_description}" + tools:ignore="ContentDescription" /> <TextView android:id="@+id/submission_done_headline" diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml b/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml index 7bcfd2f39..b9b88c430 100644 --- a/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml +++ b/Corona-Warn-App/src/main/res/layout/include_submission_intro.xml @@ -1,12 +1,8 @@ <?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"> - - <data> - - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - - </data> + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools"> <ScrollView android:layout_width="match_parent" @@ -18,14 +14,15 @@ <ImageView android:id="@+id/submission_intro_hero_illustration" - android:contentDescription="@{FormatterAccessibilityHelper.formatImage(@string/submission_intro_illustration_description)}" android:layout_width="@dimen/match_constraint" android:layout_height="wrap_content" android:src="@drawable/ic_illustration_test" android:focusable="true" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + bind:cwaContentDescription="@{@string/submission_intro_illustration_description}" + tools:ignore="ContentDescription" /> <TextView android:id="@+id/submission_intro_headline" diff --git a/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml b/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml index 2786f6c2d..a3cc144f4 100644 --- a/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml +++ b/Corona-Warn-App/src/main/res/layout/include_submission_positive_other_warning.xml @@ -1,11 +1,11 @@ <?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"> +<layout xmlns:tools="http://schemas.android.com/tools" + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:bind="http://schemas.android.com/apk/res-auto"> <data> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <variable name="countryData" type="java.util.List<de.rki.coronawarnapp.ui.Country>" /> @@ -24,11 +24,12 @@ android:id="@+id/submission_positive_other_warning_hero_illustration" android:layout_width="@dimen/match_constraint" android:layout_height="wrap_content" - android:contentDescription="@{FormatterAccessibilityHelper.formatButton(@string/submission_positive_other_illustration_description)}" + bind:cwaContentDescription="@{@string/submission_positive_other_illustration_description}" android:src="@drawable/ic_submission_illustration_other_warning" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" /> + app:layout_constraintTop_toTopOf="parent" + tools:ignore="ContentDescription" /> <TextView android:id="@+id/submission_positive_other_warning_headline" diff --git a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml index e28b2fc32..349af5a58 100644 --- a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml +++ b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card.xml @@ -6,8 +6,6 @@ <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <import type="android.view.View" /> <variable diff --git a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card_location.xml b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card_location.xml index e7a794e02..794c8e717 100644 --- a/Corona-Warn-App/src/main/res/layout/include_tracing_status_card_location.xml +++ b/Corona-Warn-App/src/main/res/layout/include_tracing_status_card_location.xml @@ -6,8 +6,6 @@ <import type="de.rki.coronawarnapp.util.formatter.FormatterHelper" /> - <import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" /> - <import type="android.view.View" /> <variable -- GitLab