Create 'See All Networks' Preference to hide additional networks.
Bug: 34719725
Test: manual inspection, tests to be added in b/35322551
Change-Id: I1a5a08ca4c53db71b4c0c3d4c2942da65faa67d2
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 9c3a810..280c119 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1579,6 +1579,8 @@
<string name="wifi_starting">Turning Wi\u2011Fi on\u2026</string>
<!-- Summary text when turning Wi-Fi or bluetooth off -->
<string name="wifi_stopping">Turning off Wi\u2011Fi\u2026</string>
+ <!-- Title of Button to show all Wi-Fi networks in the picker. [CHAR LIMIT=30] -->
+ <string name="wifi_see_all_networks_button_title">See all networks</string>
<!-- Summary text when Wi-Fi or bluetooth has error -->
<string name="wifi_error">Error</string>
<!-- Summary text when wifi SoftAP started failed due to no legal usable channel allowed in this region by regulatory -->
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index faf5ca4..118d6eb 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -140,6 +140,10 @@
// should Next button only be enabled when we have a connection?
private boolean mEnableNextOnConnection;
+ // should see all networks instead of collapsing networks and showing mSeeAllNetworksPreference.
+ private boolean mSeeAllNetworks;
+ private static final int NETWORKS_TO_INITIALLY_SHOW = 5;
+
// Save the dialog details
private int mDialogMode;
private AccessPoint mDlgAccessPoint;
@@ -157,6 +161,7 @@
private PreferenceCategory mAccessPointsPreferenceCategory;
private PreferenceCategory mAdditionalSettingsPreferenceCategory;
private Preference mAddPreference;
+ private Preference mSeeAllNetworksPreference;
private Preference mConfigureWifiSettingsPreference;
private Preference mSavedNetworksPreference;
private LinkablePreference mStatusMessagePreference;
@@ -200,6 +205,10 @@
mAddPreference = new Preference(prefContext);
mAddPreference.setIcon(R.drawable.ic_menu_add_inset);
mAddPreference.setTitle(R.string.wifi_add_network);
+ mSeeAllNetworksPreference = new Preference(prefContext);
+ mSeeAllNetworksPreference.setIcon(R.drawable.ic_arrow_down_24dp);
+ mSeeAllNetworksPreference.setTitle(R.string.wifi_see_all_networks_button_title);
+ mSeeAllNetworks = false;
mStatusMessagePreference = new LinkablePreference(prefContext);
mUserBadgeCache = new AccessPointPreference.UserBadgeCache(getPackageManager());
@@ -524,6 +533,9 @@
}
} else if (preference == mAddPreference) {
onAddNetworkPressed();
+ } else if (preference == mSeeAllNetworksPreference) {
+ mSeeAllNetworks = true;
+ onAccessPointsChanged();
} else {
return super.onPreferenceTreeClick(preference);
}
@@ -635,8 +647,12 @@
cacheRemoveAllPrefs(mAccessPointsPreferenceCategory);
int index = configureConnectedAccessPointPreferenceCategory(accessPoints) ? 1 : 0;
+ boolean fewerNetworksThanLimit =
+ accessPoints.size() <= index + NETWORKS_TO_INITIALLY_SHOW;
+ int numAccessPointsToShow = mSeeAllNetworks || fewerNetworksThanLimit
+ ? accessPoints.size() : index + NETWORKS_TO_INITIALLY_SHOW;
- for (; index < accessPoints.size(); index++) {
+ for (; index < numAccessPointsToShow; index++) {
AccessPoint accessPoint = accessPoints.get(index);
// Ignore access points that are out of range.
if (accessPoint.getLevel() != -1) {
@@ -682,15 +698,19 @@
pref.setOrder(index++);
pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
mAccessPointsPreferenceCategory.addPreference(pref);
- mAddPreference.setOrder(index++);
- mAccessPointsPreferenceCategory.addPreference(mAddPreference);
- setConfigureWifiSettingsVisibility();
} else {
- mAddPreference.setOrder(index++);
- mAccessPointsPreferenceCategory.addPreference(mAddPreference);
- setConfigureWifiSettingsVisibility();
setProgressBarVisible(false);
}
+ if (mSeeAllNetworks || fewerNetworksThanLimit) {
+ mAccessPointsPreferenceCategory.removePreference(mSeeAllNetworksPreference);
+ mAddPreference.setOrder(index);
+ mAccessPointsPreferenceCategory.addPreference(mAddPreference);
+ } else {
+ mAccessPointsPreferenceCategory.removePreference(mAddPreference);
+ mSeeAllNetworksPreference.setOrder(index);
+ mAccessPointsPreferenceCategory.addPreference(mSeeAllNetworksPreference);
+ }
+ setConfigureWifiSettingsVisibility();
if (mScanMenuItem != null) {
mScanMenuItem.setEnabled(true);
}