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

Commit 3555ebc8 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Add privacy indicators to combined QS header

Use alpha 0 in icons and battery when privacy indicators are visible in
QQS constraint.

Test: manual, using handheld and split shade layout
Bug: 202847414
Change-Id: I8b523c9f87c78fd4eac99a421eebaec90e37cadf
parent 94eebb4a
Loading
Loading
Loading
Loading
+12 −0
Original line number Original line Diff line number Diff line
@@ -101,4 +101,16 @@
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
    />
    />


    <FrameLayout
        android:id="@+id/privacy_container"
        android:layout_width="wrap_content"
        android:layout_height="48dp"
        android:gravity="center"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/date"
        app:layout_constraintBottom_toBottomOf="@id/date"
        >
        <include layout="@layout/ongoing_privacy_chip"/>
    </FrameLayout>

</androidx.constraintlayout.motion.widget.MotionLayout>
</androidx.constraintlayout.motion.widget.MotionLayout>
 No newline at end of file
+18 −1
Original line number Original line Diff line number Diff line
@@ -48,6 +48,14 @@
        />
        />
    </Constraint>
    </Constraint>


    <Constraint
        android:id="@+id/statusIcons">
    </Constraint>

    <Constraint
        android:id="@+id/batteryRemainingIcon" >
    </Constraint>

    <Constraint
    <Constraint
        android:id="@+id/carrier_group">
        android:id="@+id/carrier_group">
        <CustomAttribute
        <CustomAttribute
@@ -56,6 +64,15 @@
        />
        />
    </Constraint>
    </Constraint>



    <Constraint
        android:id="@+id/privacy_container">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="@id/date"
            app:layout_constraintBottom_toBottomOf="@id/date"
        />
    </Constraint>


</ConstraintSet>
</ConstraintSet>
 No newline at end of file
+10 −1
Original line number Original line Diff line number Diff line
@@ -58,5 +58,14 @@
        />
        />
    </Constraint>
    </Constraint>



    <Constraint
        android:id="@+id/privacy_container">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="48dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="@id/date"
            app:layout_constraintBottom_toBottomOf="@id/date"
        />
    </Constraint>
</ConstraintSet>
</ConstraintSet>
 No newline at end of file
+24 −0
Original line number Original line Diff line number Diff line
@@ -53,5 +53,29 @@
        />
        />
    </Constraint>
    </Constraint>


    <Constraint
        android:id="@+id/batteryRemainingIcon">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintHeight_min="@dimen/split_shade_header_min_height"
            app:layout_constraintStart_toEndOf="@id/statusIcons"
            app:layout_constraintEnd_toStartOf="@id/privacy_container"
            app:layout_constraintTop_toTopOf="@id/clock"
            app:layout_constraintBottom_toBottomOf="parent"
        />
    </Constraint>

    <Constraint
        android:id="@+id/privacy_container">
        <Layout
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintTop_toTopOf="@id/date"
            app:layout_constraintBottom_toBottomOf="@id/date"
            app:layout_constraintStart_toEndOf="@id/batteryRemainingIcon"
        />
    </Constraint>


</ConstraintSet>
</ConstraintSet>
 No newline at end of file
+16 −1
Original line number Original line Diff line number Diff line
@@ -19,12 +19,14 @@ package com.android.systemui.statusbar.phone
import android.view.View
import android.view.View
import androidx.constraintlayout.motion.widget.MotionLayout
import androidx.constraintlayout.motion.widget.MotionLayout
import com.android.settingslib.Utils
import com.android.settingslib.Utils
import com.android.systemui.Dumpable
import com.android.systemui.R
import com.android.systemui.R
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.animation.ShadeInterpolation
import com.android.systemui.battery.BatteryMeterView
import com.android.systemui.battery.BatteryMeterView
import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.battery.BatteryMeterViewController
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.Flags
import com.android.systemui.flags.Flags
import com.android.systemui.qs.ChipVisibilityListener
import com.android.systemui.qs.HeaderPrivacyIconsController
import com.android.systemui.qs.HeaderPrivacyIconsController
import com.android.systemui.qs.carrier.QSCarrierGroupController
import com.android.systemui.qs.carrier.QSCarrierGroupController
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope
import com.android.systemui.statusbar.phone.dagger.StatusBarComponent.StatusBarScope
@@ -97,6 +99,18 @@ class SplitShadeHeaderController @Inject constructor(
            }
            }
        }
        }


    private val chipVisibilityListener: ChipVisibilityListener = object : ChipVisibilityListener {
        override fun onChipVisibilityRefreshed(visible: Boolean) {
            if (statusBar is MotionLayout) {
                val state = statusBar.getConstraintSet(R.id.qqs_header_constraint).apply {
                    setAlpha(R.id.statusIcons, if (visible) 0f else 1f)
                    setAlpha(R.id.batteryRemainingIcon, if (visible) 0f else 1f)
                }
                statusBar.updateState(R.id.qqs_header_constraint, state)
            }
        }
    }

    init {
    init {
        if (statusBar is MotionLayout) {
        if (statusBar is MotionLayout) {
            val context = statusBar.context
            val context = statusBar.context
@@ -107,6 +121,7 @@ class SplitShadeHeaderController @Inject constructor(
                    .load(context, resources.getXml(R.xml.qs_header))
                    .load(context, resources.getXml(R.xml.qs_header))
            statusBar.getConstraintSet(R.id.split_header_constraint)
            statusBar.getConstraintSet(R.id.split_header_constraint)
                    .load(context, resources.getXml(R.xml.split_header))
                    .load(context, resources.getXml(R.xml.split_header))
            privacyIconsController.chipVisibilityListener = chipVisibilityListener
        }
        }
    }
    }


@@ -149,7 +164,7 @@ class SplitShadeHeaderController @Inject constructor(
    }
    }


    private fun onSplitShadeModeChanged() {
    private fun onSplitShadeModeChanged() {
        if (splitShadeMode) {
        if (splitShadeMode || combinedHeaders) {
            privacyIconsController.onParentVisible()
            privacyIconsController.onParentVisible()
        } else {
        } else {
            privacyIconsController.onParentInvisible()
            privacyIconsController.onParentInvisible()