diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-03 20:28:13 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-04 13:26:02 +0000 |
| commit | 011eb4c4af673f6fb34a7283b12cb43d98f92f73 (patch) | |
| tree | 8bf5146133b0466b067895ff9c0d4c445c6858c7 /android | |
| parent | 08f6cbbf96ee51ec5aaab387b76a0434a24bad7d (diff) | |
| download | mullvadvpn-011eb4c4af673f6fb34a7283b12cb43d98f92f73.tar.xz mullvadvpn-011eb4c4af673f6fb34a7283b12cb43d98f92f73.zip | |
Scroll to important views during login steps
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/LoginFragment.kt | 20 | ||||
| -rw-r--r-- | android/src/main/res/layout/login.xml | 1 |
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"> |
