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
This commit is contained in:
Matt Pietal
2020-06-19 15:21:13 -04:00
parent 2a02c8e381
commit 2f63cc02b7
3 changed files with 7 additions and 21 deletions

View File

@@ -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()
}
}
}

View File

@@ -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)
})
}

View File

@@ -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()
})