Fix regression with big picture items
The filtering logic for content descriptions was the
problem here.
Also adds big picture to render tests.
Test: ./gradlew slices-view:connectedCheck
Change-Id: If680ffa0af5654b0f38d32093e6fe939e19bdd2c
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
index 62b3610..8e07b27 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceCreator.java
@@ -53,7 +53,8 @@
public static final String EXTRA_TOAST_MESSAGE = "com.example.androidx.extra.TOAST_MESSAGE";
public static final String[] URI_PATHS = {"message", "wifi", "wifi2", "note", "ride", "toggle",
- "toggle2", "contact", "gallery", "subscription", "subscription2", "weather"};
+ "toggle2", "contact", "gallery", "subscription", "subscription2", "weather",
+ "reservation"};
private final Context mContext;
@@ -103,6 +104,8 @@
return createSubSlice(sliceUri, true /* customSeeMore */);
case "/weather":
return createWeather(sliceUri);
+ case "/reservation":
+ return createReservationSlice(sliceUri);
}
throw new IllegalArgumentException("Unknown uri " + sliceUri);
}
@@ -220,7 +223,8 @@
.addRow(rb
.setTitle("Mady Pitza")
.setSubtitle("Frequently contacted contact")
- .addEndItem(Icon.createWithResource(getContext(), R.drawable.mady)))
+ .addEndItem(Icon.createWithResource(getContext(), R.drawable.mady),
+ SMALL_IMAGE))
.addGrid(gb
.addCell(new GridBuilder.CellBuilder(gb)
.addImage(Icon.createWithResource(getContext(), R.drawable.ic_call),
@@ -409,6 +413,36 @@
return lb.build();
}
+ private Slice createReservationSlice(Uri sliceUri) {
+ ListBuilder lb = new ListBuilder(getContext(), sliceUri);
+ GridBuilder gb1 = new GridBuilder(lb);
+ gb1.addCell(new GridBuilder.CellBuilder(gb1)
+ .addImage(Icon.createWithResource(getContext(), R.drawable.reservation),
+ LARGE_IMAGE)
+ .setContentDescription("Image of your reservation in Seattle"));
+ GridBuilder gb2 = new GridBuilder(lb);
+ gb2.addCell(new GridBuilder.CellBuilder(gb2)
+ .addTitleText("Check In")
+ .addText("12:00 PM, Feb 1"))
+ .addCell(new GridBuilder.CellBuilder(gb2)
+ .addTitleText("Check Out")
+ .addText("11:00 AM, Feb 19"));
+ return lb.setColor(0xffFF5252)
+ .setHeader(new ListBuilder.HeaderBuilder(lb)
+ .setTitle("Upcoming trip to Seattle")
+ .setSubtitle("Feb 1 - 19 | 2 guests"))
+ .addAction(new SliceAction(
+ getBroadcastIntent(ACTION_TOAST, "show location on map"),
+ Icon.createWithResource(getContext(), R.drawable.ic_location),
+ "Show reservation location"))
+ .addAction(new SliceAction(getBroadcastIntent(ACTION_TOAST, "contact host"),
+ Icon.createWithResource(getContext(), R.drawable.ic_text),
+ "Contact host"))
+ .addGrid(gb1)
+ .addGrid(gb2)
+ .build();
+ }
+
private PendingIntent getIntent(String action) {
Intent intent = new Intent(action);
intent.setClassName(getContext().getPackageName(), SliceRenderActivity.class.getName());
diff --git a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
index eeeea2b..5625c34 100644
--- a/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
+++ b/slices/view/src/androidTest/java/androidx/slice/render/SliceRenderer.java
@@ -24,7 +24,6 @@
import android.graphics.Canvas;
import android.os.AsyncTask;
import android.os.Handler;
-import androidx.recyclerview.widget.RecyclerView;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
@@ -36,6 +35,7 @@
import java.io.FileOutputStream;
import java.util.concurrent.CountDownLatch;
+import androidx.recyclerview.widget.RecyclerView;
import androidx.slice.Slice;
import androidx.slice.SliceProvider;
import androidx.slice.view.test.R;
@@ -65,7 +65,7 @@
protected void onLayout(boolean changed, int l, int t, int r, int b) {
int width = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 1000,
mContext.getResources().getDisplayMetrics());
- int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 300,
+ int height = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 330,
mContext.getResources().getDisplayMetrics());
mLayout.measure(makeMeasureSpec(width, View.MeasureSpec.EXACTLY),
makeMeasureSpec(height, View.MeasureSpec.EXACTLY));
diff --git a/slices/view/src/androidTest/res/drawable/ic_location.xml b/slices/view/src/androidTest/res/drawable/ic_location.xml
new file mode 100644
index 0000000..2f2db39
--- /dev/null
+++ b/slices/view/src/androidTest/res/drawable/ic_location.xml
@@ -0,0 +1,25 @@
+<!--
+ ~ Copyright 2018 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportWidth="24.0"
+ android:viewportHeight="24.0">
+ <path
+ android:fillColor="#FF000000"
+ android:pathData="M12,2C8.13,2 5,5.13 5,9c0,5.25 7,13 7,13s7,-7.75 7,-13c0,-3.87 -3.13,-7 -7,-7zM12,11.5c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5z"/>
+</vector>
diff --git a/slices/view/src/androidTest/res/drawable/reservation.png b/slices/view/src/androidTest/res/drawable/reservation.png
new file mode 100644
index 0000000..16acc98
--- /dev/null
+++ b/slices/view/src/androidTest/res/drawable/reservation.png
Binary files differ
diff --git a/slices/view/src/main/java/androidx/slice/widget/GridContent.java b/slices/view/src/main/java/androidx/slice/widget/GridContent.java
index e6c1dfe..fd9b507 100644
--- a/slices/view/src/main/java/androidx/slice/widget/GridContent.java
+++ b/slices/view/src/main/java/androidx/slice/widget/GridContent.java
@@ -104,12 +104,15 @@
// Check if it it's only one item that is a slice
if (items.size() == 1 && items.get(0).getFormat().equals(FORMAT_SLICE)) {
items = items.get(0).getSlice().getItems();
- items = filterAndProcessItems(items);
}
for (int i = 0; i < items.size(); i++) {
SliceItem item = items.get(i);
- CellContent cc = new CellContent(item);
- processContent(cc);
+ if (SUBTYPE_CONTENT_DESCRIPTION.equals(item.getSubType())) {
+ mContentDescr = item;
+ } else {
+ CellContent cc = new CellContent(item);
+ processContent(cc);
+ }
}
} else {
CellContent cc = new CellContent(gridItem);