diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-12 12:12:36 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-03-13 12:38:40 +0000 |
| commit | 4a348edae0de2eeb88395e03adad06303244cfed (patch) | |
| tree | a6da10c1c836e64363a3c41e079283f1dd2b8603 /android | |
| parent | d05396d163b4d6a29eb44e30760a227d18702543 (diff) | |
| download | mullvadvpn-4a348edae0de2eeb88395e03adad06303244cfed.tar.xz mullvadvpn-4a348edae0de2eeb88395e03adad06303244cfed.zip | |
Implement "Login failed" screen
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt | 40 | ||||
| -rw-r--r-- | android/src/main/res/drawable/icon_fail.xml | 17 | ||||
| -rw-r--r-- | android/src/main/res/layout/login.xml | 7 | ||||
| -rw-r--r-- | android/src/main/res/values/colors.xml | 1 | ||||
| -rw-r--r-- | android/src/main/res/values/strings.xml | 2 |
5 files changed, 66 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt index 917289761b..7ff367596f 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt @@ -20,11 +20,16 @@ class LoginFragment : Fragment() { private lateinit var subtitle: TextView private lateinit var loggingInStatus: View private lateinit var loggedInStatus: View + private lateinit var loginFailStatus: View private lateinit var accountInput: EditText private lateinit var loginButton: ImageButton private var accountInputDisabledBackgroundColor: Int = 0 private var accountInputDisabledTextColor: Int = 0 + private var accountInputEnabledBackgroundColor: Int = 0 + private var accountInputEnabledTextColor: Int = 0 + private var accountInputErrorTextColor: Int = 0 + private var accountInputError = false override fun onCreateView( inflater: LayoutInflater, @@ -37,6 +42,7 @@ class LoginFragment : Fragment() { subtitle = view.findViewById(R.id.subtitle) loggingInStatus = view.findViewById(R.id.logging_in_status) loggedInStatus = view.findViewById(R.id.logged_in_status) + loginFailStatus = view.findViewById(R.id.login_fail_status) accountInput = view.findViewById(R.id.account_input) loginButton = view.findViewById(R.id.login_button) @@ -52,6 +58,9 @@ class LoginFragment : Fragment() { accountInputDisabledBackgroundColor = context.getColor(R.color.white20) accountInputDisabledTextColor = context.getColor(R.color.white) + accountInputEnabledBackgroundColor = context.getColor(R.color.white) + accountInputEnabledTextColor = context.getColor(R.color.blue) + accountInputErrorTextColor = context.getColor(R.color.red) } private fun setLoginButtonEnabled(enabled: Boolean) { @@ -68,11 +77,16 @@ class LoginFragment : Fragment() { title.setText(R.string.logging_in_title) subtitle.setText(R.string.logging_in_description) loggingInStatus.setVisibility(View.VISIBLE) + loginFailStatus.setVisibility(View.GONE) loginButton.setVisibility(View.GONE) disableAccountInput() // TODO: Actually log in - Handler().postDelayed(Runnable { loggedIn() }, 1000) + if ("1234567890".equals(accountInput.text.toString())) { + Handler().postDelayed(Runnable { loggedIn() }, 1000) + } else { + Handler().postDelayed(Runnable { loginFailure() }, 1000) + } } private fun loggedIn() { @@ -83,6 +97,26 @@ class LoginFragment : Fragment() { accountInput.setVisibility(View.GONE) } + private fun loginFailure() { + title.setText(R.string.login_fail_title) + subtitle.setText(R.string.login_fail_description) + loggingInStatus.setVisibility(View.GONE) + loginFailStatus.setVisibility(View.VISIBLE) + loginButton.setVisibility(View.VISIBLE) + loginButton.setEnabled(false) + setAccountInputToErrorState() + } + + private fun setAccountInputToErrorState() { + accountInput.apply { + setEnabled(true) + setBackgroundColor(accountInputEnabledBackgroundColor) + setTextColor(accountInputErrorTextColor) + } + + accountInputError = true + } + private fun disableAccountInput() { accountInput.apply { setEnabled(false) @@ -98,6 +132,10 @@ class LoginFragment : Fragment() { override fun afterTextChanged(text: Editable) { setLoginButtonEnabled(text.length >= MIN_ACCOUNT_TOKEN_LENGTH) + + if (accountInputError) { + accountInput.setTextColor(accountInputEnabledTextColor) + } } } } diff --git a/android/src/main/res/drawable/icon_fail.xml b/android/src/main/res/drawable/icon_fail.xml new file mode 100644 index 0000000000..61d9ad79d8 --- /dev/null +++ b/android/src/main/res/drawable/icon_fail.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> +<vector + xmlns:android="http://schemas.android.com/apk/res/android" + android:width="60dp" + android:height="60dp" + android:viewportWidth="60.0" + android:viewportHeight="60.0" + > + <group> + <path android:fillColor="#FFFFFF" + android:pathData="M8 30 a 22,22 0 1,0 44,0 a 22,22 0 1,0 -44,0 Z" + /> + <path android:fillColor="#D0021B" + android:pathData="M33.2371523,30 L41.337119,21.9033278 C42.2203329,21.020473 42.223948,19.5681264 41.3300331,18.6745751 C40.429886,17.774794 38.9899682,17.7778525 38.0999667,18.6674921 L30,26.7641643 L21.9000333,18.6674921 C21.0100318,17.7778525 19.570114,17.774794 18.6699669,18.6745751 C17.776052,19.5681264 17.7796671,21.020473 18.662881,21.9033278 L26.7628477,30 L18.662881,38.0966722 C17.7796671,38.979527 17.776052,40.4318736 18.6699669,41.3254249 C19.570114,42.225206 21.0100318,42.2221475 21.9000333,41.3325079 L30,33.2358357 L38.0999667,41.3325079 C38.9899682,42.2221475 40.429886,42.225206 41.3300331,41.3254249 C42.223948,40.4318736 42.2203329,38.979527 41.337119,38.0966722 L33.2371523,30 Z" + /> + </group> +</vector> diff --git a/android/src/main/res/layout/login.xml b/android/src/main/res/layout/login.xml index 2c911b679a..58e5b12e02 100644 --- a/android/src/main/res/layout/login.xml +++ b/android/src/main/res/layout/login.xml @@ -65,6 +65,13 @@ android:src="@drawable/icon_success" android:visibility="gone" /> + <ImageView android:id="@+id/login_fail_status" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_gravity="center" + android:src="@drawable/icon_fail" + android:visibility="gone" + /> </FrameLayout> <TextView android:id="@+id/title" diff --git a/android/src/main/res/values/colors.xml b/android/src/main/res/values/colors.xml index 345d37be8f..22a7e4108d 100644 --- a/android/src/main/res/values/colors.xml +++ b/android/src/main/res/values/colors.xml @@ -8,6 +8,7 @@ <color name="white60">#99FFFFFF</color> <color name="white20">#33FFFFFF</color> <color name="green">#44AD4D</color> + <color name="red">#D0021B</color> <color name="textInputBorder">#234161</color> </resources> diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml index f81bdcbc7c..59c207b71c 100644 --- a/android/src/main/res/values/strings.xml +++ b/android/src/main/res/values/strings.xml @@ -7,4 +7,6 @@ <string name="logging_in_title">Logging in</string> <string name="logging_in_description">Checking account number</string> <string name="logged_in_title">Login successful</string> + <string name="login_fail_title">Login failed</string> + <string name="login_fail_description">Invalid account number, try again</string> </resources> |
