[Provider Model] Adjust the design of "See all" (QS Internet Dialog)

- Show "See all" until there are results && there are more results than
can fit into the panel.

- See b/206061768#comment22 for a screenshot.

Bug: 206061768
Test: manual test
atest -c InternetDialogControllerTest \
         InternetDialogTest

Change-Id: If58364d865ea4497ea270fddbe8ba409f6069391
This commit is contained in:
Weng Su
2021-12-06 22:24:12 +08:00
parent 535795b36d
commit 427e2410d2
4 changed files with 62 additions and 30 deletions

View File

@@ -137,6 +137,8 @@ public class InternetDialog extends SystemUIDialog implements
protected WifiEntry mConnectedWifiEntry;
@VisibleForTesting
protected int mWifiEntriesCount;
@VisibleForTesting
protected boolean mHasMoreEntry;
// Wi-Fi scanning progress bar
protected boolean mIsProgressBarVisible;
@@ -464,8 +466,7 @@ public class InternetDialog extends SystemUIDialog implements
}
mWifiRecyclerView.setMinimumHeight(mWifiNetworkHeight * getWifiListMaxCount());
mWifiRecyclerView.setVisibility(View.VISIBLE);
final boolean showSeeAll = mConnectedWifiEntry != null || mWifiEntriesCount > 0;
mSeeAllLayout.setVisibility(showSeeAll ? View.VISIBLE : View.INVISIBLE);
mSeeAllLayout.setVisibility(mHasMoreEntry ? View.VISIBLE : View.INVISIBLE);
}
@VisibleForTesting
@@ -651,13 +652,14 @@ public class InternetDialog extends SystemUIDialog implements
@Override
@WorkerThread
public void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
@Nullable WifiEntry connectedEntry) {
@Nullable WifiEntry connectedEntry, boolean hasMoreEntry) {
// Should update the carrier network layout when it is connected under airplane mode ON.
boolean shouldUpdateCarrierNetwork = mMobileNetworkLayout.getVisibility() == View.VISIBLE
&& mInternetDialogController.isAirplaneModeEnabled();
mHandler.post(() -> {
mConnectedWifiEntry = connectedEntry;
mWifiEntriesCount = wifiEntries == null ? 0 : wifiEntries.size();
mHasMoreEntry = hasMoreEntry;
updateDialog(shouldUpdateCarrierNetwork /* shouldUpdateMobileNetwork */);
mAdapter.setWifiEntries(wifiEntries, mWifiEntriesCount);
mAdapter.notifyDataSetChanged();

View File

@@ -879,11 +879,13 @@ public class InternetDialogController implements AccessPointController.AccessPoi
mConnectedEntry = null;
mWifiEntriesCount = 0;
if (mCallback != null) {
mCallback.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */);
mCallback.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */,
false /* hasMoreEntry */);
}
return;
}
boolean hasMoreEntry = false;
int count = MAX_WIFI_ENTRY_COUNT;
if (mHasEthernet) {
count -= 1;
@@ -891,8 +893,11 @@ public class InternetDialogController implements AccessPointController.AccessPoi
if (hasActiveSubId()) {
count -= 1;
}
if (count > accessPoints.size()) {
count = accessPoints.size();
final int wifiTotalCount = accessPoints.size();
if (count > wifiTotalCount) {
count = wifiTotalCount;
} else if (count < wifiTotalCount) {
hasMoreEntry = true;
}
WifiEntry connectedEntry = null;
@@ -909,7 +914,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
mWifiEntriesCount = wifiEntries.size();
if (mCallback != null) {
mCallback.onAccessPointsChanged(wifiEntries, mConnectedEntry);
mCallback.onAccessPointsChanged(wifiEntries, mConnectedEntry, hasMoreEntry);
}
}
@@ -1060,7 +1065,7 @@ public class InternetDialogController implements AccessPointController.AccessPoi
void dismissDialog();
void onAccessPointsChanged(@Nullable List<WifiEntry> wifiEntries,
@Nullable WifiEntry connectedEntry);
@Nullable WifiEntry connectedEntry, boolean hasMoreEntry);
}
void makeOverlayToast(int stringId) {

View File

@@ -400,7 +400,7 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
verify(mInternetDialogCallback, never()).onAccessPointsChanged(any(), any());
verify(mInternetDialogCallback, never()).onAccessPointsChanged(any(), any(), anyBoolean());
}
@Test
@@ -409,8 +409,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(null /* accessPoints */);
verify(mInternetDialogCallback)
.onAccessPointsChanged(null /* wifiEntries */, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(null /* wifiEntries */,
null /* connectedEntry */, false /* hasMoreEntry */);
}
@Test
@@ -423,7 +423,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.clear();
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
false /* hasMoreEntry */);
}
@Test
@@ -437,8 +438,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
null /* connectedEntry */, false /* hasMoreEntry */);
}
@Test
@@ -453,7 +454,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
false /* hasMoreEntry */);
}
@Test
@@ -470,7 +472,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
false /* hasMoreEntry */);
}
@Test
@@ -489,7 +492,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
false /* hasMoreEntry */);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
@@ -498,7 +502,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
true /* hasMoreEntry */);
}
@Test
@@ -518,7 +523,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.add(mWifiEntry1);
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
true /* hasMoreEntry */);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
@@ -527,7 +533,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries, mConnectedEntry,
true /* hasMoreEntry */);
}
@Test
@@ -547,8 +554,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.add(mWifiEntry2);
mWifiEntries.add(mWifiEntry3);
mWifiEntries.add(mWifiEntry4);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
null /* connectedEntry */, false /* hasMoreEntry */);
// If the Ethernet exists, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
@@ -557,8 +564,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry4);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
null /* connectedEntry */, true /* hasMoreEntry */);
// Turn off airplane mode to has carrier network, then Wi-Fi entries will cut last one.
reset(mInternetDialogCallback);
@@ -567,8 +574,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mInternetDialogController.onAccessPointsChanged(mAccessPoints);
mWifiEntries.remove(mWifiEntry3);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
null /* connectedEntry */, true /* hasMoreEntry */);
}
@Test
@@ -584,8 +591,8 @@ public class InternetDialogControllerTest extends SysuiTestCase {
mWifiEntries.clear();
mWifiEntries.add(mWifiEntry1);
verify(mInternetDialogCallback)
.onAccessPointsChanged(mWifiEntries, null /* connectedEntry */);
verify(mInternetDialogCallback).onAccessPointsChanged(mWifiEntries,
null /* connectedEntry */, false /* hasMoreEntry */);
}
@Test

