summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt27
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt3
2 files changed, 27 insertions, 3 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt
index a430ab84c7..b66a170c32 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectActionButton.kt
@@ -3,12 +3,35 @@ package net.mullvad.mullvadvpn
import android.view.View
import android.widget.Button
+import net.mullvad.mullvadvpn.model.KeygenEvent
import net.mullvad.mullvadvpn.model.TunnelState
class ConnectActionButton(val parentView: View) {
private val button: Button = parentView.findViewById(R.id.action_button)
- var state: TunnelState = TunnelState.Disconnected()
+ private var enabled = true
+ set(value) {
+ if (field != value) {
+ field = value
+
+ button.setEnabled(value)
+ button.setAlpha(if (value) 1.0F else 0.5F)
+ }
+ }
+
+ var keyState: KeygenEvent? = null
+ set(value) {
+ when (value) {
+ null -> enabled = true
+ is KeygenEvent.NewKey -> enabled = true
+ is KeygenEvent.TooManyKeys -> enabled = false
+ is KeygenEvent.GenerationFailure -> enabled = false
+ }
+
+ field = value
+ }
+
+ var tunnelState: TunnelState = TunnelState.Disconnected()
set(value) {
when (value) {
is TunnelState.Disconnected -> disconnected()
@@ -30,7 +53,7 @@ class ConnectActionButton(val parentView: View) {
}
private fun action() {
- when (state) {
+ when (tunnelState) {
is TunnelState.Disconnected -> onConnect?.invoke()
is TunnelState.Disconnecting -> onConnect?.invoke()
is TunnelState.Connecting -> onCancel?.invoke()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
index 1a3d2bbeae..a5f14cfa92 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ConnectFragment.kt
@@ -120,7 +120,7 @@ class ConnectFragment : Fragment() {
locationInfoCache.state = realState
headerBar.setState(realState)
- actionButton.state = uiState
+ actionButton.tunnelState = uiState
switchLocationButton.state = uiState
notificationBanner.tunnelState = uiState
status.setState(uiState)
@@ -128,6 +128,7 @@ class ConnectFragment : Fragment() {
private fun updateKeyStatus(keyStatus: KeygenEvent?) = GlobalScope.launch(Dispatchers.Main) {
notificationBanner.keyState = keyStatus
+ actionButton.keyState = keyStatus
}
private fun openSwitchLocationScreen() {