summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
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/LoginFragment.kt1
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MainActivity.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt3
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt4
-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
12 files changed, 118 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/LoginFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
index 3ead35333c..dd5fd1a41c 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/LoginFragment.kt
@@ -65,6 +65,7 @@ class LoginFragment : Fragment() {
val accountData = daemon.getAccountData(accountToken)
if (accountData != null) {
+ daemon.setAccount(accountToken)
true
} else {
false
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/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
index c7025ea644..152eaac970 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/MullvadDaemon.kt
@@ -1,6 +1,7 @@
package net.mullvad.mullvadvpn
import net.mullvad.mullvadvpn.model.AccountData
+import net.mullvad.mullvadvpn.model.Settings
class MullvadDaemon {
init {
@@ -9,6 +10,8 @@ class MullvadDaemon {
}
external fun getAccountData(accountToken: String): AccountData?
+ external fun getSettings(): Settings
+ external fun setAccount(accountToken: String?)
private external fun initialize()
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt
new file mode 100644
index 0000000000..1254492b57
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/model/Settings.kt
@@ -0,0 +1,4 @@
+package net.mullvad.mullvadvpn.model
+
+data class Settings(var accountToken: String?) {
+}
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>