View File

@@ -315,6 +315,20 @@ public class InternetDialogTest extends SysuiTestCase {
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
}
@Test
public void updateDialog_wifiOnAndOneWifiEntry_showWifiListAndSeeAllArea() {
// The precondition WiFi ON is already in setUp()
mInternetDialog.mConnectedWifiEntry = null;
mInternetDialog.mWifiEntriesCount = 1;
mInternetDialog.updateDialog(false);
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.GONE);
// Show a blank block to fix the dialog height even if there is no WiFi list
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
}
@Test
public void updateDialog_wifiOnAndHasConnectedWifi_showAllWifiAndSeeAllArea() {
// The preconditions WiFi ON and WiFi entries are already in setUp()
@@ -325,13 +339,15 @@ public class InternetDialogTest extends SysuiTestCase {
assertThat(mConnectedWifi.getVisibility()).isEqualTo(View.VISIBLE);
// Show a blank block to fix the dialog height even if there is no WiFi list
assertThat(mWifiList.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mSeeAll.getVisibility()).isEqualTo(View.VISIBLE);
assertThat(mSeeAll.getVisibility()).isEqualTo(View.INVISIBLE);
}
@Test
public void updateDialog_wifiOnAndHasWifiList_showWifiListAndSeeAll() {
public void updateDialog_wifiOnAndHasMaxWifiList_showWifiListAndSeeAll() {
// The preconditions WiFi ON and WiFi entries are already in setUp()
mInternetDialog.mConnectedWifiEntry = null;
mInternetDialog.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT;
mInternetDialog.mHasMoreEntry = true;
mInternetDialog.updateDialog(false);
@@ -343,6 +359,8 @@ public class InternetDialogTest extends SysuiTestCase {
@Test
public void updateDialog_wifiOnAndHasBothWifiEntry_showBothWifiEntryAndSeeAll() {
// The preconditions WiFi ON and WiFi entries are already in setUp()
mInternetDialog.mWifiEntriesCount = MAX_WIFI_ENTRY_COUNT - 1;
mInternetDialog.mHasMoreEntry = true;
mInternetDialog.updateDialog(false);