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

Commit da672923 authored by Josh's avatar Josh
Browse files

Added hover and mouse click support for icons left of status bar

Hovering over icons left of status bar now gives a hover effect
indicating said icons are clickable and when user clicks the bunch,
shade is invoked.

Test: Manual test go/sysui-pkt-manual-testing
Fixes: 297176534
Flag: EXEMPT Bugfix
Change-Id: If58abbe3b86e0a497f6541fbeccc5b6d1a3f2e8b
parent c97ebc3e
Loading
Loading
Loading
Loading
+1 −1
Original line number Original line Diff line number Diff line
@@ -66,7 +66,7 @@
            <FrameLayout
            <FrameLayout
                android:id="@+id/status_bar_start_side_content"
                android:id="@+id/status_bar_start_side_content"
                android:layout_width="wrap_content"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_height="wrap_content"
                android:layout_gravity="center_vertical|start"
                android:layout_gravity="center_vertical|start"
                android:clipChildren="false">
                android:clipChildren="false">


+38 −27
Original line number Original line Diff line number Diff line
@@ -78,26 +78,10 @@ private constructor(


    private lateinit var battery: BatteryMeterView
    private lateinit var battery: BatteryMeterView
    private lateinit var clock: Clock
    private lateinit var clock: Clock
    private lateinit var statusContainer: View
    private lateinit var startSideContainer: View
    private lateinit var endSideContainer: View


    private val configurationListener =
    private val iconsOnTouchListener =
        object : ConfigurationController.ConfigurationListener {
            override fun onDensityOrFontScaleChanged() {
                clock.onDensityOrFontScaleChanged()
            }
        }

    override fun onViewAttached() {
        statusContainer = mView.requireViewById(R.id.system_icons)
        clock = mView.requireViewById(R.id.clock)
        battery = mView.requireViewById(R.id.battery)

        addDarkReceivers()

        statusContainer.setOnHoverListener(
            statusOverlayHoverListenerFactory.createDarkAwareListener(statusContainer)
        )
        statusContainer.setOnTouchListener(
        object : View.OnTouchListener {
        object : View.OnTouchListener {
            override fun onTouch(v: View, event: MotionEvent): Boolean {
            override fun onTouch(v: View, event: MotionEvent): Boolean {
                // We want to handle only mouse events here to avoid stealing finger touches
                // We want to handle only mouse events here to avoid stealing finger touches
@@ -115,7 +99,19 @@ private constructor(
                return false
                return false
            }
            }
        }
        }
        )

    private val configurationListener =
        object : ConfigurationController.ConfigurationListener {
            override fun onDensityOrFontScaleChanged() {
                clock.onDensityOrFontScaleChanged()
            }
        }

    override fun onViewAttached() {
        clock = mView.requireViewById(R.id.clock)
        battery = mView.requireViewById(R.id.battery)
        addDarkReceivers()
        addCursorSupportToIconContainers()


        progressProvider?.setReadyToHandleTransition(true)
        progressProvider?.setReadyToHandleTransition(true)
        configurationController.addCallback(configurationListener)
        configurationController.addCallback(configurationListener)
@@ -146,10 +142,25 @@ private constructor(
        }
        }
    }
    }


    private fun addCursorSupportToIconContainers() {
        endSideContainer = mView.requireViewById(R.id.system_icons)
        endSideContainer.setOnHoverListener(
            statusOverlayHoverListenerFactory.createDarkAwareListener(endSideContainer)
        )
        endSideContainer.setOnTouchListener(iconsOnTouchListener)

        startSideContainer = mView.requireViewById(R.id.status_bar_start_side_content)
        startSideContainer.setOnHoverListener(
            statusOverlayHoverListenerFactory.createDarkAwareListener(startSideContainer)
        )
        startSideContainer.setOnTouchListener(iconsOnTouchListener)
    }

    @VisibleForTesting
    @VisibleForTesting
    public override fun onViewDetached() {
    public override fun onViewDetached() {
        removeDarkReceivers()
        removeDarkReceivers()
        statusContainer.setOnHoverListener(null)
        startSideContainer.setOnHoverListener(null)
        endSideContainer.setOnHoverListener(null)
        progressProvider?.setReadyToHandleTransition(false)
        progressProvider?.setReadyToHandleTransition(false)
        moveFromCenterAnimationController?.onViewDetached()
        moveFromCenterAnimationController?.onViewDetached()
        configurationController.removeCallback(configurationListener)
        configurationController.removeCallback(configurationListener)