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

Commit 2f63cc02 authored by Matt Pietal's avatar Matt Pietal
Browse files

Controls UI - Marquee + transient status == no good

Temporary text was not given enough time to be visible, and could
cause confusion. Remove all temporary text in favor of leaving it
until the app decides to update, or the user takes another action.

Fixes: 159163559
Test: manual, controls mock + large font, touch on TYPE_TV
Change-Id: I6093c450e286cd1aac489847180877d78faa7ed3
parent 2a02c8e3
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -35,7 +35,6 @@ import com.android.systemui.globalactions.GlobalActionsComponent
import com.android.systemui.plugins.ActivityStarter
import com.android.systemui.statusbar.policy.KeyguardStateController
import com.android.systemui.util.concurrency.DelayableExecutor
import com.android.systemui.R

import javax.inject.Inject
import javax.inject.Singleton
@@ -164,8 +163,7 @@ class ControlActionCoordinatorImpl @Inject constructor(
                        it.show()
                    }
                } else {
                    cvh.setTransientStatus(
                        cvh.context.resources.getString(R.string.controls_error_failed))
                    cvh.setErrorStatus()
                }
            }
        }
+5 −16
Original line number Diff line number Diff line
@@ -67,7 +67,6 @@ class ControlViewHolder(

    companion object {
        const val STATE_ANIMATION_DURATION = 700L
        private const val UPDATE_DELAY_IN_MILLIS = 3000L
        private const val ALPHA_ENABLED = 255
        private const val ALPHA_DISABLED = 0
        private const val STATUS_ALPHA_ENABLED = 1f
@@ -113,7 +112,6 @@ class ControlViewHolder(
    val context: Context = layout.getContext()
    val clipLayer: ClipDrawable
    lateinit var cws: ControlWithState
    var cancelUpdate: Runnable? = null
    var behavior: Behavior? = null
    var lastAction: ControlAction? = null
    var isLoading = false
@@ -148,8 +146,6 @@ class ControlViewHolder(

        this.cws = cws

        cancelUpdate?.run()

        // For the following statuses only, assume the title/subtitle could not be set properly
        // by the app and instead use the last known information from favorites
        if (controlStatus == Control.STATUS_UNKNOWN || controlStatus == Control.STATUS_NOT_FOUND) {
@@ -188,11 +184,11 @@ class ControlViewHolder(
                lastChallengeDialog = null
            ControlAction.RESPONSE_UNKNOWN -> {
                lastChallengeDialog = null
                setTransientStatus(context.resources.getString(R.string.controls_error_failed))
                setErrorStatus()
            }
            ControlAction.RESPONSE_FAIL -> {
                lastChallengeDialog = null
                setTransientStatus(context.resources.getString(R.string.controls_error_failed))
                setErrorStatus()
            }
            ControlAction.RESPONSE_CHALLENGE_PIN -> {
                lastChallengeDialog = ChallengeDialogs.createPinDialog(
@@ -219,17 +215,10 @@ class ControlViewHolder(
        visibleDialog = null
    }

    fun setTransientStatus(tempStatus: String) {
        val previousText = status.getText()

        cancelUpdate = uiExecutor.executeDelayed({
            animateStatusChange(/* animated */ true, {
                setStatusText(previousText, /* immediately */ true)
            })
        }, UPDATE_DELAY_IN_MILLIS)

    fun setErrorStatus() {
        val text = context.resources.getString(R.string.controls_error_failed)
        animateStatusChange(/* animated */ true, {
            setStatusText(tempStatus, /* immediately */ true)
            setStatusText(text, /* immediately */ true)
        })
    }

+1 −2
Original line number Diff line number Diff line
@@ -77,8 +77,7 @@ class StatusBehavior : Behavior {
                        cws.control?.getAppIntent()?.send()
                        context.sendBroadcast(Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
                    } catch (e: PendingIntent.CanceledException) {
                        cvh.setTransientStatus(
                            cvh.context.resources.getString(R.string.controls_error_failed))
                        cvh.setErrorStatus()
                    }
                    dialog.dismiss()
            })