Improve UX of WifiDppChooseSavedWifiNetworkFragment
In WifiDppChooseSavedWifiNetworkFragment, it does not show the saved Wi-Fi network which is not reachable, users may be confused about why their saved Wi-Fi network not on the list. This change shows saved networks regardless of signal reachable or not. Fix WifiDppChooseSavedWifiNetworkFragment UI overlap problem, remove redundant ScrollView and adjust ConstraintLayout parameters. Bug: 124129645 Test: manual test Change-Id: I86637e8722bb8f40a3b995a617dc1e22b2ae324a
This commit is contained in:
@@ -22,28 +22,24 @@
|
|||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="match_parent">
|
||||||
|
|
||||||
<ScrollView
|
<LinearLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent">
|
android:layout_height="0dp"
|
||||||
|
android:gravity="center_horizontal"
|
||||||
|
android:orientation="vertical"
|
||||||
|
app:layout_constraintTop_toTopOf="parent"
|
||||||
|
app:layout_constraintBottom_toTopOf="@+id/footer">
|
||||||
|
|
||||||
<LinearLayout
|
<include layout="@layout/wifi_dpp_fragment_header"/>
|
||||||
|
|
||||||
|
<LinearLayout android:id="@+id/wifi_network_list_container"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="match_parent"
|
android:layout_height="wrap_content"/>
|
||||||
android:gravity="center_horizontal"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
<include layout="@layout/wifi_dpp_fragment_header"/>
|
</LinearLayout>
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/wifi_network_list_container"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
app:layout_constraintTop_toBottomOf="@+id/header"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</ScrollView>
|
|
||||||
|
|
||||||
<include
|
<include
|
||||||
|
android:id="@+id/footer"
|
||||||
layout="@layout/wifi_dpp_fragment_footer"
|
layout="@layout/wifi_dpp_fragment_footer"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
|
@@ -34,11 +34,14 @@ import com.android.settings.R;
|
|||||||
import com.android.settings.SettingsPreferenceFragment;
|
import com.android.settings.SettingsPreferenceFragment;
|
||||||
import com.android.settings.core.SubSettingLauncher;
|
import com.android.settings.core.SubSettingLauncher;
|
||||||
import com.android.settings.wifi.AddNetworkFragment;
|
import com.android.settings.wifi.AddNetworkFragment;
|
||||||
|
import com.android.settings.wifi.savedaccesspoints.SavedNetworkComparator;
|
||||||
import com.android.settingslib.wifi.AccessPoint;
|
import com.android.settingslib.wifi.AccessPoint;
|
||||||
import com.android.settingslib.wifi.AccessPointPreference;
|
import com.android.settingslib.wifi.AccessPointPreference;
|
||||||
|
import com.android.settingslib.wifi.WifiSavedConfigUtils;
|
||||||
import com.android.settingslib.wifi.WifiTracker;
|
import com.android.settingslib.wifi.WifiTracker;
|
||||||
import com.android.settingslib.wifi.WifiTrackerFactory;
|
import com.android.settingslib.wifi.WifiTrackerFactory;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class WifiNetworkListFragment extends SettingsPreferenceFragment implements
|
public class WifiNetworkListFragment extends SettingsPreferenceFragment implements
|
||||||
@@ -256,17 +259,6 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can only use saved network for DPP configuration. For ephemeral connections networkId
|
|
||||||
// is invalid.
|
|
||||||
if (!accessPoint.isSaved()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Ignore access points that are out of range.
|
|
||||||
if (!accessPoint.isReachable()) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -290,44 +282,47 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// AccessPoints are sorted by the WifiTracker
|
// TODO(b/128942314): Lists reachable AccessPoints on top of the list
|
||||||
final List<AccessPoint> accessPoints = mWifiTracker.getAccessPoints();
|
final List<AccessPoint> savedAccessPoints =
|
||||||
|
WifiSavedConfigUtils.getAllConfigs(getContext(), mWifiManager);
|
||||||
mAccessPointsPreferenceCategory.setVisible(true);
|
Collections.sort(savedAccessPoints, SavedNetworkComparator.INSTANCE);
|
||||||
|
|
||||||
cacheRemoveAllPrefs(mAccessPointsPreferenceCategory);
|
|
||||||
|
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (; index < accessPoints.size(); index++) {
|
mAccessPointsPreferenceCategory.removeAll();
|
||||||
AccessPoint accessPoint = accessPoints.get(index);
|
for (AccessPoint savedAccessPoint : savedAccessPoints) {
|
||||||
// Check if this access point is valid for DPP.
|
if (isValidForDppConfiguration(savedAccessPoint)) {
|
||||||
if (isValidForDppConfiguration(accessPoint)) {
|
// Replaces with an AccessPoint from scanned result for signal information
|
||||||
final String key = accessPoint.getKey();
|
savedAccessPoint = getScannedAccessPointIfAvailable(savedAccessPoint);
|
||||||
|
final AccessPointPreference preference =
|
||||||
|
createAccessPointPreference(savedAccessPoint);
|
||||||
|
|
||||||
final AccessPointPreference pref = (AccessPointPreference) getCachedPreference(key);
|
preference.setOrder(index++);
|
||||||
if (pref != null) {
|
preference.setEnabled(savedAccessPoint.isReachable());
|
||||||
pref.setOrder(index);
|
savedAccessPoint.setListener(this);
|
||||||
continue;
|
|
||||||
}
|
|
||||||
final AccessPointPreference preference = createAccessPointPreference(accessPoint);
|
|
||||||
preference.setKey(key);
|
|
||||||
preference.setOrder(index);
|
|
||||||
|
|
||||||
mAccessPointsPreferenceCategory.addPreference(preference);
|
|
||||||
accessPoint.setListener(this);
|
|
||||||
preference.refresh();
|
preference.refresh();
|
||||||
|
mAccessPointsPreferenceCategory.addPreference(preference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
removeCachedPrefs(mAccessPointsPreferenceCategory);
|
|
||||||
mAddPreference.setOrder(index);
|
mAddPreference.setOrder(index);
|
||||||
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
mAccessPointsPreferenceCategory.addPreference(mAddPreference);
|
||||||
|
|
||||||
if (mIsTest) {
|
if (mIsTest) {
|
||||||
mFakeNetworkPreference.setOrder(index + 1);
|
|
||||||
mAccessPointsPreferenceCategory.addPreference(mFakeNetworkPreference);
|
mAccessPointsPreferenceCategory.addPreference(mFakeNetworkPreference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private AccessPoint getScannedAccessPointIfAvailable(AccessPoint savedAccessPoint) {
|
||||||
|
final List<AccessPoint> scannedAccessPoints = mWifiTracker.getAccessPoints();
|
||||||
|
final WifiConfiguration savedWifiConfiguration = savedAccessPoint.getConfig();
|
||||||
|
for (AccessPoint scannedAccessPoint : scannedAccessPoints) {
|
||||||
|
if (scannedAccessPoint.matches(savedWifiConfiguration)) {
|
||||||
|
return scannedAccessPoint;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return savedAccessPoint;
|
||||||
|
}
|
||||||
|
|
||||||
private AccessPointPreference createAccessPointPreference(AccessPoint accessPoint) {
|
private AccessPointPreference createAccessPointPreference(AccessPoint accessPoint) {
|
||||||
return new AccessPointPreference(accessPoint, getPrefContext(), mUserBadgeCache,
|
return new AccessPointPreference(accessPoint, getPrefContext(), mUserBadgeCache,
|
||||||
R.drawable.ic_wifi_signal_0, /* forSavedNetworks */ false);
|
R.drawable.ic_wifi_signal_0, /* forSavedNetworks */ false);
|
||||||
|
Reference in New Issue
Block a user