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

Commit fd0acf04 authored by Shan Huang's avatar Shan Huang Committed by Android (Google) Code Review
Browse files

Merge "Support setting charger port location via config." into sc-dev

parents 4add47c7 677600f9
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -1456,6 +1456,12 @@
     screen directly in front of the sensor. -->
    <dimen name="physical_fingerprint_sensor_center_screen_location_y">610px</dimen>

    <!-- Normalized location on the screen of the center of the physical usb charger port in
         portrait mode. This is a reasonable default that should be overridden by device-specific
         overlays. -->
    <item name="physical_charger_port_location_normalized_x" type="dimen" format="float">0.5</item>
    <item name="physical_charger_port_location_normalized_y" type="dimen" format="float">1</item>

    <!-- Wallet activity screen specs -->
    <dimen name="wallet_icon_size">36sp</dimen>
    <dimen name="card_margin">16dp</dimen>
+17 −8
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.charging

import android.content.Context
import android.content.res.Configuration
import android.graphics.PixelFormat
import android.graphics.PointF
import android.os.SystemProperties
@@ -32,6 +33,7 @@ import com.android.systemui.statusbar.commandline.CommandRegistry
import com.android.systemui.statusbar.policy.BatteryController
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.util.leak.RotationUtils
import com.android.systemui.R
import java.io.PrintWriter
import javax.inject.Inject

@@ -50,6 +52,10 @@ class WiredChargingRippleController @Inject constructor(
    private var charging: Boolean? = null
    private val rippleEnabled: Boolean = featureFlags.isChargingRippleEnabled &&
            !SystemProperties.getBoolean("persist.debug.suppress-charging-ripple", false)
    private var normalizedPortPosX: Float = context.resources.getFloat(
            R.dimen.physical_charger_port_location_normalized_x)
    private var normalizedPortPosY: Float = context.resources.getFloat(
            R.dimen.physical_charger_port_location_normalized_y)
    private val windowLayoutParams = WindowManager.LayoutParams().apply {
        width = WindowManager.LayoutParams.MATCH_PARENT
        height = WindowManager.LayoutParams.MATCH_PARENT
@@ -98,6 +104,13 @@ class WiredChargingRippleController @Inject constructor(
            override fun onOverlayChanged() {
                updateRippleColor()
            }

            override fun onConfigChanged(newConfig: Configuration?) {
                normalizedPortPosX = context.resources.getFloat(
                        R.dimen.physical_charger_port_location_normalized_x)
                normalizedPortPosY = context.resources.getFloat(
                        R.dimen.physical_charger_port_location_normalized_y)
            }
        }
        configurationController.addCallback(configurationChangedListener)

@@ -134,23 +147,19 @@ class WiredChargingRippleController @Inject constructor(
        val width = displayMetrics.widthPixels
        val height = displayMetrics.heightPixels
        rippleView.radius = Integer.max(width, height).toFloat()

        // Always show the ripple from the charging cable location.
        // Currently assuming the charging cable is at the bottom of the screen.
        // TODO(shanh): Pull charging port location into configurations.
        rippleView.origin = when (RotationUtils.getRotation(context)) {
            RotationUtils.ROTATION_LANDSCAPE -> {
                PointF(width.toFloat(), height / 2f)
                PointF(width * normalizedPortPosY, height * (1 - normalizedPortPosX))
            }
            RotationUtils.ROTATION_UPSIDE_DOWN -> {
                PointF(width / 2f, 0f)
                PointF(width * (1 - normalizedPortPosX), height * (1 - normalizedPortPosY))
            }
            RotationUtils.ROTATION_SEASCAPE -> {
                PointF(0f, height / 2f)
                PointF(width * (1 - normalizedPortPosY), height * normalizedPortPosX)
            }
            else -> {
                // ROTATION_NONE
                PointF(width / 2f, height.toFloat())
                PointF(width * normalizedPortPosX, height * normalizedPortPosY)
            }
        }
    }