diff options
| author | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-25 14:41:01 -0300 |
|---|---|---|
| committer | Janito Vaqueiro Ferreira Filho <janito@mullvad.net> | 2020-06-25 14:41:01 -0300 |
| commit | a54e05de9c40537dd2f8b67d8edd0baebc83df6b (patch) | |
| tree | 8ff6ff5f57a5017c8f5c7f32d0c4ab8a6a63e71c /android/src/main/kotlin | |
| parent | 1f9a0ccd4f79af3231efa5493a8aebfd0700876b (diff) | |
| parent | 45d4c173091d018d8fd413e1ac9532354e59b231 (diff) | |
| download | mullvadvpn-a54e05de9c40537dd2f8b67d8edd0baebc83df6b.tar.xz mullvadvpn-a54e05de9c40537dd2f8b67d8edd0baebc83df6b.zip | |
Merge branch 'fix-notification-banner-height-calculation'
Diffstat (limited to 'android/src/main/kotlin')
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 + } + } + } +} |
