Loading packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt +12 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.WindowInsets import android.view.WindowManager import android.window.OnBackInvokedCallback import android.window.OnBackInvokedDispatcher import androidx.appcompat.content.res.AppCompatResources import androidx.core.animation.doOnEnd import androidx.core.animation.doOnStart import com.android.internal.logging.UiEventLogger Loading Loading @@ -69,7 +70,17 @@ constructor( override var callbacks: ScreenshotView.ScreenshotViewCallback? = null override var screenshot: ScreenshotData? = null set(value) { viewModel.setScreenshotBitmap(value?.bitmap) value?.let { viewModel.setScreenshotBitmap(it.bitmap) val badgeBg = AppCompatResources.getDrawable(context, R.drawable.overlay_badge_background) val user = it.userHandle if (badgeBg != null && user != null) { viewModel.setScreenshotBadge( context.packageManager.getUserBadgedIcon(badgeBg, user) ) } } field = value } Loading packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt +7 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ object ScreenshotShelfViewBinder { dismissButton.setOnClickListener { onDismissalRequested(ScreenshotEvent.SCREENSHOT_EXPLICIT_DISMISSAL, null) } val badgeView = view.requireViewById<ImageView>(R.id.screenshot_badge) // use immediate dispatcher to ensure screenshot bitmap is set before animation view.repeatWhenAttached(Dispatchers.Main.immediate) { Loading @@ -86,6 +87,12 @@ object ScreenshotShelfViewBinder { } } } launch { viewModel.badge.collect { badge -> badgeView.setImageDrawable(badge) badgeView.visibility = if (badge != null) View.VISIBLE else View.GONE } } launch { viewModel.previewAction.collect { onClick -> previewView.setOnClickListener { onClick?.invoke() } Loading packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModel.kt +8 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.screenshot.ui.viewmodel import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.util.Log import android.view.accessibility.AccessibilityManager import kotlinx.coroutines.flow.MutableStateFlow Loading @@ -25,6 +26,8 @@ import kotlinx.coroutines.flow.StateFlow class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager) { private val _preview = MutableStateFlow<Bitmap?>(null) val preview: StateFlow<Bitmap?> = _preview private val _badge = MutableStateFlow<Drawable?>(null) val badge: StateFlow<Drawable?> = _badge private val _previewAction = MutableStateFlow<(() -> Unit)?>(null) val previewAction: StateFlow<(() -> Unit)?> = _previewAction private val _actions = MutableStateFlow(emptyList<ActionButtonViewModel>()) Loading @@ -39,6 +42,10 @@ class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager _preview.value = bitmap } fun setScreenshotBadge(badge: Drawable?) { _badge.value = badge } fun setPreviewAction(onClick: () -> Unit) { _previewAction.value = onClick } Loading Loading @@ -109,6 +116,7 @@ class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager fun reset() { _preview.value = null _badge.value = null _previewAction.value = null _actions.value = listOf() _animationState.value = AnimationState.NOT_STARTED Loading Loading
packages/SystemUI/src/com/android/systemui/screenshot/ScreenshotShelfViewProxy.kt +12 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.WindowInsets import android.view.WindowManager import android.window.OnBackInvokedCallback import android.window.OnBackInvokedDispatcher import androidx.appcompat.content.res.AppCompatResources import androidx.core.animation.doOnEnd import androidx.core.animation.doOnStart import com.android.internal.logging.UiEventLogger Loading Loading @@ -69,7 +70,17 @@ constructor( override var callbacks: ScreenshotView.ScreenshotViewCallback? = null override var screenshot: ScreenshotData? = null set(value) { viewModel.setScreenshotBitmap(value?.bitmap) value?.let { viewModel.setScreenshotBitmap(it.bitmap) val badgeBg = AppCompatResources.getDrawable(context, R.drawable.overlay_badge_background) val user = it.userHandle if (badgeBg != null && user != null) { viewModel.setScreenshotBadge( context.packageManager.getUserBadgedIcon(badgeBg, user) ) } } field = value } Loading
packages/SystemUI/src/com/android/systemui/screenshot/ui/binder/ScreenshotShelfViewBinder.kt +7 −0 Original line number Diff line number Diff line Loading @@ -68,6 +68,7 @@ object ScreenshotShelfViewBinder { dismissButton.setOnClickListener { onDismissalRequested(ScreenshotEvent.SCREENSHOT_EXPLICIT_DISMISSAL, null) } val badgeView = view.requireViewById<ImageView>(R.id.screenshot_badge) // use immediate dispatcher to ensure screenshot bitmap is set before animation view.repeatWhenAttached(Dispatchers.Main.immediate) { Loading @@ -86,6 +87,12 @@ object ScreenshotShelfViewBinder { } } } launch { viewModel.badge.collect { badge -> badgeView.setImageDrawable(badge) badgeView.visibility = if (badge != null) View.VISIBLE else View.GONE } } launch { viewModel.previewAction.collect { onClick -> previewView.setOnClickListener { onClick?.invoke() } Loading
packages/SystemUI/src/com/android/systemui/screenshot/ui/viewmodel/ScreenshotViewModel.kt +8 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ package com.android.systemui.screenshot.ui.viewmodel import android.graphics.Bitmap import android.graphics.drawable.Drawable import android.util.Log import android.view.accessibility.AccessibilityManager import kotlinx.coroutines.flow.MutableStateFlow Loading @@ -25,6 +26,8 @@ import kotlinx.coroutines.flow.StateFlow class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager) { private val _preview = MutableStateFlow<Bitmap?>(null) val preview: StateFlow<Bitmap?> = _preview private val _badge = MutableStateFlow<Drawable?>(null) val badge: StateFlow<Drawable?> = _badge private val _previewAction = MutableStateFlow<(() -> Unit)?>(null) val previewAction: StateFlow<(() -> Unit)?> = _previewAction private val _actions = MutableStateFlow(emptyList<ActionButtonViewModel>()) Loading @@ -39,6 +42,10 @@ class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager _preview.value = bitmap } fun setScreenshotBadge(badge: Drawable?) { _badge.value = badge } fun setPreviewAction(onClick: () -> Unit) { _previewAction.value = onClick } Loading Loading @@ -109,6 +116,7 @@ class ScreenshotViewModel(private val accessibilityManager: AccessibilityManager fun reset() { _preview.value = null _badge.value = null _previewAction.value = null _actions.value = listOf() _animationState.value = AnimationState.NOT_STARTED Loading