diff options
| author | Linus Färnstrand <linus@mullvad.net> | 2019-09-13 13:24:07 +0200 |
|---|---|---|
| committer | Linus Färnstrand <linus@mullvad.net> | 2019-09-13 13:24:07 +0200 |
| commit | f664e5e245804754b15a086d810c81a2f376da0d (patch) | |
| tree | 814428191d3776033c87f449030359e8cb1666eb /android | |
| parent | 40de3386b2c98369d76cbd12e194c931bc17bd87 (diff) | |
| parent | e5511a373c937b28009e7cebada3249af2e820ed (diff) | |
| download | mullvadvpn-f664e5e245804754b15a086d810c81a2f376da0d.tar.xz mullvadvpn-f664e5e245804754b15a086d810c81a2f376da0d.zip | |
Merge branch 'relay-list-v3'
Diffstat (limited to 'android')
8 files changed, 38 insertions, 4 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt index 4173af782b..b5d582e18d 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Relay.kt @@ -1,4 +1,4 @@ package net.mullvad.mullvadvpn.model -data class Relay(val hostname: String, val hasWireguardTunnels: Boolean) { +data class Relay(val hostname: String, val hasWireguardTunnels: Boolean, val active: Boolean) { } diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt index 8620a64963..db8afade98 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/Relay.kt @@ -2,7 +2,11 @@ package net.mullvad.mullvadvpn.relaylist import net.mullvad.mullvadvpn.model.LocationConstraint -data class Relay(val city: RelayCity, override val name: String) : RelayItem { +data class Relay( + val city: RelayCity, + override val name: String, + override val active: Boolean +) : RelayItem { override val code = name override val type = RelayItemType.Relay override val location = LocationConstraint.Hostname(city.country.code, city.code, name) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt index 9d4ba65ccf..70b2ca2d0a 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCity.kt @@ -12,6 +12,9 @@ class RelayCity( override val type = RelayItemType.City override val location = LocationConstraint.City(country.code, code) + override val active + get() = relays.any { relay -> relay.active } + override val hasChildren get() = relays.size > 1 diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt index fb2aacab33..f5d5a867c3 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayCountry.kt @@ -11,6 +11,9 @@ class RelayCountry( override val type = RelayItemType.Country override val location = LocationConstraint.Country(code) + override val active + get() = cities.any { city -> city.active } + override val hasChildren get() = getRelayCount() > 1 diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt index d55378fbd4..e5f28acee6 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItem.kt @@ -7,6 +7,7 @@ interface RelayItem { val name: String val code: String val location: LocationConstraint + val active: Boolean val hasChildren: Boolean val visibleChildCount: Int diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt index e753d3af5a..275e6f5dfa 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayItemHolder.kt @@ -3,6 +3,7 @@ package net.mullvad.mullvadvpn.relaylist import android.support.v7.widget.RecyclerView.ViewHolder import android.view.View import android.widget.ImageButton +import android.widget.ImageView import android.widget.TextView import net.mullvad.mullvadvpn.R @@ -14,7 +15,7 @@ class RelayItemHolder( ) : ViewHolder(view) { private val name: TextView = view.findViewById(R.id.name) private val chevron: ImageButton = view.findViewById(R.id.chevron) - private val relayActive: View = view.findViewById(R.id.relay_active) + private val relayActive: ImageView = view.findViewById(R.id.relay_active) private val selectedIcon: View = view.findViewById(R.id.selected) private val countryColor = view.context.getColor(R.color.blue) @@ -49,14 +50,28 @@ class RelayItemHolder( if (item != null) { name.text = item.name + if (item.active) { + name.alpha = 1.0F + } else { + name.alpha = 0.5F + } + if (selected) { relayActive.visibility = View.INVISIBLE selectedIcon.visibility = View.VISIBLE } else { relayActive.visibility = View.VISIBLE selectedIcon.visibility = View.INVISIBLE + + if (item.active) { + relayActive.setImageResource(R.drawable.icon_relay_active) + } else { + relayActive.setImageResource(R.drawable.icon_relay_inactive) + } } + view.setEnabled(item.active) + when (item.type) { RelayItemType.Country -> setViewStyle(countryColor, countryPadding) RelayItemType.City -> setViewStyle(cityColor, cityPadding) diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt index 26cd7ffa58..7d09e421db 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayList.kt @@ -19,7 +19,7 @@ class RelayList { val validCityRelays = city.relays.filter { relay -> relay.hasWireguardTunnels } for (relay in validCityRelays) { - relays.add(Relay(relayCity, relay.hostname)) + relays.add(Relay(relayCity, relay.hostname, relay.active)) } if (relays.isNotEmpty()) { diff --git a/android/src/main/res/drawable/icon_relay_inactive.xml b/android/src/main/res/drawable/icon_relay_inactive.xml new file mode 100644 index 0000000000..79818e106f --- /dev/null +++ b/android/src/main/res/drawable/icon_relay_inactive.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape + xmlns:android="http://schemas.android.com/apk/res/android" + android:shape="oval" + > + <solid android:color="@color/red"/> + <size android:width="16dp" android:height="16dp"/> +</shape> |
