diff options
Diffstat (limited to 'android')
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/LaunchFragment.kt | 70 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt | 2 | ||||
| -rw-r--r-- | android/src/main/res/drawable-hdpi/launch_logo.png | bin | 0 -> 15280 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-mdpi/launch_logo.png | bin | 0 -> 9451 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xhdpi/launch_logo.png | bin | 0 -> 21077 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xxhdpi/launch_logo.png | bin | 0 -> 32823 bytes | |||
| -rw-r--r-- | android/src/main/res/drawable-xxxhdpi/launch_logo.png | bin | 0 -> 45026 bytes | |||
| -rw-r--r-- | android/src/main/res/layout/launch.xml | 37 | ||||
| -rw-r--r-- | android/src/main/res/values/strings.xml | 2 |
9 files changed, 110 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/LaunchFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LaunchFragment.kt new file mode 100644 index 0000000000..043c8efe15 --- /dev/null +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LaunchFragment.kt @@ -0,0 +1,70 @@ +package net.mullvad.mullvadvpn + +import kotlinx.coroutines.async +import kotlinx.coroutines.launch +import kotlinx.coroutines.Deferred +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.Job + +import android.content.Context +import android.os.Bundle +import android.support.v4.app.Fragment +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup + +class LaunchFragment : Fragment() { + private lateinit var accountTokenCheckJob: Deferred<Boolean> + private lateinit var advanceToNextScreenJob: Job + + override fun onAttach(context: Context) { + super.onAttach(context) + accountTokenCheckJob = checkForAccountToken() + advanceToNextScreenJob = advanceToNextScreen() + } + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ) = inflater.inflate(R.layout.launch, container, false) + + override fun onDestroy() { + accountTokenCheckJob.cancel() + advanceToNextScreenJob.cancel() + super.onDestroy() + } + + private fun checkForAccountToken() = GlobalScope.async(Dispatchers.Default) { + val parentActivity = activity as MainActivity + val daemon = parentActivity.asyncDaemon.await() + val settings = daemon.getSettings() + + settings.accountToken != null + } + + private fun advanceToNextScreen() = GlobalScope.launch(Dispatchers.Main) { + val accountTokenIsSet = accountTokenCheckJob.await() + + if (accountTokenIsSet) { + advanceToConnectScreen() + } else { + advanceToLoginScreen() + } + } + + private fun advanceToLoginScreen() { + fragmentManager?.beginTransaction()?.apply { + replace(R.id.main_fragment, LoginFragment()) + commit() + } + } + + private fun advanceToConnectScreen() { + fragmentManager?.beginTransaction()?.apply { + replace(R.id.main_fragment, ConnectFragment()) + commit() + } + } +} diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt index b751bf63d9..f9eb6d9a29 100644 --- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt +++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt @@ -38,7 +38,7 @@ class MainActivity : FragmentActivity() { private fun addInitialFragment() { supportFragmentManager?.beginTransaction()?.apply { - add(R.id.main_fragment, LoginFragment()) + add(R.id.main_fragment, LaunchFragment()) commit() } } diff --git a/android/src/main/res/drawable-hdpi/launch_logo.png b/android/src/main/res/drawable-hdpi/launch_logo.png Binary files differnew file mode 100644 index 0000000000..542ba7986f --- /dev/null +++ b/android/src/main/res/drawable-hdpi/launch_logo.png diff --git a/android/src/main/res/drawable-mdpi/launch_logo.png b/android/src/main/res/drawable-mdpi/launch_logo.png Binary files differnew file mode 100644 index 0000000000..2ee89ae828 --- /dev/null +++ b/android/src/main/res/drawable-mdpi/launch_logo.png diff --git a/android/src/main/res/drawable-xhdpi/launch_logo.png b/android/src/main/res/drawable-xhdpi/launch_logo.png Binary files differnew file mode 100644 index 0000000000..c68c053832 --- /dev/null +++ b/android/src/main/res/drawable-xhdpi/launch_logo.png diff --git a/android/src/main/res/drawable-xxhdpi/launch_logo.png b/android/src/main/res/drawable-xxhdpi/launch_logo.png Binary files differnew file mode 100644 index 0000000000..1604009282 --- /dev/null +++ b/android/src/main/res/drawable-xxhdpi/launch_logo.png diff --git a/android/src/main/res/drawable-xxxhdpi/launch_logo.png b/android/src/main/res/drawable-xxxhdpi/launch_logo.png Binary files differnew file mode 100644 index 0000000000..8a72edd366 --- /dev/null +++ b/android/src/main/res/drawable-xxxhdpi/launch_logo.png diff --git a/android/src/main/res/layout/launch.xml b/android/src/main/res/layout/launch.xml new file mode 100644 index 0000000000..d8cf918727 --- /dev/null +++ b/android/src/main/res/layout/launch.xml @@ -0,0 +1,37 @@ +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + android:layout_width="match_parent" + android:layout_height="match_parent" + > + <LinearLayout + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_gravity="center" + android:orientation="vertical" + android:gravity="center" + > + <ImageView + android:layout_width="120dp" + android:layout_height="120dp" + android:layout_marginBottom="4dp" + android:src="@drawable/launch_logo" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginBottom="4dp" + android:textColor="@color/white60" + android:textSize="24sp" + android:textStyle="bold" + android:text="@string/app_name" + android:textAllCaps="true" + /> + <TextView + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/white40" + android:textSize="14sp" + android:text="@string/connecting_to_daemon" + /> + </LinearLayout> +</FrameLayout> diff --git a/android/src/main/res/values/strings.xml b/android/src/main/res/values/strings.xml index 24f8c9867e..4a3d46b2c8 100644 --- a/android/src/main/res/values/strings.xml +++ b/android/src/main/res/values/strings.xml @@ -1,6 +1,8 @@ <resources> <string name="app_name">Mullvad VPN</string> + <string name="connecting_to_daemon">Connecting to daemon...</string> + <string name="login_title">Login</string> <string name="login_description">Enter your account number</string> <string name="login_hint">0000 0000 0000 0000</string> |
