Skip to content
Snippets Groups Projects
Unverified Commit c3addf38 authored by harambasicluka's avatar harambasicluka Committed by GitHub
Browse files

Improve Explanation for usage of location services (EXPOSUREAPP-2384) (#1137)


* updates location text and activated autolink

* updated string

* own layout for location to set the url

* added fallback if label isn't found in string

Co-authored-by: default avatarchris-cwa <chris.cwa.sap@gmail.com>
parent c3a92047
No related branches found
No related tags found
No related merge requests found
......@@ -44,8 +44,6 @@ class InformationLegalFragment : Fragment() {
private fun setUpContactFormLinks() {
binding.informationLegalContactForm.informationLegalContactForm
.convertToHyperlink(getString(R.string.information_legal_subtitle_contact_url))
binding.informationLegalContactForm.informationLegalContactForm
.movementMethod = LinkMovementMethod.getInstance()
binding.informationLegalContactForm.informationLegalContactFormNonEnDe
.movementMethod = LinkMovementMethod.getInstance()
}
......
package de.rki.coronawarnapp.ui.view
import android.content.Context
import android.util.AttributeSet
import androidx.appcompat.widget.AppCompatTextView
import de.rki.coronawarnapp.R
import de.rki.coronawarnapp.util.setUrl
class LocationTracingStatusCardBodyTextView : AppCompatTextView {
constructor(context: Context?) : super(context) {
setUrl()
}
constructor(context: Context?, attrs: AttributeSet) : super(context, attrs) {
setUrl()
}
constructor(
context: Context?,
attrs: AttributeSet,
defStyleAttr: Int
) : super(context, attrs, defStyleAttr) {
setUrl()
}
private fun setUrl() {
setUrl(
R.string.settings_tracing_status_location_body,
"FAQ",
context.getString(R.string.settings_tracing_status_location_body_url)
)
}
}
......@@ -2,12 +2,55 @@ package de.rki.coronawarnapp.util
import android.text.SpannableString
import android.text.Spanned
import android.text.method.LinkMovementMethod
import android.text.style.URLSpan
import android.widget.TextView
import androidx.annotation.StringRes
fun TextView.convertToHyperlink(url: String) {
setText(
SpannableString(text).apply { setSpan(URLSpan(url), 0, length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) },
TextView.BufferType.SPANNABLE
)
movementMethod = LinkMovementMethod.getInstance()
}
fun TextView.setUrlText(@StringRes textRes: Int, url: String) {
context.getString(textRes, url).also {
val indexOf = it.indexOf(url)
setText(
SpannableString(it).apply {
setSpan(
URLSpan(url),
indexOf,
indexOf + url.length,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
},
TextView.BufferType.SPANNABLE
)
movementMethod = LinkMovementMethod.getInstance()
}
}
fun TextView.setUrl(@StringRes textRes: Int, label: String, url: String) {
context.getString(textRes).also {
val indexOf = it.indexOf(label)
if (indexOf > 0) {
setText(
SpannableString(it).apply {
setSpan(
URLSpan(url),
indexOf,
indexOf + label.length,
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE
)
},
TextView.BufferType.SPANNABLE
)
movementMethod = LinkMovementMethod.getInstance()
} else {
text = it
}
}
}
......@@ -87,11 +87,10 @@
<include
android:id="@+id/settings_tracing_status_location"
layout="@layout/include_tracing_status_card"
layout="@layout/include_tracing_status_card_location"
android:layout_width="@dimen/match_constraint"
android:layout_height="wrap_content"
android:visibility="@{FormatterSettingsHelper.formatTracingStatusVisibilityLocation(tracingViewModel.isTracingEnabled(), settingsViewModel.isBluetoothEnabled(), settingsViewModel.isLocationEnabled())}"
app:body="@{@string/settings_tracing_status_location_body}"
app:buttonText="@{@string/settings_tracing_status_location_button}"
app:headline="@{@string/settings_tracing_status_location_headline}"
app:icon="@{@drawable/ic_location}"
......
<?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.FormatterHelper" />
<import type="de.rki.coronawarnapp.util.formatter.FormatterAccessibilityHelper" />
<import type="android.view.View" />
<variable
name="tracingViewModel"
type="de.rki.coronawarnapp.ui.viewmodel.TracingViewModel" />
<variable
name="icon"
type="android.graphics.drawable.Drawable" />
<variable
name="headline"
type="String" />
<variable
name="buttonText"
type="String" />
</data>
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tracing_status_card"
style="@style/cardTracing"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:focusable="true">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/tracing_status_card_header"
android:layout_width="@dimen/match_constraint"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tracing_status_card_header_headline"
style="@style/headline6"
android:accessibilityHeading="true"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/spacing_small"
android:text="@{headline}"
android:contentDescription="@{headline}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tracing_status_card_header_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/tracing_status_card_header_icon"
android:layout_width="@dimen/icon_size_main_card_end"
android:layout_height="@dimen/icon_size_main_card_end"
android:importantForAccessibility="no"
android:focusable="false"
android:src="@{icon}"
android:visibility="@{FormatterHelper.formatVisibilityIcon(icon)}"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/tracing_status_card_header_headline"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<de.rki.coronawarnapp.ui.view.LocationTracingStatusCardBodyTextView
android:id="@+id/tracing_status_card_body"
style="@style/subtitle"
android:layout_width="@dimen/match_constraint"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_small"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tracing_status_card_header" />
<Button
android:id="@+id/tracing_status_card_button"
style="@style/buttonPrimary"
android:layout_width="@dimen/match_constraint"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/spacing_normal"
android:text="@{buttonText}"
android:visibility="@{FormatterHelper.formatVisibilityText(buttonText)}"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tracing_status_card_body" />
</androidx.constraintlayout.widget.ConstraintLayout>
</layout>
\ No newline at end of file
......@@ -541,7 +541,9 @@
<!--XHED : settings(tracing) - headline on card about the current status and what to do -->
<string name="settings_tracing_status_location_headline">"Standort-Verwendung erlauben"</string>
<!-- XTXT: settings(tracing) - explains user what to do on card if location is disabled -->
<string name="settings_tracing_status_location_body">"Auf Ihren Standort wird nicht zugegriffen. Die Standort-Erlaubnis wird benötigt, da Google bzw. Android diese für die Verwendung von Bluetooth voraussetzt."</string>
<string name="settings_tracing_status_location_body">"Aktivieren Sie die Standort-Dienste. Für die Abstandsberechnung benötigt Bluetooth Low Energy aktivierte Standort-Dienste, greift dabei aber nicht auf Ihren Standort zu. Weitere Informationen finden Sie in der FAQ."</string>
<!-- XTXT: settings(tracing) - explains user what to do on card if location is disabled: URL -->
<string name="settings_tracing_status_location_body_url">https://www.coronawarn.app/de/faq/#android_location</string>
<!-- XBUT: settings(tracing) - go to operating system settings button on card - location -->
<string name="settings_tracing_status_location_button">"Geräte-Einstellungen öffnen"</string>
<!--XHED : settings(tracing) - headline on card about the current status and what to do -->
......
......@@ -544,6 +544,8 @@
<string name="settings_tracing_status_location_headline">"Allow location access"</string>
<!-- XTXT: settings(tracing) - explains user what to do on card if location is disabled -->
<string name="settings_tracing_status_location_body">"Your location cannot be accessed. Google and/or Android requires access to your device\'s location to use Bluetooth."</string>
<!-- XTXT: settings(tracing) - explains user what to do on card if location is disabled: URL -->
<string name="settings_tracing_status_location_body_url"/>
<!-- XBUT: settings(tracing) - go to operating system settings button on card - location -->
<string name="settings_tracing_status_location_button">"Open Device Settings"</string>
<!--XHED : settings(tracing) - headline on card about the current status and what to do -->
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment