Merge "Architecture review of Copyable Slice"

This commit is contained in:
Stanley Wang
2018-11-06 05:00:05 +00:00
committed by Android (Google) Code Review
8 changed files with 205 additions and 2 deletions

View File

@@ -93,6 +93,10 @@ public class SliceBuilderUtils {
return buildUnavailableSlice(context, sliceData);
}
if (controller instanceof CopyableSlice) {
return buildCopyableSlice(context, sliceData, controller);
}
switch (sliceData.getSliceType()) {
case SliceData.SliceType.INTENT:
return buildIntentSlice(context, sliceData, controller);
@@ -324,6 +328,28 @@ public class SliceBuilderUtils {
.build();
}
private static Slice buildCopyableSlice(Context context, SliceData sliceData,
BasePreferenceController controller) {
final SliceAction copyableAction = getCopyableAction(context, sliceData);
final PendingIntent contentIntent = getContentPendingIntent(context, sliceData);
final IconCompat icon = getSafeIcon(context, sliceData);
final SliceAction primaryAction = new SliceAction(contentIntent, icon,
sliceData.getTitle());
final CharSequence subtitleText = getSubtitleText(context, controller, sliceData);
@ColorInt final int color = Utils.getColorAccentDefaultColor(context);
final Set<String> keywords = buildSliceKeywords(sliceData);
return new ListBuilder(context, sliceData.getUri(), ListBuilder.INFINITY)
.setAccentColor(color)
.addRow(new RowBuilder()
.setTitle(sliceData.getTitle())
.setSubtitle(subtitleText)
.setPrimaryAction(primaryAction)
.addEndItem(copyableAction))
.setKeywords(keywords)
.build();
}
private static BasePreferenceController getPreferenceController(Context context,
String controllerClassName, String controllerKey) {
try {
@@ -346,6 +372,14 @@ public class SliceBuilderUtils {
return getActionIntent(context, SettingsSliceProvider.ACTION_SLIDER_CHANGED, sliceData);
}
private static SliceAction getCopyableAction(Context context, SliceData sliceData) {
final PendingIntent intent = getActionIntent(context,
SettingsSliceProvider.ACTION_COPY, sliceData);
final IconCompat icon = IconCompat.createWithResource(context,
R.drawable.ic_content_copy_grey600_24dp);
return new SliceAction(intent, icon, sliceData.getTitle());
}
private static boolean isValidSummary(Context context, CharSequence summary) {
if (summary == null || TextUtils.isEmpty(summary.toString().trim())) {
return false;