Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 85c5d731 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Improve UX of WifiDppChooseSavedWifiNetworkFragment"

parents e4359a9e d0ceb83c
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -22,28 +22,24 @@
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="match_parent"
            android:layout_height="match_parent"
        android:layout_height="0dp"
        android:gravity="center_horizontal"
            android:orientation="vertical">
        android:orientation="vertical"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintBottom_toTopOf="@+id/footer">

        <include layout="@layout/wifi_dpp_fragment_header"/>

        <LinearLayout android:id="@+id/wifi_network_list_container"
            android:layout_width="match_parent"
                android:layout_height="wrap_content"
                app:layout_constraintTop_toBottomOf="@+id/header"/>
            android:layout_height="wrap_content"/>

    </LinearLayout>

    </ScrollView>

    <include
        android:id="@+id/footer"
        layout="@layout/wifi_dpp_fragment_footer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
+30 −35
Original line number Diff line number Diff line
@@ -34,11 +34,14 @@ import com.android.settings.R;
import com.android.settings.SettingsPreferenceFragment;
import com.android.settings.core.SubSettingLauncher;
import com.android.settings.wifi.AddNetworkFragment;
import com.android.settings.wifi.savedaccesspoints.SavedNetworkComparator;
import com.android.settingslib.wifi.AccessPoint;
import com.android.settingslib.wifi.AccessPointPreference;
import com.android.settingslib.wifi.WifiSavedConfigUtils;
import com.android.settingslib.wifi.WifiTracker;
import com.android.settingslib.wifi.WifiTrackerFactory;

import java.util.Collections;
import java.util.List;

public class WifiNetworkListFragment extends SettingsPreferenceFragment implements
@@ -256,17 +259,6 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
            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;
    }

@@ -290,44 +282,47 @@ public class WifiNetworkListFragment extends SettingsPreferenceFragment implemen
            return;
        }

        // AccessPoints are sorted by the WifiTracker
        final List<AccessPoint> accessPoints = mWifiTracker.getAccessPoints();

        mAccessPointsPreferenceCategory.setVisible(true);

        cacheRemoveAllPrefs(mAccessPointsPreferenceCategory);
        // TODO(b/128942314): Lists reachable AccessPoints on top of the list
        final List<AccessPoint> savedAccessPoints =
                WifiSavedConfigUtils.getAllConfigs(getContext(), mWifiManager);
        Collections.sort(savedAccessPoints, SavedNetworkComparator.INSTANCE);

        int index = 0;
        for (; index < accessPoints.size(); index++) {
            AccessPoint accessPoint = accessPoints.get(index);
            // Check if this access point is valid for DPP.
            if (isValidForDppConfiguration(accessPoint)) {
                final String key = accessPoint.getKey();
        mAccessPointsPreferenceCategory.removeAll();
        for (AccessPoint savedAccessPoint : savedAccessPoints) {
            if (isValidForDppConfiguration(savedAccessPoint)) {
                // Replaces with an AccessPoint from scanned result for signal information
                savedAccessPoint = getScannedAccessPointIfAvailable(savedAccessPoint);
                final AccessPointPreference preference =
                        createAccessPointPreference(savedAccessPoint);

                final AccessPointPreference pref = (AccessPointPreference) getCachedPreference(key);
                if (pref != null) {
                    pref.setOrder(index);
                    continue;
                }
                final AccessPointPreference preference = createAccessPointPreference(accessPoint);
                preference.setKey(key);
                preference.setOrder(index);
                preference.setOrder(index++);
                preference.setEnabled(savedAccessPoint.isReachable());
                savedAccessPoint.setListener(this);

                mAccessPointsPreferenceCategory.addPreference(preference);
                accessPoint.setListener(this);
                preference.refresh();
                mAccessPointsPreferenceCategory.addPreference(preference);
            }
        }
        removeCachedPrefs(mAccessPointsPreferenceCategory);
        mAddPreference.setOrder(index);
        mAccessPointsPreferenceCategory.addPreference(mAddPreference);

        if (mIsTest) {
            mFakeNetworkPreference.setOrder(index + 1);
            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) {
        return new AccessPointPreference(accessPoint, getPrefContext(), mUserBadgeCache,
                R.drawable.ic_wifi_signal_0, /* forSavedNetworks */ false);