summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt40
-rw-r--r--android/src/main/res/drawable/icon_fail.xml17
-rw-r--r--android/src/main/res/layout/login.xml7
-rw-r--r--android/src/main/res/values/colors.xml1
-rw-r--r--android/src/main/res/values/strings.xml2
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>