summaryrefslogtreecommitdiffhomepage
path: root/android/src/main/kotlin
diff options
context:
space:
mode:
authorJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-25 14:41:01 -0300
committerJanito Vaqueiro Ferreira Filho <janito@mullvad.net>2020-06-25 14:41:01 -0300
commita54e05de9c40537dd2f8b67d8edd0baebc83df6b (patch)
tree8ff6ff5f57a5017c8f5c7f32d0c4ab8a6a63e71c /android/src/main/kotlin
parent1f9a0ccd4f79af3231efa5493a8aebfd0700876b (diff)
parent45d4c173091d018d8fd413e1ac9532354e59b231 (diff)
downloadmullvadvpn-a54e05de9c40537dd2f8b67d8edd0baebc83df6b.tar.xz
mullvadvpn-a54e05de9c40537dd2f8b67d8edd0baebc83df6b.zip
Merge branch 'fix-notification-banner-height-calculation'
Diffstat (limited to 'android/src/main/kotlin')
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt12
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt24
-rw-r--r--android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt34
3 files changed, 34 insertions, 36 deletions
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
index 1ef0b3ac62..550edd7e26 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/ConnectFragment.kt
@@ -16,7 +16,6 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
private lateinit var actionButton: ConnectActionButton
private lateinit var switchLocationButton: SwitchLocationButton
private lateinit var headerBar: HeaderBar
- private lateinit var body: View
private lateinit var notificationBanner: NotificationBanner
private lateinit var status: ConnectionStatus
private lateinit var locationInfo: LocationInfo
@@ -44,10 +43,7 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
headerBar = HeaderBar(view, resources)
- body = view.findViewById(R.id.body)
-
notificationBanner = NotificationBanner(view, parentActivity, appVersionInfoCache, daemon)
- notificationBanner.onHeightChange = { newHeight -> updateBodyPaddingTop(newHeight) }
status = ConnectionStatus(view, resources)
@@ -131,14 +127,6 @@ class ConnectFragment : ServiceDependentFragment(OnNoService.GoToLaunchScreen) {
state.putBoolean(KEY_IS_TUNNEL_INFO_EXPANDED, isTunnelInfoExpanded)
}
- private fun updateBodyPaddingTop(newPaddingTop: Int) {
- body.apply {
- if (paddingTop != newPaddingTop) {
- setPadding(paddingLeft, newPaddingTop, paddingRight, paddingBottom)
- }
- }
- }
-
private fun updateTunnelState(uiState: TunnelState, realState: TunnelState) {
notificationBanner.tunnelState = realState
locationInfo.state = realState
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
index 1aeed5e5ca..efb27bc4d7 100644
--- a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/NotificationBanner.kt
@@ -5,7 +5,6 @@ import android.content.Intent
import android.graphics.drawable.Drawable
import android.net.Uri
import android.view.View
-import android.view.View.MeasureSpec
import android.widget.ImageView
import android.widget.TextView
import kotlin.properties.Delegates.observable
@@ -53,12 +52,6 @@ class NotificationBanner(
private val message: TextView = parentView.findViewById(R.id.notification_message)
private val icon: View = parentView.findViewById(R.id.notification_icon)
- private var height: Int by observable(0) { _, oldValue, newValue ->
- if (oldValue != newValue) {
- onHeightChange?.invoke(newValue)
- }
- }
-
private var updateJob: Job? = null
private var externalLink: ExternalLink? = null
@@ -93,10 +86,6 @@ class NotificationBanner(
}
)
- var onHeightChange by observable<((Int) -> Unit)?>(null) { _, _, newListener ->
- newListener?.invoke(height)
- }
-
var accountExpiry by observable<DateTime?>(null) { _, _, _ -> update() }
var keyState by observable<KeygenEvent?>(null) { _, _, _ -> update() }
var tunnelState by observable<TunnelState>(TunnelState.Disconnected()) { _, _, _ -> update() }
@@ -282,8 +271,6 @@ class NotificationBanner(
banner.setClickable(true)
icon.visibility = View.VISIBLE
}
-
- height = recalculateHeight()
}
private fun hide() {
@@ -294,15 +281,4 @@ class NotificationBanner(
}
}
}
-
- private fun recalculateHeight(): Int {
- banner.apply {
- val widthSpec = MeasureSpec.makeMeasureSpec(measuredWidth, MeasureSpec.AT_MOST)
- val heightSpec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED)
-
- measure(widthSpec, heightSpec)
-
- return measuredHeight
- }
- }
}
diff --git a/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt
new file mode 100644
index 0000000000..a0759ed9fa
--- /dev/null
+++ b/android/src/main/kotlin/net/mullvad/mullvadvpn/ui/UnderNotificationBannerBehavior.kt
@@ -0,0 +1,34 @@
+package net.mullvad.mullvadvpn.ui
+
+import android.content.Context
+import android.support.design.widget.CoordinatorLayout
+import android.support.design.widget.CoordinatorLayout.Behavior
+import android.util.AttributeSet
+import android.view.View
+import android.widget.ScrollView
+import net.mullvad.mullvadvpn.R
+
+class UnderNotificationBannerBehavior(
+ context: Context,
+ attributes: AttributeSet
+) : Behavior<ScrollView>(context, attributes) {
+ override fun layoutDependsOn(parent: CoordinatorLayout, body: ScrollView, dependency: View) =
+ dependency.id == R.id.notification_banner
+
+ override fun onDependentViewChanged(
+ parent: CoordinatorLayout,
+ body: ScrollView,
+ dependency: View
+ ): Boolean {
+ val newPaddingTop = dependency.height
+
+ body.getChildAt(0).apply {
+ if (paddingTop != newPaddingTop) {
+ setPadding(paddingLeft, newPaddingTop, paddingRight, paddingBottom)
+ return true
+ } else {
+ return false
+ }
+ }
+ }
+}