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
diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java
index c932978..774ac58 100644
--- a/src/com/android/settings/wifi/AccessPoint.java
+++ b/src/com/android/settings/wifi/AccessPoint.java
@@ -35,33 +35,6 @@
     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 @@
         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().
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 1f7a1da..fefbdfc 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -56,9 +56,9 @@
 import android.widget.AdapterView.AdapterContextMenuInfo;
 import android.widget.Toast;
 
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import java.util.TreeSet;
 
 /**
  * This currently provides three types of UI.
@@ -184,7 +184,7 @@
         final ProgressCategoryBase preference =
                 (ProgressCategoryBase) findPreference("access_points");
         mAccessPoints = preference;
-        mAccessPoints.setOrderingAsAdded(true);
+        mAccessPoints.setOrderingAsAdded(false);
         mAddNetwork = findPreference("add_network");
 
         registerForContextMenu(getListView());
@@ -379,8 +379,7 @@
     }
 
     private Collection<AccessPoint> constructAccessPoints() {
-        Collection<AccessPoint> accessPoints =
-                new TreeSet<AccessPoint>(new AccessPoint.Comparater());
+        Collection<AccessPoint> accessPoints = new ArrayList<AccessPoint>();
 
         final List<WifiConfiguration> configs = mWifiManager.getConfiguredNetworks();
         if (configs != null) {