Show the see more item when scrolling is disabled on long list
* Added to wifi sample / render test to show list of fake networks, it
also implements see more
* Logic for determining how many list items we can show for the height
when scrolling is disabled (effectively disabling scrolling on the RV)
* Some adjustments to measuring / heights to support this logic
Bug: 68378574
Test: ./gradlew slices-view:connectedCheck (check wifi slice)
Change-Id: I0cbfa04faa6d2c02f587e40b9ad4b4244f35e388
diff --git a/slices/view/src/androidTest/java/androidx/app/slice/render/SliceCreator.java b/slices/view/src/androidTest/java/androidx/app/slice/render/SliceCreator.java
index 546f1e3..5e91022 100644
--- a/slices/view/src/androidTest/java/androidx/app/slice/render/SliceCreator.java
+++ b/slices/view/src/androidTest/java/androidx/app/slice/render/SliceCreator.java
@@ -48,7 +48,7 @@
"com.example.androidx.slice.action.TOAST";
public static final String EXTRA_TOAST_MESSAGE = "com.example.androidx.extra.TOAST_MESSAGE";
- public static final String[] URI_PATHS = {"message", "wifi", "note", "ride", "toggle",
+ public static final String[] URI_PATHS = {"message", "wifi", "wifi2", "note", "ride", "toggle",
"toggle2", "contact", "gallery", "weather"};
private final Context mContext;
@@ -78,7 +78,9 @@
case "/message":
return createMessagingSlice(sliceUri);
case "/wifi":
- return createWifiSlice(sliceUri);
+ return createWifiSlice(sliceUri, false /* customSeeMore */);
+ case "/wifi2":
+ return createWifiSlice(sliceUri, true /* customSeeMore */);
case "/note":
return createNoteSlice(sliceUri);
case "/ride":
@@ -283,7 +285,7 @@
.build();
}
- private Slice createWifiSlice(Uri sliceUri) {
+ private Slice createWifiSlice(Uri sliceUri, boolean customSeeMore) {
// Get wifi state
WifiManager wifiManager = (WifiManager) getContext().getSystemService(Context.WIFI_SERVICE);
int wifiState = wifiManager.getWifiState();
@@ -305,18 +307,46 @@
break;
}
boolean finalWifiEnabled = wifiEnabled;
- ListBuilder b = new ListBuilder(getContext(), sliceUri);
+ ListBuilder lb = new ListBuilder(getContext(), sliceUri);
SliceAction primaryAction = new SliceAction(getIntent(Settings.ACTION_WIFI_SETTINGS),
Icon.createWithResource(getContext(), R.drawable.ic_wifi), "Wi-fi Settings");
- return b.setColor(0xff4285f4)
- .addRow(new ListBuilder.RowBuilder(b)
- .setTitle("Wi-fi")
- .setTitleItem(Icon.createWithResource(getContext(), R.drawable.ic_wifi))
- .setSubtitle(state)
- .addEndItem(new SliceAction(getBroadcastIntent(ACTION_WIFI_CHANGED, null),
- "Toggle wifi", finalWifiEnabled))
- .setPrimaryAction(primaryAction))
- .build();
+ lb.setColor(0xff4285f4);
+ lb.addRow(new ListBuilder.RowBuilder(lb)
+ .setTitle("Wi-fi")
+ .setTitleItem(Icon.createWithResource(getContext(), R.drawable.ic_wifi))
+ .setSubtitle(state)
+ .addEndItem(new SliceAction(getBroadcastIntent(ACTION_WIFI_CHANGED, null),
+ "Toggle wifi", finalWifiEnabled))
+ .setPrimaryAction(primaryAction));
+
+ // Add fake wifi networks
+ int[] wifiIcons = new int[] {R.drawable.ic_wifi_full, R.drawable.ic_wifi_low,
+ R.drawable.ic_wifi_fair};
+ for (int i = 0; i < 10; i++) {
+ final int iconId = wifiIcons[i % wifiIcons.length];
+ Icon icon = Icon.createWithResource(getContext(), iconId);
+ final String networkName = "Network" + i;
+ ListBuilder.RowBuilder rb = new ListBuilder.RowBuilder(lb);
+ rb.setTitleItem(icon)
+ .setTitle("Network" + networkName);
+ boolean locked = i % 3 == 0;
+ if (locked) {
+ rb.addEndItem(Icon.createWithResource(getContext(), R.drawable.ic_lock));
+ }
+ String message = locked ? "Open wifi password dialog" : "Connect to " + networkName;
+ rb.setPrimaryAction(new SliceAction(getBroadcastIntent(ACTION_TOAST, message), icon,
+ message));
+ lb.addRow(rb);
+ }
+ if (customSeeMore) {
+ lb.addSeeMoreRow(new ListBuilder.RowBuilder(lb)
+ .setTitle("See all available networks")
+ .addEndItem(Icon.createWithResource(getContext(), R.drawable.ic_right_caret))
+ .setPrimaryAction(primaryAction));
+ } else {
+ lb.addSeeMoreAction(primaryAction.getAction());
+ }
+ return lb.build();
}
private PendingIntent getIntent(String action) {