Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c388ea12 authored by Anton Potapov's avatar Anton Potapov
Browse files

Fix layout to handle long carrier text

The problem here is the same as in ag/20877927. But here the clock is scaled so it's actual width stays the same, so I'm applying custom padding to compensate this.

Fixes: 263851901
Test: auto + manual
Change-Id: I606e18cd36998e88289fbc2010186d3e5ae61787
parent a62cc29c
Loading
Loading
Loading
Loading
+5 −8
Original line number Diff line number Diff line
@@ -41,9 +41,6 @@
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@id/privacy_container"
            app:layout_constraintBottom_toBottomOf="@id/carrier_group"
            app:layout_constraintEnd_toStartOf="@id/carrier_group"
            app:layout_constraintHorizontal_bias="0"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
        />
        <Transform
            android:scaleX="2.57"
@@ -62,18 +59,18 @@
        />
    </Constraint>

    <!-- LargeScreenShadeHeaderController helps with managing clock width to layout this view -->
    <Constraint
        android:id="@+id/carrier_group">
        <Layout
            app:layout_constraintWidth_min="48dp"
            android:layout_width="wrap_content"
            android:layout_width="0dp"
            android:layout_height="@dimen/large_screen_shade_header_min_height"
            app:layout_constraintStart_toEndOf="@id/clock"
            app:layout_constraintWidth_min="48dp"
            app:layout_constraintWidth_default="wrap"
            app:layout_constraintStart_toStartOf="@id/clock"
            app:layout_constraintTop_toBottomOf="@id/privacy_container"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1"
            app:layout_constraintBottom_toTopOf="@id/batteryRemainingIcon"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            />
        <PropertySet
            android:alpha="1"
+2 −1
Original line number Diff line number Diff line
@@ -45,7 +45,6 @@ import com.android.systemui.qs.HeaderPrivacyIconsController
import com.android.systemui.qs.carrier.QSCarrierGroup
import com.android.systemui.qs.carrier.QSCarrierGroupController
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.HEADER_TRANSITION_ID
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.LARGE_SCREEN_HEADER_CONSTRAINT
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QQS_HEADER_CONSTRAINT
import com.android.systemui.shade.LargeScreenShadeHeaderController.Companion.QS_HEADER_CONSTRAINT
import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
@@ -305,6 +304,8 @@ class LargeScreenShadeHeaderController @Inject constructor(
                val newPivot = if (v.isLayoutRtl) v.width.toFloat() else 0f
                v.pivotX = newPivot
                v.pivotY = v.height.toFloat() / 2

                qsCarrierGroup.setPaddingRelative((v.width * v.scaleX).toInt(), 0, 0, 0)
            }
        }

+1 −3
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
    fun testEdgeElementsAlignedWithEdgeOrGuide_qs() {
        with(qsConstraint) {
            assertThat(getConstraint(R.id.clock).layout.startToStart).isEqualTo(PARENT_ID)
            assertThat(getConstraint(R.id.clock).layout.horizontalBias).isEqualTo(0f)
            assertThat(getConstraint(R.id.clock).layout.horizontalBias).isEqualTo(0.5f)

            assertThat(getConstraint(R.id.date).layout.startToStart).isEqualTo(PARENT_ID)
            assertThat(getConstraint(R.id.date).layout.horizontalBias).isEqualTo(0.5f)
@@ -342,7 +342,6 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
                R.id.clock to "clock",
                R.id.date to "date",
                R.id.privacy_container to "privacy",
                R.id.carrier_group to "carriers",
        )
        views.forEach { (id, name) ->
            assertWithMessage("$name has 0 height in qqs")
@@ -361,7 +360,6 @@ class CombinedShadeHeaderConstraintsTest : SysuiTestCase() {
        val views = mapOf(
                R.id.clock to "clock",
                R.id.privacy_container to "privacy",
                R.id.carrier_group to "carriers",
        )
        views.forEach { (id, name) ->
            expect.withMessage("$name changes height")
+13 −0
Original line number Diff line number Diff line
@@ -692,6 +692,19 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() {
        assertThat(captor.value.getResId()).isEqualTo(R.xml.large_screen_shade_header)
    }

    @Test
    fun `carrier left padding is set when clock layout changes`() {
        val width = 200
        whenever(clock.width).thenReturn(width)
        whenever(clock.scaleX).thenReturn(2.57f) // 2.57 comes from qs_header.xml
        val captor = ArgumentCaptor.forClass(View.OnLayoutChangeListener::class.java)

        verify(clock).addOnLayoutChangeListener(capture(captor))
        captor.value.onLayoutChange(clock, 0, 0, width, 0, 0, 0, 0, 0)

        verify(carrierGroup).setPaddingRelative(514, 0, 0, 0)
    }

    private fun View.executeLayoutChange(
            left: Int,
            top: Int,