diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-09 11:31:37 +0000 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2019-12-17 15:54:36 +0000 |
| commit | 53998fc2f2ea15d42175b99a4cf460f5b777cbdd (patch) | |
| tree | 9fc6e09ecc68a6ed164da2a2e0919eca88feeae8 /android/src/main | |
| parent | 09359615cda666c841f3a64183dbbdc31ac2b70e (diff) | |
| download | mullvadvpn-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.kt | 2 | ||||
| -rw-r--r-- | android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ServiceAwareFragment.kt | 47 |
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() + } + } +} |
