Add a intent extra to only show the access points in the settings menu.

Bug: 2198865
diff --git a/res/xml/wifi_access_points.xml b/res/xml/wifi_access_points.xml
new file mode 100644
index 0000000..281093c
--- /dev/null
+++ b/res/xml/wifi_access_points.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
+        android:title="@string/wifi_settings_category">
+
+    <com.android.settings.ProgressCategory
+            android:key="access_points"
+            android:title="@string/wifi_access_points"
+            android:persistent="false" />
+
+    <Preference
+            android:key="add_other_network"
+            android:title="@string/wifi_add_other_network"
+            android:persistent="false" />
+
+</PreferenceScreen>
diff --git a/res/xml/wifi_settings.xml b/res/xml/wifi_settings.xml
index 9101e46..8a76674 100644
--- a/res/xml/wifi_settings.xml
+++ b/res/xml/wifi_settings.xml
@@ -33,7 +33,7 @@
     <com.android.settings.ProgressCategory
             android:key="access_points"
             android:dependency="wifi_enabled"
-            android:title="@string/wifi_access_points" 
+            android:title="@string/wifi_access_points"
             android:persistent="false" />
 
     <Preference
@@ -42,4 +42,4 @@
             android:title="@string/wifi_add_other_network"
             android:persistent="false" />
 
