Merge "Some Wi-Fi Menus like WPS should be disabled when Wi-Fi is off"
am: f952a87060

Change-Id: I0da164fbdbb04e54be2a26df85b8fcc1f58192e5
diff --git a/src/com/android/settings/wifi/AdvancedWifiSettings.java b/src/com/android/settings/wifi/AdvancedWifiSettings.java
index 6f23b4f..3b930e5 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;
@@ -43,6 +46,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);
     }
@@ -73,13 +83,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);
@@ -89,11 +109,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);
@@ -104,6 +126,7 @@
                     return true;
                 }
         });
+        wpsPushPref.setEnabled(wifiManager.isWifiEnabled());
 
         // WpsDialog: Create the dialog like WifiSettings does.
         Preference wpsPinPref = findPreference(KEY_WPS_PIN);
@@ -114,6 +137,7 @@
                     return true;
                 }
         });
+        wpsPinPref.setEnabled(wifiManager.isWifiEnabled());
     }
 
     /* Wrapper class for the WPS dialog to properly handle life cycle events like rotation. */