summaryrefslogtreecommitdiffhomepage
path: root/android/src
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-03 20:28:13 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-04 13:26:02 +0000
commit011eb4c4af673f6fb34a7283b12cb43d98f92f73 (patch)
tree8bf5146133b0466b067895ff9c0d4c445c6858c7 /android/src
parent08f6cbbf96ee51ec5aaab387b76a0434a24bad7d (diff)
downloadmullvadvpn-011eb4c4af673f6fb34a7283b12cb43d98f92f73.tar.xz
mullvadvpn-011eb4c4af673f6fb34a7283b12cb43d98f92f73.zip
Scroll to important views during login steps
Diffstat (limited to 'android/src')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt20
-rw-r--r--android/src/main/res/layout/login.xml1
2 files changed, 21 insertions, 0 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
index fdec6efd12..de24fee6fc 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt
@@ -1,10 +1,12 @@
package net.mullvad.mullvadvpn.ui
+import android.graphics.Rect
import android.os.Bundle
import android.support.v4.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import android.widget.ScrollView
import android.widget.TextView
import kotlinx.coroutines.CompletableDeferred
import kotlinx.coroutines.delay
@@ -27,6 +29,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
private lateinit var loggedInStatus: View
private lateinit var loginFailStatus: View
private lateinit var accountInput: AccountInput
+ private lateinit var scrollArea: ScrollView
private val loggedIn = CompletableDeferred<LoginResult>()
@@ -51,7 +54,10 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
view.findViewById<Button>(R.id.create_account)
.setOnClickAction("createAccount", jobTracker) { createAccount() }
+ scrollArea = view.findViewById(R.id.scroll_area)
+
fetchHistory()
+ scrollToShow(accountInput.input)
return view
}
@@ -72,6 +78,12 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
jobTracker.cancelJob("advanceToNextScreen")
}
+ private fun scrollToShow(view: View) {
+ val rectangle = Rect(0, 0, view.width, view.height)
+
+ scrollArea.requestChildRectangleOnScreen(view, rectangle, false)
+ }
+
private suspend fun createAccount() {
title.setText(R.string.logging_in_title)
subtitle.setText(R.string.creating_new_account)
@@ -82,6 +94,8 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
accountInput.state = LoginState.InProgress
+ scrollToShow(loggingInStatus)
+
val accountToken = jobTracker.runOnBackground {
daemon.createNewAccount()
}
@@ -103,6 +117,8 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
accountInput.state = LoginState.InProgress
+ scrollToShow(loggingInStatus)
+
performLogin(accountToken)
}
@@ -163,6 +179,8 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
loggedInStatus.visibility = View.VISIBLE
accountInput.state = LoginState.Success
+
+ scrollToShow(loggedInStatus)
}
private fun openNextScreen(fragment: Fragment) {
@@ -181,5 +199,7 @@ class LoginFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
loggedInStatus.visibility = View.GONE
accountInput.state = LoginState.Failure
+
+ scrollToShow(accountInput.input)
}
}
diff --git a/android/src/main/res/layout/login.xml b/android/src/main/res/layout/login.xml
index 954615195c..0c4cd93fdb 100644
--- a/android/src/main/res/layout/login.xml
+++ b/android/src/main/res/layout/login.xml
@@ -1,5 +1,6 @@
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:mullvad="http://schemas.android.com/apk/res-auto"
+ android:id="@+id/scroll_area"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true">