-</PreferenceScreen>   
+</PreferenceScreen>
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 361f159..81e6a05 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -51,11 +51,11 @@
         DialogInterface.OnDismissListener {
 
     private static final String TAG = "WifiSettings";
-    
+
     //============================
     // Preference/activity member variables
     //============================
-    
+
     private static final String INSTANCE_KEY_DIALOG_BUNDLE =
             "com.android.settings.wifi.WifiSettings:dialogBundle";
     /*
@@ -64,43 +64,44 @@
      * dialog management only creates once.
      */
     private Dialog mDialog;
-    
+
+    private static final String KEY_ONLY_ACCESS_POINTS = "only_access_points";
     private static final String KEY_ADD_OTHER_NETWORK = "add_other_network";
 
     private static final int CONTEXT_MENU_ID_CONNECT = Menu.FIRST;
     private static final int CONTEXT_MENU_ID_FORGET = Menu.FIRST + 1;
     private static final int CONTEXT_MENU_ID_CHANGE_PASSWORD = Menu.FIRST + 2;
 
-    private static final int MENU_ID_SCAN = Menu.FIRST; 
-    private static final int MENU_ID_ADVANCED = Menu.FIRST + 1; 
-    
+    private static final int MENU_ID_SCAN = Menu.FIRST;
+    private static final int MENU_ID_ADVANCED = Menu.FIRST + 1;
+
     private static final String KEY_WIFI_ENABLED = "wifi_enabled";
     private static final String KEY_OPEN_NETWORK_NOTIFICATIONS_ENABLED =
             "open_network_notifications_enabled";
     private static final String KEY_ACCESS_POINTS = "access_points";
-    
+
     private ProgressCategory mApCategory;
     private CheckBoxPreference mWifiEnabled;
     private WifiEnabler mWifiEnabler;
-    private CheckBoxPreference mOpenNetworkNotificationsEnabled; 
+    private CheckBoxPreference mOpenNetworkNotificationsEnabled;
     private Preference mAddOtherNetwork;
-    
+
     private WeakHashMap<AccessPointState, AccessPointPreference> mAps;
 
     private KeyStore mKeyStore = KeyStore.getInstance();
     private AccessPointState mResumeState = null;
     private int mResumeMode;
-    
+
     //============================
     // Wifi member variables
     //============================
-    
+
     private WifiLayer mWifiLayer;
-        
+
     //============================
     // Activity lifecycle
     //============================
-    
+
     public WifiSettings() {
         mAps = new WeakHashMap<AccessPointState, AccessPointPreference>();
         mWifiLayer = new WifiLayer(this, this);
@@ -116,15 +117,23 @@
         onCreatedWifi();
         mWifiLayer.onCreatedCallback();
     }
-    
+
+    private int getPreferenceResource() {
+        if (getIntent().getBooleanExtra(KEY_ONLY_ACCESS_POINTS, false)) {
+            return R.xml.wifi_access_points;
+        } else {
+            return R.xml.wifi_settings;
+        }
+    }
+
     /**
      * Shouldn't have any dependency on the wifi layer.
      */
     private void onCreatePreferences() {
-        addPreferencesFromResource(R.xml.wifi_settings);
-        
+        addPreferencesFromResource(getPreferenceResource());
+
         final PreferenceScreen preferenceScreen = getPreferenceScreen();
-        
+
         mApCategory = (ProgressCategory) preferenceScreen.findPreference(KEY_ACCESS_POINTS);
         // We don't want the ordering to be the order preferences are added,
         // instead we want*:
@@ -133,29 +142,33 @@
         //   3) preferred, APs out of range
         //   * this ordering logic is in AccessPointPreference's compareTo
         mApCategory.setOrderingAsAdded(false);
-        
-        mWifiEnabled = (CheckBoxPreference) preferenceScreen.findPreference(KEY_WIFI_ENABLED);
-        mWifiEnabler = new WifiEnabler(this, (WifiManager) getSystemService(WIFI_SERVICE),
-                mWifiEnabled);
-        
-        mOpenNetworkNotificationsEnabled = (CheckBoxPreference) preferenceScreen
-                .findPreference(KEY_OPEN_NETWORK_NOTIFICATIONS_ENABLED);
-        mOpenNetworkNotificationsEnabled.setChecked(Settings.Secure.getInt(getContentResolver(),
-            Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);        
-        
+
+        if (!getIntent().getBooleanExtra("only_access_points", false)) {
+            mWifiEnabled = (CheckBoxPreference) preferenceScreen.findPreference(KEY_WIFI_ENABLED);
+            mWifiEnabler = new WifiEnabler(this, (WifiManager) getSystemService(WIFI_SERVICE),
+                    mWifiEnabled);
+
+            mOpenNetworkNotificationsEnabled = (CheckBoxPreference) preferenceScreen
+                    .findPreference(KEY_OPEN_NETWORK_NOTIFICATIONS_ENABLED);
+            mOpenNetworkNotificationsEnabled.setChecked(Settings.Secure.getInt(getContentResolver(),
+                    Settings.Secure.WIFI_NETWORKS_AVAILABLE_NOTIFICATION_ON, 0) == 1);
+        }
+
         mAddOtherNetwork = preferenceScreen.findPreference(KEY_ADD_OTHER_NETWORK);
-        
+
         registerForContextMenu(getListView());
     }
 
     private void onCreatedWifi() {
     }
-    
+
     @Override
     protected void onResume() {
         super.onResume();
         mWifiLayer.onResume();
-        mWifiEnabler.resume();
+        if (mWifiEnabler != null) {
+            mWifiEnabler.resume();
+        }
         // do what we should have after keystore is unlocked.
         if (mResumeState != null) {
             if (mKeyStore.test() == KeyStore.NO_ERROR) {
@@ -176,13 +189,15 @@
     protected void onPause() {
         super.onPause();
         mWifiLayer.onPause();
-        mWifiEnabler.pause();
+        if (mWifiEnabler != null) {
+            mWifiEnabler.pause();
+        }
     }
 
     @Override
     protected void onDestroy() {
         super.onDestroy();
-        
+
         if (mDialog != null) {
             mDialog.dismiss();
         }
@@ -191,31 +206,31 @@
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
-        
+
         menu.add(0, MENU_ID_SCAN, 0, R.string.scan_wifi)
             .setIcon(R.drawable.ic_menu_scan_network);
-        
+
         menu.add(0, MENU_ID_ADVANCED, 0, R.string.wifi_menu_advanced)
             .setIcon(android.R.drawable.ic_menu_manage);
-        
+
         return true;
     }
-    
+
     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
         super.onOptionsItemSelected(item);
-        
+
         switch (item.getItemId()) {
 
             case MENU_ID_SCAN:
                 mWifiLayer.attemptScan();
                 return true;
-                
+
             case MENU_ID_ADVANCED:
                 Intent intent = new Intent(this, AdvancedSettings.class);
                 startActivity(intent);
                 return true;
-                
+
             default:
                 return false;
         }
@@ -224,7 +239,7 @@
     @Override
     protected void onSaveInstanceState(Bundle outState) {
         super.onSaveInstanceState(outState);
-        
+
         if (mDialog != null) {
             Bundle dialogBundle = mDialog.onSaveInstanceState();
             outState.putBundle(INSTANCE_KEY_DIALOG_BUNDLE, dialogBundle);
@@ -234,7 +249,7 @@
     @Override
     protected void onRestoreInstanceState(Bundle state) {
         super.onRestoreInstanceState(state);
-        
+
         Bundle dialogBundle = state.getBundle(INSTANCE_KEY_DIALOG_BUNDLE);
         if (dialogBundle != null) {
             mDialog = new AccessPointDialog(this, mWifiLayer);
@@ -256,21 +271,21 @@
     @Override
     public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
         super.onCreateContextMenu(menu, v, menuInfo);
-     
+
         AccessPointState state = getStateFromMenuInfo(menuInfo);
         if (state == null) {
             return;
         }
-     
+
         menu.setHeaderTitle(state.getHumanReadableSsid());
-        
+
         if (state.isConnectable()) {
             menu.add(0, CONTEXT_MENU_ID_CONNECT, 0, R.string.wifi_context_menu_connect);
         }
-        
+
         if (state.isForgetable()) {
             menu.add(0, CONTEXT_MENU_ID_FORGET, 1, R.string.wifi_context_menu_forget);
-            
+
             if (state.hasPassword()) {
                 menu.add(0, CONTEXT_MENU_ID_CHANGE_PASSWORD, 2,
                         R.string.wifi_context_menu_change_password);
@@ -287,19 +302,19 @@
         }
 
         switch (item.getItemId()) {
-            
+
             case CONTEXT_MENU_ID_CONNECT:
                 connectToNetwork(state);
                 return true;
-                
+
             case CONTEXT_MENU_ID_FORGET:
                 mWifiLayer.forgetNetwork(state);
                 return true;
-                
+
             case CONTEXT_MENU_ID_CHANGE_PASSWORD:
                 showAccessPointDialog(state, AccessPointDialog.MODE_CONFIGURE);
                 return true;
-                
+
             default:
                 return false;
         }
@@ -317,12 +332,12 @@
             mWifiLayer.connectToNetwork(state);
         }
     }
-    
+
     private AccessPointState getStateFromMenuInfo(ContextMenuInfo menuInfo) {
         if ((menuInfo == null) || !(menuInfo instanceof AdapterContextMenuInfo)) {
             return null;
         }
-        
+
         AdapterContextMenuInfo adapterMenuInfo = (AdapterContextMenuInfo) menuInfo;
         Preference pref = (Preference) getPreferenceScreen().getRootAdapter().getItem(
                 adapterMenuInfo.position);
@@ -332,11 +347,11 @@
 
         return ((AccessPointPreference) pref).getAccessPointState();
     }
-    
+
     //============================
     // Preference callbacks
     //============================
-    
+
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -351,10 +366,10 @@
             AccessPointState state = ((AccessPointPreference) preference).getAccessPointState();
             showAccessPointDialog(state, AccessPointDialog.MODE_INFO);
         }
-        
+
         return false;
     }
-    
+
     //============================
     // Wifi-related
     //============================
@@ -372,7 +387,7 @@
         mResumeMode = AccessPointDialog.MODE_CONFIGURE;
         showDialog(dialog);
     }
-    
+
     public void showAccessPointDialog(AccessPointState state, int mode) {
         if (state.isEnterprise() && mKeyStore.test() != KeyStore.NO_ERROR) {
             Credentials.getInstance().unlock(this);
@@ -391,14 +406,14 @@
         if (mDialog != null) {
             mDialog.dismiss();
         }
-        
+
         mDialog = dialog;
         if (dialog != null) {
             dialog.setOnDismissListener(this);
             dialog.show();
         }
     }
-    
+
     //============================
     // Wifi callbacks
     //============================
@@ -409,36 +424,36 @@
 
     public void onScanningStatusChanged(boolean started) {
         mApCategory.setProgress(started);
-    }    
+    }
 
     public void onAccessPointSetChanged(AccessPointState ap, boolean added) {
 
         AccessPointPreference pref = mAps.get(ap);
-        
+
         if (WifiLayer.LOGV) {
             Log.v(TAG, "onAccessPointSetChanged with " + ap + " and "
                     + (added ? "added" : "removed") + ", found pref " + pref);
         }
-        
+
         if (added) {
-            
+
             if (pref == null) {
                 pref = new AccessPointPreference(this, ap);
                 mAps.put(ap, pref);
             } else {
                 pref.setEnabled(true);
             }
-            
+
             mApCategory.addPreference(pref);
-            
+
         } else {
 
             mAps.remove(ap);
-            
+
             if (pref != null) {
                 mApCategory.removePreference(pref);
             }
-            
+
         }
     }
 
@@ -459,8 +474,8 @@
             // If we're already showing a dialog, ignore this request
             return;
         }
-        
+
         showAccessPointDialog(ap, AccessPointDialog.MODE_RETRY_PASSWORD);
     }
-    
+
 }