17837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest/* 27837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * Copyright (C) 2014 The Android Open Source Project 37837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * 47837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * Licensed under the Apache License, Version 2.0 (the "License"); 57837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * you may not use this file except in compliance with the License. 67837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * You may obtain a copy of the License at 77837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * 87837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * http://www.apache.org/licenses/LICENSE-2.0 97837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * 107837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * Unless required by applicable law or agreed to in writing, software 117837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * distributed under the License is distributed on an "AS IS" BASIS, 127837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * See the License for the specific language governing permissions and 147837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * limitations under the License. 157837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest */ 167837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 177837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestpackage com.android.settings.wifi; 187837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 197837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.app.Dialog; 207837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.content.Context; 217837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.content.DialogInterface; 227837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.content.res.Resources; 237837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.net.wifi.ScanResult; 247837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.net.wifi.WifiConfiguration; 257837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.net.wifi.WifiManager; 267837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.os.Bundle; 277837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.preference.Preference; 287837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.preference.Preference.OnPreferenceClickListener; 297837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.preference.PreferenceScreen; 30a7383f3862232fefe060a7e2aa9e1ae02c676bffPauloftheWest 317837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport com.android.settings.search.BaseSearchIndexProvider; 327837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport com.android.settings.search.Indexable; 337837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport com.android.settings.search.SearchIndexableRaw; 34a7383f3862232fefe060a7e2aa9e1ae02c676bffPauloftheWest 357837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport android.util.Log; 36a7383f3862232fefe060a7e2aa9e1ae02c676bffPauloftheWestimport android.view.View; 377837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 387837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport com.android.settings.R; 397837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport com.android.settings.SettingsPreferenceFragment; 407837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 417837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport java.util.ArrayList; 427837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport java.util.HashMap; 437837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport java.util.List; 447837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestimport java.util.Map; 457837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 467837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest/** 477837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * UI to manage saved networks/access points. 487837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest */ 497837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWestpublic class SavedAccessPointsWifiSettings extends SettingsPreferenceFragment 507837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest implements DialogInterface.OnClickListener, Indexable { 517837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private static final String TAG = "SavedAccessPointsWifiSettings"; 527837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 537837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private WifiDialog mDialog; 547837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private WifiManager mWifiManager; 557837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private AccessPoint mDlgAccessPoint; 567837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private Bundle mAccessPointSavedState; 577837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private AccessPoint mSelectedAccessPoint; 587837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 593280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest // Instance state key 603280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest private static final String SAVE_DIALOG_ACCESS_POINT_STATE = "wifi_ap_state"; 613280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest 627837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 637837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public void onCreate(Bundle savedInstanceState) { 647837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest super.onCreate(savedInstanceState); 657837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest addPreferencesFromResource(R.xml.wifi_display_saved_access_points); 667837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 677837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 687837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 697837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public void onResume() { 707837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest super.onResume(); 717837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest initPreferences(); 727837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 737837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 747837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 757837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public void onActivityCreated(Bundle savedInstanceState) { 767837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest super.onActivityCreated(savedInstanceState); 777837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mWifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); 783280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest 793280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest if (savedInstanceState != null) { 803280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest if (savedInstanceState.containsKey(SAVE_DIALOG_ACCESS_POINT_STATE)) { 813280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest mAccessPointSavedState = 823280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest savedInstanceState.getBundle(SAVE_DIALOG_ACCESS_POINT_STATE); 833280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 843280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 857837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 867837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 877837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private void initPreferences() { 887837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest PreferenceScreen preferenceScreen = getPreferenceScreen(); 897837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final Context context = getActivity(); 907837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 917837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 927837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<AccessPoint> accessPoints = constructSavedAccessPoints(context, mWifiManager); 937837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 947837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest preferenceScreen.removeAll(); 957837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 967837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final int accessPointsSize = accessPoints.size(); 977837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest for (int i = 0; i < accessPointsSize; ++i){ 987837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest preferenceScreen.addPreference(accessPoints.get(i)); 997837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1007837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1017837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if(getPreferenceScreen().getPreferenceCount() < 1) { 1027837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!"); 1037837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1047837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1057837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1067837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private static List<AccessPoint> constructSavedAccessPoints(Context context, 1077837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest WifiManager wifiManager){ 1087837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest List<AccessPoint> accessPoints = new ArrayList<AccessPoint>(); 1097837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest Map<String, List<ScanResult>> resultsMap = new HashMap<String, List<ScanResult>>(); 1107837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1117837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<WifiConfiguration> configs = wifiManager.getConfiguredNetworks(); 1127837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<ScanResult> scanResults = wifiManager.getScanResults(); 1137837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1147837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if (configs != null) { 1157837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest //Construct a Map for quick searching of a wifi network via ssid. 1167837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final int scanResultsSize = scanResults.size(); 1177837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest for (int i = 0; i < scanResultsSize; ++i){ 1187837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final ScanResult result = scanResults.get(i); 1197837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest List<ScanResult> res = resultsMap.get(result.SSID); 1207837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1217837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if(res == null){ 1227837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest res = new ArrayList<ScanResult>(); 1237837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest resultsMap.put(result.SSID, res); 1247837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1257837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1267837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest res.add(result); 1277837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1287837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1297837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final int configsSize = configs.size(); 1307837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest for (int i = 0; i < configsSize; ++i){ 131426005a29906e3ca29ecf0c3e0943e820d8d2e16vandwalle WifiConfiguration config = configs.get(i); 132426005a29906e3ca29ecf0c3e0943e820d8d2e16vandwalle if (config.selfAdded && config.numAssociation == 0) { 133426005a29906e3ca29ecf0c3e0943e820d8d2e16vandwalle continue; 134426005a29906e3ca29ecf0c3e0943e820d8d2e16vandwalle } 135426005a29906e3ca29ecf0c3e0943e820d8d2e16vandwalle AccessPoint accessPoint = new AccessPoint(context, config); 1367837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<ScanResult> results = resultsMap.get(accessPoint.ssid); 1377837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1387837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest accessPoint.setShowSummary(false); 1397837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if(results != null){ 1407837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final int resultsSize = results.size(); 1417837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest for (int j = 0; j < resultsSize; ++j){ 1427837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest accessPoint.update(results.get(j)); 143da15804df01c66b18ddf767fe135bbb2c7e3391ePauloftheWest accessPoint.setIcon(null); 1447837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1457837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1467837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1477837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest accessPoints.add(accessPoint); 1487837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1497837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1507837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1517837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return accessPoints; 1527837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1537837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1547837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest private void showDialog(AccessPoint accessPoint, boolean edit) { 1557837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if (mDialog != null) { 1567837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest removeDialog(WifiSettings.WIFI_DIALOG_ID); 1577837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mDialog = null; 1587837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1597837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1607837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest // Save the access point and edit mode 1617837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mDlgAccessPoint = accessPoint; 1627837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1637837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest showDialog(WifiSettings.WIFI_DIALOG_ID); 1647837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1657837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1667837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 1677837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public Dialog onCreateDialog(int dialogId) { 1687837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest switch (dialogId) { 1697837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest case WifiSettings.WIFI_DIALOG_ID: 1703280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest if (mDlgAccessPoint == null) { // For re-launch from saved state 1713280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest mDlgAccessPoint = new AccessPoint(getActivity(), mAccessPointSavedState); 1723280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest // Reset the saved access point data 1733280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest mAccessPointSavedState = null; 1743280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 1757837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mSelectedAccessPoint = mDlgAccessPoint; 176a7383f3862232fefe060a7e2aa9e1ae02c676bffPauloftheWest mDialog = new WifiDialog(getActivity(), this, mDlgAccessPoint, 177a7383f3862232fefe060a7e2aa9e1ae02c676bffPauloftheWest false /* not editting */, true /* hide the submit button */); 1787837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return mDialog; 1797837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1807837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1817837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return super.onCreateDialog(dialogId); 1827837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 1837837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 1847837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 1853280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest public void onSaveInstanceState(Bundle outState) { 1863280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest super.onSaveInstanceState(outState); 1873280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest 1883280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest // If the dialog is showing, save its state. 1893280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest if (mDialog != null && mDialog.isShowing()) { 1903280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest if (mDlgAccessPoint != null) { 1913280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest mAccessPointSavedState = new Bundle(); 1923280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest mDlgAccessPoint.saveWifiState(mAccessPointSavedState); 1933280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest outState.putBundle(SAVE_DIALOG_ACCESS_POINT_STATE, mAccessPointSavedState); 1943280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 1953280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 1963280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest } 1973280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest 1983280dc144f18a406cca3c1b5292a3031e0b470e7PauloftheWest @Override 1997837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public void onClick(DialogInterface dialogInterface, int button) { 2007837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if (button == WifiDialog.BUTTON_FORGET && mSelectedAccessPoint != null) { 2017837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mWifiManager.forget(mSelectedAccessPoint.networkId, null); 2027837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest getPreferenceScreen().removePreference(mSelectedAccessPoint); 2037837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest mSelectedAccessPoint = null; 2047837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2057837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2067837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2077837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 2087837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public boolean onPreferenceTreeClick(PreferenceScreen screen, Preference preference) { 2097837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest if (preference instanceof AccessPoint) { 2107837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest showDialog((AccessPoint) preference, false); 2117837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return true; 2127837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } else{ 2137837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return super.onPreferenceTreeClick(screen, preference); 2147837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2157837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2167837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2177837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest /** 2187837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest * For search. 2197837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest */ 2207837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public static final SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 2217837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest new BaseSearchIndexProvider() { 2227837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest @Override 2237837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { 2247837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>(); 2257837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final Resources res = context.getResources(); 2267837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final String title = res.getString(R.string.wifi_saved_access_points_titlebar); 2277837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2287837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest // Add fragment title 2297837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest SearchIndexableRaw data = new SearchIndexableRaw(context); 2307837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.title = title; 2317837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.screenTitle = title; 2327837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.enabled = enabled; 2337837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest result.add(data); 2347837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2357837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest // Add available Wi-Fi access points 2367837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest WifiManager wifiManager = 2377837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 2387837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final List<AccessPoint> accessPoints = 2397837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest constructSavedAccessPoints(context, wifiManager); 2407837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2417837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest final int accessPointsSize = accessPoints.size(); 2427837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest for (int i = 0; i < accessPointsSize; ++i){ 2437837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data = new SearchIndexableRaw(context); 2447837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.title = accessPoints.get(i).getTitle().toString(); 2457837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.screenTitle = title; 2467837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest data.enabled = enabled; 2477837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest result.add(data); 2487837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2497837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest 2507837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest return result; 2517837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest } 2527837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest }; 2537837b999862cf341b0f124be7ace1dfc64d0a5a8PauloftheWest} 254