Merge "Add progress bar and delay to WifiSettings refresh."
This commit is contained in:
committed by
Android (Google) Code Review
commit
2219a7725b
@@ -629,71 +629,11 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
switch (wifiState) {
|
switch (wifiState) {
|
||||||
case WifiManager.WIFI_STATE_ENABLED:
|
case WifiManager.WIFI_STATE_ENABLED:
|
||||||
// AccessPoints are sorted by the WifiTracker
|
setProgressBarVisible(true);
|
||||||
final List<AccessPoint> accessPoints = mWifiTracker.getAccessPoints();
|
// Have the progress bar displayed before starting to modify APs
|
||||||
|
getView().postDelayed(() -> {
|
||||||
boolean hasAvailableAccessPoints = false;
|
updateAccessPointPreferences();
|
||||||
mAccessPointsPreferenceCategory.removePreference(mStatusMessagePreference);
|
}, 300 /* delay milliseconds */);
|
||||||
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 < numAccessPointsToShow; index++) {
|
|
||||||
AccessPoint accessPoint = accessPoints.get(index);
|
|
||||||
// Ignore access points that are out of range.
|
|
||||||
if (accessPoint.isReachable()) {
|
|
||||||
String key = accessPoint.getBssid();
|
|
||||||
if (TextUtils.isEmpty(key)) {
|
|
||||||
key = accessPoint.getSsidStr();
|
|
||||||
}
|
|
||||||
hasAvailableAccessPoints = true;
|
|
||||||
LongPressAccessPointPreference pref = (LongPressAccessPointPreference)
|
|
||||||
getCachedPreference(key);
|
|
||||||
if (pref != null) {
|
|
||||||
pref.setOrder(index);
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
LongPressAccessPointPreference
|
|
||||||
preference = createLongPressActionPointPreference(accessPoint);
|
|
||||||
preference.setKey(key);
|
|
||||||
preference.setOrder(index);
|
|
||||||
if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsidStr())
|
|
||||||
&& !accessPoint.isSaved()
|
|
||||||
&& accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
|
|
||||||
onPreferenceTreeClick(preference);
|
|
||||||
mOpenSsid = null;
|
|
||||||
}
|
|
||||||
mAccessPointsPreferenceCategory.addPreference(preference);
|
|
||||||
accessPoint.setListener(this);
|
|
||||||
preference.refresh();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
|
||||||
if (!hasAvailableAccessPoints) {
|
|
||||||
setProgressBarVisible(true);
|
|
||||||
Preference pref = new Preference(getPrefContext());
|
|
||||||
pref.setSelectable(false);
|
|
||||||
pref.setSummary(R.string.wifi_empty_list_wifi_on);
|
|
||||||
pref.setOrder(index++);
|
|
||||||
pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
|
|
||||||
mAccessPointsPreferenceCategory.addPreference(pref);
|
|
||||||
} else {
|
|
||||||
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();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WifiManager.WIFI_STATE_ENABLING:
|
case WifiManager.WIFI_STATE_ENABLING:
|
||||||
@@ -715,6 +655,79 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateAccessPointPreferences() {
|
||||||
|
// AccessPoints are sorted by the WifiTracker
|
||||||
|
final List<AccessPoint> accessPoints = mWifiTracker.getAccessPoints();
|
||||||
|
|
||||||
|
boolean hasAvailableAccessPoints = false;
|
||||||
|
mAccessPointsPreferenceCategory.removePreference(mStatusMessagePreference);
|
||||||
|
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 < numAccessPointsToShow; index++) {
|
||||||
|
AccessPoint accessPoint = accessPoints.get(index);
|
||||||
|
// Ignore access points that are out of range.
|
||||||
|
if (accessPoint.isReachable()) {
|
||||||
|
String key = accessPoint.getBssid();
|
||||||
|
if (TextUtils.isEmpty(key)) {
|
||||||
|
key = accessPoint.getSsidStr();
|
||||||
|
}
|
||||||
|
hasAvailableAccessPoints = true;
|
||||||
|
LongPressAccessPointPreference pref =
|
||||||
|
(LongPressAccessPointPreference) getCachedPreference(key);
|
||||||
|
if (pref != null) {
|
||||||
|
pref.setOrder(index);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
LongPressAccessPointPreference preference =
|
||||||
|
createLongPressActionPointPreference(accessPoint);
|
||||||
|
preference.setKey(key);
|
||||||
|
preference.setOrder(index);
|
||||||
|
if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsidStr())
|
||||||
|
&& !accessPoint.isSaved()
|
||||||
|
&& accessPoint.getSecurity() != AccessPoint.SECURITY_NONE) {
|
||||||
|
onPreferenceTreeClick(preference);
|
||||||
|
mOpenSsid = null;
|
||||||
|
}
|
||||||
|
mAccessPointsPreferenceCategory.addPreference(preference);
|
||||||
|
accessPoint.setListener(WifiSettings.this);
|
||||||
|
preference.refresh();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
||||||
|
if (mSeeAllNetworks || fewerNetworksThanLimit) {
|
||||||
|
mAccessPointsPreferenceCategory.removePreference(mSeeAllNetworksPreference);
|
||||||
|
mAddPreference.setOrder(index);
|
||||||
|
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||||
|
} else {
|
||||||
|
mAccessPointsPreferenceCategory.removePreference(mAddPreference);
|
||||||
|
mSeeAllNetworksPreference.setOrder(index);
|
||||||
|
mAccessPointsPreferenceCategory.addPreference(mSeeAllNetworksPreference);
|
||||||
|
}
|
||||||
|
setConfigureWifiSettingsVisibility();
|
||||||
|
|
||||||
|
if (!hasAvailableAccessPoints) {
|
||||||
|
setProgressBarVisible(true);
|
||||||
|
Preference pref = new Preference(getPrefContext());
|
||||||
|
pref.setSelectable(false);
|
||||||
|
pref.setSummary(R.string.wifi_empty_list_wifi_on);
|
||||||
|
pref.setOrder(index++);
|
||||||
|
pref.setKey(PREF_KEY_EMPTY_WIFI_LIST);
|
||||||
|
mAccessPointsPreferenceCategory.addPreference(pref);
|
||||||
|
} else {
|
||||||
|
// Continuing showing progress bar for an additional delay to overlap with animation
|
||||||
|
getView().postDelayed(() -> {
|
||||||
|
setProgressBarVisible(false);
|
||||||
|
}, 1700 /* delay millis */);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private LongPressAccessPointPreference createLongPressActionPointPreference(
|
private LongPressAccessPointPreference createLongPressActionPointPreference(
|
||||||
AccessPoint accessPoint) {
|
AccessPoint accessPoint) {
|
||||||
@@ -844,7 +857,8 @@ public class WifiSettings extends RestrictedSettingsFragment
|
|||||||
|
|
||||||
protected void setProgressBarVisible(boolean visible) {
|
protected void setProgressBarVisible(boolean visible) {
|
||||||
if (mProgressHeader != null) {
|
if (mProgressHeader != null) {
|
||||||
mProgressHeader.setVisibility(visible && !isUiRestricted() ? View.VISIBLE : View.GONE);
|
mProgressHeader.setVisibility(
|
||||||
|
visible && !isUiRestricted() ? View.VISIBLE : View.INVISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user