Restore compareTo behavior of access point list
The Comparator with TreeList that was added during wifi set up changes does not work well since access point can change later. Restore the old compareTo behavior. Change-Id: I75681fea616792e9fd134c0d71762b4e0d46ffd6
This commit is contained in:
@@ -35,33 +35,6 @@ class AccessPoint extends Preference {
|
||||
private static final int[] STATE_SECURED = {R.attr.state_encrypted};
|
||||
private static final int[] STATE_NONE = {};
|
||||
|
||||
public static final class Comparater
|
||||
implements Comparator<AccessPoint> {
|
||||
@Override
|
||||
public int compare(AccessPoint accessPoint1, AccessPoint accessPoint2) {
|
||||
// Active one goes first.
|
||||
if (accessPoint1.mInfo != accessPoint2.mInfo) {
|
||||
return (accessPoint1.mInfo != null) ? -1 : 1;
|
||||
}
|
||||
|
||||
// Reachable one goes before unreachable one.
|
||||
if ((accessPoint1.mRssi ^ accessPoint2.mRssi) < 0) {
|
||||
return (accessPoint1.mRssi != Integer.MAX_VALUE) ? -1 : 1;
|
||||
}
|
||||
// Configured one goes before unconfigured one.
|
||||
if ((accessPoint1.networkId ^ accessPoint2.networkId) < 0) {
|
||||
return (accessPoint1.networkId != -1) ? -1 : 1;
|
||||
}
|
||||
// Sort by signal strength.
|
||||
int difference = WifiManager.compareSignalLevel(
|
||||
accessPoint2.mRssi, accessPoint1.mRssi);
|
||||
if (difference != 0) {
|
||||
return difference;
|
||||
}
|
||||
// Sort by ssid.
|
||||
return accessPoint1.ssid.compareToIgnoreCase(accessPoint2.ssid);
|
||||
}
|
||||
}
|
||||
|
||||
static final int SECURITY_NONE = 0;
|
||||
static final int SECURITY_WEP = 1;
|
||||
@@ -140,6 +113,33 @@ class AccessPoint extends Preference {
|
||||
super.onBindView(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Preference preference) {
|
||||
if (!(preference instanceof AccessPoint)) {
|
||||
return 1;
|
||||
}
|
||||
AccessPoint other = (AccessPoint) preference;
|
||||
// Active one goes first.
|
||||
if (mInfo != other.mInfo) {
|
||||
return (mInfo != null) ? -1 : 1;
|
||||
}
|
||||
// Reachable one goes before unreachable one.
|
||||
if ((mRssi ^ other.mRssi) < 0) {
|
||||
return (mRssi != Integer.MAX_VALUE) ? -1 : 1;
|
||||
}
|
||||
// Configured one goes before unconfigured one.
|
||||
if ((networkId ^ other.networkId) < 0) {
|
||||
return (networkId != -1) ? -1 : 1;
|
||||
}
|
||||
// Sort by signal strength.
|
||||
int difference = WifiManager.compareSignalLevel(other.mRssi, mRssi);
|
||||
if (difference != 0) {
|
||||
return difference;
|
||||
}
|
||||
// Sort by ssid.
|
||||
return ssid.compareToIgnoreCase(other.ssid);
|
||||
}
|
||||
|
||||
|
||||
boolean update(ScanResult result) {
|
||||
// We do not call refresh() since this is called before onBindView().
|
||||
|
Reference in New Issue
Block a user