summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-08-31 14:17:43 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-09-02 13:15:27 +0000
commit2c15eca7ec1585af80903342a5d0a6d3ccedee98 (patch)
tree182b7002d38da6f7fbdafdd429dd99029cd0b570 /android
parent037b816157ebc07dc09023fe22e6688b2af30685 (diff)
downloadmullvadvpn-2c15eca7ec1585af80903342a5d0a6d3ccedee98.tar.xz
mullvadvpn-2c15eca7ec1585af80903342a5d0a6d3ccedee98.zip
Move input view management to the widget
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountInputController.kt29
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt26
2 files changed, 28 insertions, 27 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountInputController.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountInputController.kt
index ce18cec31b..9698e671de 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountInputController.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/AccountInputController.kt
@@ -16,10 +16,7 @@ import net.mullvad.mullvadvpn.ui.widget.AccountInput
class AccountInputController(val parentView: View, context: Context) {
private val disabledBackgroundColor = context.getColor(R.color.white20)
- private val disabledTextColor = context.getColor(R.color.white)
private val enabledBackgroundColor = context.getColor(R.color.white)
- private val enabledTextColor = context.getColor(R.color.blue)
- private val errorTextColor = context.getColor(R.color.red)
private var inputHasFocus by observable(false) { _, _, hasFocus ->
updateBorder()
@@ -37,7 +34,7 @@ class AccountInputController(val parentView: View, context: Context) {
newInput.loginState = newState
when (newState) {
- LoginState.Initial -> initialState()
+ LoginState.Initial -> {}
LoginState.InProgress -> loggingInState()
LoginState.Success -> successState()
LoginState.Failure -> failureState()
@@ -87,37 +84,15 @@ class AccountInputController(val parentView: View, context: Context) {
container.setOnClickListener { shouldShowAccountHistory = true }
}
- private fun initialState() {
- input.apply {
- setTextColor(enabledTextColor)
- setEnabled(true)
- visibility = View.VISIBLE
- }
- }
-
private fun loggingInState() {
- input.apply {
- setTextColor(disabledTextColor)
- setEnabled(false)
- visibility = View.VISIBLE
- clearFocus()
- }
accountHistoryList.visibility = View.INVISIBLE
}
private fun successState() {
- input.visibility = View.GONE
container.visibility = View.INVISIBLE
}
private fun failureState() {
- input.apply {
- findFocus()
- setTextColor(errorTextColor)
- setEnabled(true)
- visibility = View.VISIBLE
- }
-
usingErrorColor = true
}
@@ -162,7 +137,7 @@ class AccountInputController(val parentView: View, context: Context) {
private fun leaveErrorState() {
if (usingErrorColor) {
- input.setTextColor(enabledTextColor)
+ newInput.loginState = LoginState.Initial
usingErrorColor = false
}
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt
index 0bb352dcfd..64bad94b5d 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/widget/AccountInput.kt
@@ -17,6 +17,10 @@ import net.mullvad.mullvadvpn.ui.LoginState
const val MIN_ACCOUNT_TOKEN_LENGTH = 10
class AccountInput : LinearLayout {
+ private val disabledTextColor = context.getColor(R.color.white)
+ private val enabledTextColor = context.getColor(R.color.blue)
+ private val errorTextColor = context.getColor(R.color.red)
+
private val container =
context.getSystemService(Context.LAYOUT_INFLATER_SERVICE).let { service ->
val inflater = service as LayoutInflater
@@ -78,11 +82,24 @@ class AccountInput : LinearLayout {
}
private fun initialState() {
+ input.apply {
+ setTextColor(enabledTextColor)
+ setEnabled(true)
+ visibility = View.VISIBLE
+ }
+
button.visibility = View.VISIBLE
setButtonEnabled(input.text.length >= MIN_ACCOUNT_TOKEN_LENGTH)
}
private fun loggingInState() {
+ input.apply {
+ setTextColor(disabledTextColor)
+ setEnabled(false)
+ visibility = View.VISIBLE
+ clearFocus()
+ }
+
button.visibility = View.GONE
setButtonEnabled(false)
}
@@ -90,11 +107,20 @@ class AccountInput : LinearLayout {
private fun successState() {
button.visibility = View.GONE
setButtonEnabled(false)
+
+ input.visibility = View.GONE
}
private fun failureState() {
button.visibility = View.VISIBLE
setButtonEnabled(false)
+
+ input.apply {
+ findFocus()
+ setTextColor(errorTextColor)
+ setEnabled(true)
+ visibility = View.VISIBLE
+ }
}
private fun setButtonEnabled(enabled: Boolean) {