summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-03-23 15:05:23 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-05-22 19:55:46 +0000
commitfd735631e62ccf5d375b454afb7a51ce6b7466e6 (patch)
tree367b9904455e3f52130ebb244bba1352d92d1ad8 /android
parentc89fd741e0a4f2b33fcdf52dcbdf0abde6923f93 (diff)
downloadmullvadvpn-fd735631e62ccf5d375b454afb7a51ce6b7466e6.tar.xz
mullvadvpn-fd735631e62ccf5d375b454afb7a51ce6b7466e6.zip
Create launch screen to decide on initial screen
Diffstat (limited to 'android')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/LaunchFragment.kt70
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt2
-rw-r--r--android/src/main/res/drawable-hdpi/launch_logo.pngbin0 -> 15280 bytes
-rw-r--r--android/src/main/res/drawable-mdpi/launch_logo.pngbin0 -> 9451 bytes
-rw-r--r--android/src/main/res/drawable-xhdpi/launch_logo.pngbin0 -> 21077 bytes
-rw-r--r--android/src/main/res/drawable-xxhdpi/launch_logo.pngbin0 -> 32823 bytes
-rw-r--r--android/src/main/res/drawable-xxxhdpi/launch_logo.pngbin0 -> 45026 bytes
-rw-r--r--android/src/main/res/layout/launch.xml37
-rw-r--r--android/src/main/res/values/strings.xml2
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
new file mode 100644
index 0000000000..542ba7986f
--- /dev/null
+++ b/android/src/main/res/drawable-hdpi/launch_logo.png
Binary files differ
diff --git a/android/src/main/res/drawable-mdpi/launch_logo.png b/android/src/main/res/drawable-mdpi/launch_logo.png
new file mode 100644
index 0000000000..2ee89ae828
--- /dev/null
+++ b/android/src/main/res/drawable-mdpi/launch_logo.png
Binary files differ
diff --git a/android/src/main/res/drawable-xhdpi/launch_logo.png b/android/src/main/res/drawable-xhdpi/launch_logo.png
new file mode 100644
index 0000000000..c68c053832
--- /dev/null
+++ b/android/src/main/res/drawable-xhdpi/launch_logo.png
Binary files differ
diff --git a/android/src/main/res/drawable-xxhdpi/launch_logo.png b/android/src/main/res/drawable-xxhdpi/launch_logo.png
new file mode 100644
index 0000000000..1604009282
--- /dev/null
+++ b/android/src/main/res/drawable-xxhdpi/launch_logo.png
Binary files differ
diff --git a/android/src/main/res/drawable-xxxhdpi/launch_logo.png b/android/src/main/res/drawable-xxxhdpi/launch_logo.png
new file mode 100644
index 0000000000..8a72edd366
--- /dev/null
+++ b/android/src/main/res/drawable-xxxhdpi/launch_logo.png
Binary files differ
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>