From 833b7a80c5bc797fb10492fee531cfdb74a6bc67 Mon Sep 17 00:00:00 2001
From: harambasicluka <64483219+harambasicluka@users.noreply.github.com>
Date: Fri, 19 Jun 2020 14:34:45 +0200
Subject: [PATCH] added clickable links to DialogHelper.kt (#646)

Co-authored-by: marcmuschko <marc.muschko@sap.com>
---
 .../de/rki/coronawarnapp/util/DialogHelper.kt | 27 ++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
index 70bcbddee..7f3bdd2af 100644
--- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
+++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/DialogHelper.kt
@@ -1,7 +1,13 @@
 package de.rki.coronawarnapp.util
 
 import android.app.Activity
+import android.app.Activity.RESULT_OK
+import android.text.SpannableString
+import android.text.method.LinkMovementMethod
+import android.text.util.Linkify
+import android.widget.TextView
 import androidx.appcompat.app.AlertDialog
+import de.rki.coronawarnapp.R
 
 object DialogHelper {
 
@@ -59,11 +65,12 @@ object DialogHelper {
     fun showDialog(
         dialogInstance: DialogInstance
     ): AlertDialog {
+        val message = getMessage(dialogInstance.activity, dialogInstance.message)
         val alertDialog: AlertDialog = dialogInstance.activity.let {
             val builder = AlertDialog.Builder(it)
             builder.apply {
                 setTitle(dialogInstance.title)
-                setMessage(dialogInstance.message)
+                setView(message)
                 setCancelable(dialogInstance.cancelable ?: true)
                 setPositiveButton(
                     dialogInstance.positiveButton
@@ -83,4 +90,22 @@ object DialogHelper {
         alertDialog.show()
         return alertDialog
     }
+
+    private fun getMessage(activity: Activity, message: String?): TextView {
+        // create spannable and add links
+        val spannable = SpannableString(message)
+        Linkify.addLinks(spannable, Linkify.WEB_URLS)
+        // get padding for all sides
+        val paddingStartEnd = activity.resources.getDimension(R.dimen.spacing_normal).toInt()
+        val paddingLeftRight = activity.resources.getDimension(R.dimen.spacing_small).toInt()
+        // create a textview with clickable links from the spannable
+        val textView = TextView(activity)
+        textView.text = spannable
+        textView.autoLinkMask = RESULT_OK
+        textView.movementMethod = LinkMovementMethod.getInstance()
+        textView.setPadding(paddingStartEnd, paddingLeftRight, paddingStartEnd, paddingLeftRight)
+        textView.setTextAppearance(R.style.body1)
+        textView.setLinkTextColor(activity.getColorStateList(R.color.button_primary))
+        return textView
+    }
 }
-- 
GitLab