From c393f91bcf5976d2db378b1da5a82a37ddc8e6c1 Mon Sep 17 00:00:00 2001 From: 1 Date: Fri, 21 Apr 2023 02:23:11 +0000 Subject: Align file sharing UI with mocks. Mocks: https://www.figma.com/file/JVIcmg4OhWuO5Vc1UdPVxe/Sharesheet-(U)?node-id=66-5067&t=GK4LwE6SDaQyVyov-0 - Split text into two lines (when needed) - Change headline to "files" instead of "items". - Shaded background around content. - Just use one icon for now (this will be updated later). Bug: 279070016 Test: atest UnbundledChooserActivityTest Test: atest HeadlineGeneratorImplTest Change-Id: I696b4bc21250290253b78b56c6fc20278e939a8a --- java/res/layout/chooser_grid_preview_file.xml | 76 +++++++++++++--------- java/res/layout/chooser_grid_preview_text.xml | 1 - java/res/values/strings.xml | 21 +++--- .../contentpreview/FileContentPreviewUi.java | 30 ++++----- .../FilesPlusTextContentPreviewUi.java | 2 +- .../contentpreview/HeadlineGenerator.kt | 4 +- .../contentpreview/HeadlineGeneratorImpl.kt | 4 +- .../contentpreview/UnifiedContentPreviewUi.java | 2 +- .../UnbundledChooserActivityTest.java | 40 +++++------- .../contentpreview/HeadlineGeneratorImplTest.kt | 4 +- 10 files changed, 90 insertions(+), 94 deletions(-) (limited to 'java') diff --git a/java/res/layout/chooser_grid_preview_file.xml b/java/res/layout/chooser_grid_preview_file.xml index 40ab2f0b..9fd90f10 100644 --- a/java/res/layout/chooser_grid_preview_file.xml +++ b/java/res/layout/chooser_grid_preview_file.xml @@ -27,41 +27,53 @@ android:paddingBottom="@dimen/chooser_view_spacing" android:background="?android:attr/colorBackground"> - + - - - - - + android:layout_gravity="center" + android:layout_marginHorizontal="@dimen/chooser_edge_margin_normal" + android:layout_marginBottom="@dimen/chooser_view_spacing" + android:padding="@dimen/chooser_edge_margin_normal" + android:background="@drawable/chooser_content_preview_rounded" + android:id="@androidprv:id/content_preview_file_layout"> + + + + + + - + diff --git a/java/res/layout/chooser_grid_preview_text.xml b/java/res/layout/chooser_grid_preview_text.xml index e22cfbd2..3a390025 100644 --- a/java/res/layout/chooser_grid_preview_text.xml +++ b/java/res/layout/chooser_grid_preview_text.xml @@ -32,7 +32,6 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" - android:orientation="horizontal" android:layout_marginLeft="@dimen/chooser_edge_margin_normal" android:layout_marginRight="@dimen/chooser_edge_margin_normal" android:layout_marginBottom="@dimen/chooser_view_spacing" diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml index 1648831c..8a24b349 100644 --- a/java/res/values/strings.xml +++ b/java/res/values/strings.xml @@ -124,12 +124,6 @@ Edit - {count, plural, - =1 {{file_name} + # file} - other {{file_name} + # files} - } - - {count, plural, =1 {+ # file} @@ -137,6 +131,13 @@ } + + {count, plural, + =1 {+ # more file} + other {+ # more files} + } + + Sharing text @@ -153,11 +154,11 @@ other {Sharing # videos} } - - {count, plural, - =1 {Sharing # item} - other {Sharing # items} + {count, plural, + =1 {Sharing # file} + other {Sharing # files} } {count, plural, diff --git a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java index e9d65eed..d7d35100 100644 --- a/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java @@ -22,7 +22,6 @@ import android.util.PluralsMessageFormatter; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; -import android.widget.ImageView; import android.widget.TextView; import com.android.intentresolver.R; @@ -69,7 +68,7 @@ class FileContentPreviewUi extends ContentPreviewUi { final int uriCount = mFiles.size(); - displayHeadline(contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); + displayHeadline(contentPreviewLayout, mHeadlineGenerator.getFilesHeadline(mFiles.size())); if (uriCount == 0) { contentPreviewLayout.setVisibility(View.GONE); @@ -79,26 +78,21 @@ class FileContentPreviewUi extends ContentPreviewUi { } FileInfo fileInfo = mFiles.get(0); - final CharSequence fileName; - final int iconId; - if (uriCount == 1) { - fileName = fileInfo.getName(); - iconId = R.drawable.chooser_file_generic; - } else { + TextView fileNameView = contentPreviewLayout.findViewById( + R.id.content_preview_filename); + fileNameView.setText(fileInfo.getName()); + + TextView secondLine = contentPreviewLayout.findViewById( + R.id.content_preview_more_files); + if (uriCount > 1) { int remUriCount = uriCount - 1; Map arguments = new HashMap<>(); arguments.put(PLURALS_COUNT, remUriCount); - arguments.put(PLURALS_FILE_NAME, fileInfo.getName()); - fileName = PluralsMessageFormatter.format(resources, arguments, R.string.file_count); - iconId = R.drawable.ic_file_copy; + secondLine.setText( + PluralsMessageFormatter.format(resources, arguments, R.string.more_files)); + } else { + secondLine.setVisibility(View.GONE); } - TextView fileNameView = contentPreviewLayout.findViewById( - com.android.internal.R.id.content_preview_filename); - fileNameView.setText(fileName); - - ImageView fileIconView = contentPreviewLayout.findViewById( - com.android.internal.R.id.content_preview_file_icon); - fileIconView.setImageResource(iconId); final ActionRow actionRow = contentPreviewLayout.findViewById(com.android.internal.R.id.chooser_action_row); diff --git a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java index 5174234a..12843e0a 100644 --- a/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java @@ -153,7 +153,7 @@ class FilesPlusTextContentPreviewUi extends ContentPreviewUi { } else if (mAllVideos) { headline = mHeadlineGenerator.getVideosHeadline(mFiles.size()); } else { - headline = mHeadlineGenerator.getItemsHeadline(mFiles.size()); + headline = mHeadlineGenerator.getFilesHeadline(mFiles.size()); } } diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt index ad2a7ada..5f87c924 100644 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt +++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt @@ -16,8 +16,6 @@ package com.android.intentresolver.contentpreview -private const val PLURALS_COUNT = "count" - /** * HeadlineGenerator generates the text to show at the top of the sharesheet as a brief * description of the content being shared. @@ -35,5 +33,5 @@ interface HeadlineGenerator { fun getVideosHeadline(count: Int): String - fun getItemsHeadline(count: Int): String + fun getFilesHeadline(count: Int): String } diff --git a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt index a6b782ad..1aace8c3 100644 --- a/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt +++ b/java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt @@ -56,8 +56,8 @@ class HeadlineGeneratorImpl(private val context: Context) : HeadlineGenerator { return getPluralString(R.string.sharing_videos, count) } - override fun getItemsHeadline(count: Int): String { - return getPluralString(R.string.sharing_items, count) + override fun getFilesHeadline(count: Int): String { + return getPluralString(R.string.sharing_files, count) } private fun getPluralString(@StringRes templateResource: Int, count: Int): String { diff --git a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java index 6f1be116..8aa8026c 100644 --- a/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java +++ b/java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java @@ -130,7 +130,7 @@ class UnifiedContentPreviewUi extends ContentPreviewUi { contentPreviewLayout, mHeadlineGenerator.getVideosHeadline(mFiles.size())); } else { displayHeadline( - contentPreviewLayout, mHeadlineGenerator.getItemsHeadline(mFiles.size())); + contentPreviewLayout, mHeadlineGenerator.getFilesHeadline(mFiles.size())); } return contentPreviewLayout; diff --git a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java index 385f9fd8..cbc8d53e 100644 --- a/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java +++ b/java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java @@ -1203,12 +1203,9 @@ public class UnbundledChooserActivityTest { setupResolverControllers(resolvedComponentInfos); mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @@ -1228,12 +1225,11 @@ public class UnbundledChooserActivityTest { setupResolverControllers(resolvedComponentInfos); mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf + 2 files"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_more_files)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_more_files)).check(matches(withText("+ 2 more files"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test @@ -1252,12 +1248,9 @@ public class UnbundledChooserActivityTest { mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test @@ -1283,12 +1276,11 @@ public class UnbundledChooserActivityTest { mActivityRule.launchActivity(Intent.createChooser(sendIntent, null)); waitForIdle(); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(isDisplayed())); - onView(withId(com.android.internal.R.id.content_preview_filename)) - .check(matches(withText("app.pdf + 1 file"))); - onView(withId(com.android.internal.R.id.content_preview_file_icon)) - .check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_filename)).check(matches(withText("app.pdf"))); + onView(withId(R.id.content_preview_more_files)).check(matches(isDisplayed())); + onView(withId(R.id.content_preview_more_files)).check(matches(withText("+ 1 more file"))); + onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed())); } @Test diff --git a/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt b/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt index aac6caa7..a65280e5 100644 --- a/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt +++ b/java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt @@ -55,7 +55,7 @@ class HeadlineGeneratorImplTest { assertThat(generator.getVideosHeadline(1)).isEqualTo("Sharing video") assertThat(generator.getVideosHeadline(4)).isEqualTo("Sharing 4 videos") - assertThat(generator.getItemsHeadline(1)).isEqualTo("Sharing 1 item") - assertThat(generator.getItemsHeadline(4)).isEqualTo("Sharing 4 items") + assertThat(generator.getFilesHeadline(1)).isEqualTo("Sharing 1 file") + assertThat(generator.getFilesHeadline(4)).isEqualTo("Sharing 4 files") } } -- cgit v1.2.3-59-g8ed1b