summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-08 21:07:23 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2021-02-11 17:51:24 +0000
commit13263d0857321c5106190435a67eb32155d5a870 (patch)
treeeb235e5217bcc4ece21f9536e61853a85c49a468 /android/src
parentc73f57d03f7b0afc8ea49b86ccb04c2673a80fa7 (diff)
downloadmullvadvpn-13263d0857321c5106190435a67eb32155d5a870.tar.xz
mullvadvpn-13263d0857321c5106190435a67eb32155d5a870.zip
Create new `UrlCell` widget
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/UrlCell.kt53
1 files changed, 53 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/UrlCell.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/UrlCell.kt
new file mode 100644
index 0000000000..50727f74a6
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/UrlCell.kt
@@ -0,0 +1,53 @@
+package net.mullvad.mullvadvpn.ui.widget
+
+import android.content.Context
+import android.content.Intent
+import android.net.Uri
+import android.util.AttributeSet
+import android.widget.ImageView
+import net.mullvad.mullvadvpn.R
+
+open class UrlCell : Cell {
+ private val externalLinkIcon = ImageView(context).apply {
+ layoutParams = LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, 0.0f)
+ alpha = 0.6f
+
+ setImageResource(R.drawable.icon_extlink)
+ }
+
+ var url: Uri? = null
+
+ @JvmOverloads
+ constructor(
+ context: Context,
+ attributes: AttributeSet? = null,
+ defaultStyleAttribute: Int = 0,
+ defaultStyleResource: Int = 0
+ ) : super(context, attributes, defaultStyleAttribute, defaultStyleResource) {
+ loadAttributes(attributes)
+
+ cell.addView(externalLinkIcon)
+
+ onClickListener = { openLink() }
+ }
+
+ private fun loadAttributes(attributes: AttributeSet?) {
+ context.theme.obtainStyledAttributes(attributes, R.styleable.Url, 0, 0).apply {
+ try {
+ getString(R.styleable.Url_url)?.let { urlString ->
+ url = Uri.parse(urlString)
+ }
+ } finally {
+ recycle()
+ }
+ }
+ }
+
+ private fun openLink() {
+ url?.let { url ->
+ val intent = Intent(Intent.ACTION_VIEW, url)
+
+ context.startActivity(intent)
+ }
+ }
+}