summaryrefslogtreecommitdiffhomepage
path: root/android/src/main
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-12-09 11:31:37 +0000
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2019-12-17 15:54:36 +0000
commit53998fc2f2ea15d42175b99a4cf460f5b777cbdd (patch)
tree9fc6e09ecc68a6ed164da2a2e0919eca88feeae8 /android/src/main
parent09359615cda666c841f3a64183dbbdc31ac2b70e (diff)
downloadmullvadvpn-53998fc2f2ea15d42175b99a4cf460f5b777cbdd.tar.xz
mullvadvpn-53998fc2f2ea15d42175b99a4cf460f5b777cbdd.zip
Create `ServiceAwareFragment` helper class
Diffstat (limited to 'android/src/main')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt2
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt47
2 files changed, 48 insertions, 1 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
index 4780433223..f9c9f24bac 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/MainActivity.kt
@@ -30,7 +30,7 @@ class MainActivity : FragmentActivity() {
val KEY_SHOULD_CONNECT = "should_connect"
}
- var serviceConnection: ServiceConnection? = null
+ private var serviceConnection: ServiceConnection? = null
private var serviceConnectionSubscription: Int? = null
var daemon = CompletableDeferred<MullvadDaemon>()
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
new file mode 100644
index 0000000000..833f539a75
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt
@@ -0,0 +1,47 @@
+package net.mullvad.mullvadvpn.ui
+
+import android.content.Context
+import android.support.v4.app.Fragment
+
+abstract class ServiceAwareFragment : Fragment() {
+ lateinit var parentActivity: MainActivity
+ private set
+
+ var serviceConnection: ServiceConnection? = null
+ private set
+
+ private var subscriptionId: Int? = null
+
+ override fun onAttach(context: Context) {
+ super.onAttach(context)
+
+ parentActivity = context as MainActivity
+
+ subscriptionId = parentActivity.serviceNotifier.subscribe { connection ->
+ configureServiceConnection(connection)
+ }
+ }
+
+ override fun onDetach() {
+ subscriptionId?.let { id ->
+ parentActivity.serviceNotifier.unsubscribe(id)
+ }
+
+ super.onDetach()
+ }
+
+ abstract fun onNewServiceConnection(serviceConnection: ServiceConnection)
+
+ open fun onNoServiceConnection() {
+ }
+
+ private fun configureServiceConnection(connection: ServiceConnection?) {
+ serviceConnection = connection
+
+ if (connection != null) {
+ onNewServiceConnection(connection)
+ } else {
+ onNoServiceConnection()
+ }
+ }
+}