diff options
| author | 2023-04-11 17:21:22 +0000 | |
|---|---|---|
| committer | 2023-04-11 17:21:22 +0000 | |
| commit | 11b9cf84dc1c3a8bf1add401423e48cb44293a10 (patch) | |
| tree | 9820a39d7de64f4c17eca4bfd96c2155161ed31d /java/src | |
| parent | fc7ddd61dd62105dae67594517b9344afca163ff (diff) | |
| parent | 8ae8c4a3f25cc5c0da3196fa0a3f0f07dfe87066 (diff) | |
Merge "Hide thumbnail prview if no preview has loaded" into udc-dev
Diffstat (limited to 'java/src')
| -rw-r--r-- | java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java | 15 | ||||
| -rw-r--r-- | java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt | 15 |
2 files changed, 25 insertions, 5 deletions
diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java index 748f7421..2e6ecb0e 100644 --- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java @@ -91,6 +91,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { R.layout.chooser_grid_preview_image, parent, false); ScrollableImagePreviewView imagePreview = contentPreviewLayout.findViewById(R.id.scrollable_image_preview); + imagePreview.setOnNoPreviewCallback(() -> imagePreview.setVisibility(View.GONE)); final ActionRow actionRow = contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row); @@ -132,7 +133,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { mImageLoader); if (!TextUtils.isEmpty(mText) && mFiles.size() == 1 && allImages) { - setTextInImagePreviewVisibility(contentPreviewLayout, mActionFactory); + setTextInImagePreviewVisibility(contentPreviewLayout, imagePreview, mActionFactory); updateTextWithImageHeadline(contentPreviewLayout); } else { if (allImages) { @@ -175,7 +176,9 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { } private void setTextInImagePreviewVisibility( - ViewGroup contentPreview, ChooserContentPreviewUi.ActionFactory actionFactory) { + ViewGroup contentPreview, + ScrollableImagePreviewView imagePreview, + ChooserContentPreviewUi.ActionFactory actionFactory) { final TextView textView = contentPreview .requireViewById(com.android.internal.R.id.content_preview_text); CheckBox actionView = contentPreview @@ -194,8 +197,12 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { shareTextAction.accept(false); actionView.setOnCheckedChangeListener((view, isChecked) -> { view.setText(actionLabels[isChecked ? 1 : 0]); - TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); - textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); + textView.setEnabled(isChecked); + if (imagePreview.getVisibility() == View.VISIBLE) { + // animate only only if we have preview + TransitionManager.beginDelayedTransition((ViewGroup) textView.getParent()); + textView.setVisibility(isChecked ? View.VISIBLE : View.GONE); + } shareTextAction.accept(!isChecked); updateTextWithImageHeadline(contentPreview); }); diff --git a/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt b/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt index d1b0f5b4..8dcaacb8 100644 --- a/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt +++ b/java/src/com/android/intentresolver/widget/ScrollableImagePreviewView.kt @@ -40,6 +40,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.MainScope import kotlinx.coroutines.cancel import kotlinx.coroutines.flow.MutableSharedFlow +import kotlinx.coroutines.flow.onCompletion import kotlinx.coroutines.flow.takeWhile import kotlinx.coroutines.joinAll import kotlinx.coroutines.launch @@ -129,13 +130,18 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView { imageLoader, previews, otherItemCount, - ).apply { + ) { + onNoPreviewCallback?.run() + } + .apply { if (isMeasured) { loadAspectRatios(getMaxWidth(), this@ScrollableImagePreviewView::calcPreviewWidth) } } } + var onNoPreviewCallback: Runnable? = null + private fun getMaxWidth(): Int = when { maxWidthHint > 0 -> maxWidthHint @@ -187,6 +193,7 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView { private var totalItemCount: Int = 0 private val hasOtherItem get() = previews.size < totalItemCount + val hasPreviews: Boolean get() = previews.isNotEmpty() var transitionStatusElementCallback: TransitionElementStatusCallback? = null @@ -369,6 +376,7 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView { private val imageLoader: ImageLoader, previews: List<Preview>, otherItemCount: Int, + private val onNoPreviewCallback: (() -> Unit) ) { private val pendingPreviews = ArrayDeque<Preview>(previews) private val totalItemCount = previews.size + otherItemCount @@ -393,6 +401,11 @@ class ScrollableImagePreviewView : RecyclerView, ImagePreviewView { reportFlow .takeWhile { it !== completedEvent } .throttle(ADAPTER_UPDATE_INTERVAL_MS) + .onCompletion { cause -> + if (cause == null && !adapter.hasPreviews) { + onNoPreviewCallback() + } + } .collect { if (isFirstUpdate) { isFirstUpdate = false |