Merge "Some Wi-Fi Menus like WPS should be disabled when Wi-Fi is off" am: f952a87060 am: a9e9bf20e8 am: 8b1f115942
am: 67ba7fc936

Change-Id: I69a8322ad0c4eaa56ab079c9b0cbaa314e83eb61
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index f7cc772..4727428 100644
--- a/src/com/android/settings/wifi/AdvancedWifiSettings.java
+++ b/src/com/android/settings/wifi/AdvancedWifiSettings.java
@@ -18,8 +18,11 @@
 
 import android.app.Dialog;
 import android.app.DialogFragment;
+import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
+import android.net.wifi.WifiManager;
 import android.net.wifi.WpsInfo;
 import android.os.Bundle;
 import android.os.UserManager;
@@ -44,6 +47,13 @@
 
     private boolean mUnavailable;
 
+    private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            initPreferences();
+        }
+    };
+
     public AdvancedWifiSettings() {
         super(UserManager.DISALLOW_CONFIG_WIFI);
     }
@@ -74,13 +84,23 @@
     }
 
     @Override
-    public void onResume() {
-        super.onResume();
+    public void onStart() {
+        super.onStart();
         if (!mUnavailable) {
+            getActivity().registerReceiver(mReceiver,
+                    new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION));
             initPreferences();
         }
     }
 
+    @Override
+    public void onStop() {
+        super.onStop();
+        if (!mUnavailable) {
+            getActivity().unregisterReceiver(mReceiver);
+        }
+    }
+
     private void initPreferences() {
         final Context context = getActivity();
         Intent intent = new Intent(Credentials.INSTALL_AS_USER_ACTION);
@@ -90,11 +110,13 @@
         Preference pref = findPreference(KEY_INSTALL_CREDENTIALS);
         pref.setIntent(intent);
 
-
+        final WifiManager wifiManager =
+                (WifiManager)getActivity().getSystemService(Context.WIFI_SERVICE);
         Intent wifiDirectIntent = new Intent(context,
                 com.android.settings.Settings.WifiP2pSettingsActivity.class);
         Preference wifiDirectPref = findPreference(KEY_WIFI_DIRECT);
         wifiDirectPref.setIntent(wifiDirectIntent);
+        wifiDirectPref.setEnabled(wifiManager.isWifiEnabled());
 
         // WpsDialog: Create the dialog like WifiSettings does.
         Preference wpsPushPref = findPreference(KEY_WPS_PUSH);
@@ -105,6 +127,7 @@
                     return true;
                 }
         });
+        wpsPushPref.setEnabled(wifiManager.isWifiEnabled());
 
         // WpsDialog: Create the dialog like WifiSettings does.
         Preference wpsPinPref = findPreference(KEY_WPS_PIN);
@@ -115,6 +138,7 @@
                     return true;
                 }
         });
+        wpsPinPref.setEnabled(wifiManager.isWifiEnabled());
     }
 
     /* Wrapper class for the WPS dialog to properly handle life cycle events like rotation. */