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

Commit 4466bbb4 authored by Beverly's avatar Beverly Committed by Beverly Tai
Browse files

Dump additional AnimatableClock updates

Test: dump sysui
Bug: 241729527
Bug: 222260948
Change-Id: I8d747a08e4d0a0ad211872f0d2a8495839b0f3a5
Merged-In: I8d747a08e4d0a0ad211872f0d2a8495839b0f3a5
parent 9dce3214
Loading
Loading
Loading
Loading
+34 −2
Original line number Diff line number Diff line
@@ -47,7 +47,12 @@ class AnimatableClockView @JvmOverloads constructor(
    defStyleRes: Int = 0
) : TextView(context, attrs, defStyleAttr, defStyleRes) {

    private var lastMeasureCall: CharSequence = ""
    private var lastMeasureCall: CharSequence? = null
    private var lastDraw: CharSequence? = null
    private var lastTextUpdate: CharSequence? = null
    private var lastOnTextChanged: CharSequence? = null
    private var lastInvalidate: CharSequence? = null
    private var lastTimeZoneChange: CharSequence? = null

    private val time = Calendar.getInstance()

@@ -135,18 +140,19 @@ class AnimatableClockView @JvmOverloads constructor(
        // relayout if the text didn't actually change.
        if (!TextUtils.equals(text, formattedText)) {
            text = formattedText
            lastTextUpdate = getTimestamp()
        }
    }

    fun onTimeZoneChanged(timeZone: TimeZone?) {
        time.timeZone = timeZone
        refreshFormat()
        lastTimeZoneChange = "${getTimestamp()} timeZone=${time.timeZone}"
    }

    @SuppressLint("DrawAllocation")
    override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec)
        lastMeasureCall = DateFormat.format(descFormat, System.currentTimeMillis())
        val animator = textAnimator
        if (animator == null) {
            textAnimator = TextAnimator(layout) { invalidate() }
@@ -155,13 +161,34 @@ class AnimatableClockView @JvmOverloads constructor(
        } else {
            animator.updateLayout(layout)
        }
        lastMeasureCall = getTimestamp()
    }

    override fun onDraw(canvas: Canvas) {
        lastDraw = getTimestamp()
        // intentionally doesn't call super.onDraw here or else the text will be rendered twice
        textAnimator?.draw(canvas)
    }

    override fun invalidate() {
        super.invalidate()
        lastInvalidate = getTimestamp()
    }

    private fun getTimestamp(): CharSequence {
        return "${DateFormat.format("HH:mm:ss", System.currentTimeMillis())} text=$text"
    }

    override fun onTextChanged(
            text: CharSequence,
            start: Int,
            lengthBefore: Int,
            lengthAfter: Int
    ) {
        super.onTextChanged(text, start, lengthBefore, lengthAfter)
        lastOnTextChanged = "${getTimestamp()}"
    }

    fun setLineSpacingScale(scale: Float) {
        lineSpacingScale = scale
        setLineSpacing(0f, lineSpacingScale)
@@ -354,7 +381,12 @@ class AnimatableClockView @JvmOverloads constructor(
        pw.println("    measuredWidth=$measuredWidth")
        pw.println("    measuredHeight=$measuredHeight")
        pw.println("    singleLineInternal=$isSingleLineInternal")
        pw.println("    lastTextUpdate=$lastTextUpdate")
        pw.println("    lastOnTextChanged=$lastOnTextChanged")
        pw.println("    lastInvalidate=$lastInvalidate")
        pw.println("    lastMeasureCall=$lastMeasureCall")
        pw.println("    lastDraw=$lastDraw")
        pw.println("    lastTimeZoneChange=$lastTimeZoneChange")
        pw.println("    currText=$text")
        pw.println("    currTimeContextDesc=$contentDescription")
        pw.println("    time=$time")