summaryrefslogtreecommitdiff
path: root/java
diff options
context:
space:
mode:
author 1 <mrcasey@google.com> 2023-04-21 02:23:11 +0000
committer 1 <mrcasey@google.com> 2023-04-24 13:49:49 +0000
commitc393f91bcf5976d2db378b1da5a82a37ddc8e6c1 (patch)
treeef1e32e0a30ac3f42d8d13bed22a3c940570954b /java
parent395868a876907174d4923823048bd1f81a1987a7 (diff)
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
Diffstat (limited to 'java')
-rw-r--r--java/res/layout/chooser_grid_preview_file.xml76
-rw-r--r--java/res/layout/chooser_grid_preview_text.xml1
-rw-r--r--java/res/values/strings.xml21
-rw-r--r--java/src/com/android/intentresolver/contentpreview/FileContentPreviewUi.java30
-rw-r--r--java/src/com/android/intentresolver/contentpreview/FilesPlusTextContentPreviewUi.java2
-rw-r--r--java/src/com/android/intentresolver/contentpreview/HeadlineGenerator.kt4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImpl.kt4
-rw-r--r--java/src/com/android/intentresolver/contentpreview/UnifiedContentPreviewUi.java2
-rw-r--r--java/tests/src/com/android/intentresolver/UnbundledChooserActivityTest.java40
-rw-r--r--java/tests/src/com/android/intentresolver/contentpreview/HeadlineGeneratorImplTest.kt4
10 files changed, 90 insertions, 94 deletions
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">
- <include layout="@layout/chooser_headline_row" />
+ <include layout="@layout/chooser_headline_row"/>
- <LinearLayout
- android:layout_width="@dimen/chooser_preview_width"
- android:layout_height="wrap_content"
- android:layout_gravity="center"
- android:orientation="horizontal"
- android:paddingLeft="@dimen/chooser_edge_margin_normal"
- android:paddingRight="@dimen/chooser_edge_margin_normal"
- android:layout_marginBottom="@dimen/chooser_view_spacing"
- android:id="@androidprv:id/content_preview_file_layout">
-
- <ImageView
- android:id="@androidprv:id/content_preview_file_icon"
- android:layout_width="36dp"
- android:layout_height="36dp"
- android:layout_marginRight="16dp"
- android:adjustViewBounds="true"
- android:layout_gravity="center_vertical"
- android:gravity="center"
- android:scaleType="fitCenter" />
- <TextView
- android:id="@androidprv:id/content_preview_filename"
- android:layout_width="0dp"
- android:layout_weight="1"
+ <RelativeLayout
+ android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:layout_gravity="center_vertical"
- android:ellipsize="middle"
- android:gravity="start|top"
- android:paddingRight="24dp"
- android:singleLine="true"
- android:textAppearance="@style/TextAppearance.ChooserDefault" />
- </LinearLayout>
+ 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">
+
+ <ImageView
+ android:id="@+id/content_preview_file_icon"
+ android:layout_width="24dp"
+ android:layout_height="24dp"
+ android:layout_marginEnd="16dp"
+ android:layout_alignParentStart="true"
+ android:layout_centerVertical="true"
+ android:src="@drawable/ic_file_copy"
+ android:scaleType="fitCenter"/>
+ <TextView
+ android:id="@+id/content_preview_filename"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toEndOf="@id/content_preview_file_icon"
+ android:layout_alignParentTop="true"
+ android:layout_alignWithParentIfMissing="true"
+ android:ellipsize="middle"
+ android:gravity="start|top"
+ android:singleLine="true"
+ android:textStyle="bold"
+ android:textAppearance="@style/TextAppearance.ChooserDefault"/>
+
+ <TextView
+ android:id="@+id/content_preview_more_files"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_toEndOf="@id/content_preview_file_icon"
+ android:layout_below="@id/content_preview_filename"
+ android:layout_alignWithParentIfMissing="true"
+ android:gravity="start|top"
+ android:singleLine="true"
+ android:textAppearance="@style/TextAppearance.ChooserDefault"/>
+ </RelativeLayout>
- <include layout="@layout/chooser_action_row" />
+ <include layout="@layout/chooser_action_row"/>
</LinearLayout>
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 @@
<!-- Notification action for editing a screenshot (drawing on it, cropping it, etc) -->
<string name="screenshot_edit">Edit</string>
- <string name="file_count">{count, plural,
- =1 {{file_name} + # file}
- other {{file_name} + # files}
- }
- </string>
-
<!-- Represents a number of other files also being shared; used as an item at the end of a list -->
<string name="other_files">{count, plural,
=1 {+ # file}
@@ -137,6 +131,13 @@
}
</string>
+ <!-- Text label indicating the number of other files also being shared -->
+ <string name="more_files">{count, plural,
+ =1 {+ # more file}
+ other {+ # more files}
+ }
+ </string>
+
<!-- Title atop a sharing UI indicating that text is being shared [CHAR_LIMIT=50] -->
<string name="sharing_text">Sharing text</string>
<!-- Title atop a sharing UI indicating that a link (URL) is being shared [CHAR_LIMIT=50] -->
@@ -153,11 +154,11 @@
other {Sharing # videos}
}
</string>
- <!-- Title atop a sharing UI indicating that some number of items are being shared
+ <!-- Title atop a sharing UI indicating that some number of files are being shared
(for example: sharing a mixture of photos and videos [CHAR_LIMIT=50] -->
- <string name="sharing_items">{count, plural,
- =1 {Sharing # item}
- other {Sharing # items}
+ <string name="sharing_files">{count, plural,
+ =1 {Sharing # file}
+ other {Sharing # files}
}
</string>
<string name="sharing_images_with_text">{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<String, Object> 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")
}
}