From acac38011b6f596b6c74f568a53965acef4a477a Mon Sep 17 00:00:00 2001 From: Yuhao Zheng Date: Thu, 10 Oct 2013 09:41:51 -0700 Subject: [PATCH] Wi-Fi Direct setting UI: handle p2p disable state This is not a normal use case as we can't enter Wi-Fi Direct setting when p2p is disabled. However we can make this happen by entering Wi-Fi Direct setting screen then disabling wifi via quick settings. Previous UI implementation didn't handle p2p enable->disable change completely, leaving the screen out-of-date until we change the screen orientation. Now we always attach mThisDevicePref/mPeersGroup/mPersistentGroup to the screen, but just disable them when p2p is disabled. Another advantage of doing this is to avoid b/11050625, which occurs when a PreferenceGroup is not attached to the PreferenceScreen. Bug: 11133069 Change-Id: I9be7b6e396d7677b5a33df8e6294b4a0aa6bd389 --- .../settings/wifi/p2p/WifiP2pSettings.java | 26 ++++++------------- 1 file changed, 8 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java index 1902c9f65ea..887d41e1204 100644 --- a/src/com/android/settings/wifi/p2p/WifiP2pSettings.java +++ b/src/com/android/settings/wifi/p2p/WifiP2pSettings.java @@ -298,9 +298,11 @@ public class WifiP2pSettings extends SettingsPreferenceFragment final PreferenceScreen preferenceScreen = getPreferenceScreen(); preferenceScreen.removeAll(); - preferenceScreen.setOrderingAsAdded(true); + mThisDevicePref = new Preference(getActivity()); + mThisDevicePref.setPersistent(false); + mThisDevicePref.setSelectable(false); preferenceScreen.addPreference(mThisDevicePref); mPeersGroup = new PreferenceCategory(getActivity()); @@ -508,6 +510,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment if (DBG) Log.d(TAG, " mConnectedDevices " + mConnectedDevices); } + @Override public void onPersistentGroupInfoAvailable(WifiP2pGroupList groups) { mPersistentGroup.removeAll(); @@ -530,6 +533,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment } } + @Override public void onGroupInfoAvailable(WifiP2pGroup group) { if (DBG) Log.d(TAG, " group " + group); mConnectedGroup = group; @@ -538,19 +542,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment private void handleP2pStateChanged() { updateSearchMenu(false); - if (mWifiP2pEnabled) { - final PreferenceScreen preferenceScreen = getPreferenceScreen(); - preferenceScreen.removeAll(); - - preferenceScreen.setOrderingAsAdded(true); - preferenceScreen.addPreference(mThisDevicePref); - - mPeersGroup.setEnabled(true); - preferenceScreen.addPreference(mPeersGroup); - - mPersistentGroup.setEnabled(true); - preferenceScreen.addPreference(mPersistentGroup); - } + mThisDevicePref.setEnabled(mWifiP2pEnabled); + mPeersGroup.setEnabled(mWifiP2pEnabled); + mPersistentGroup.setEnabled(mWifiP2pEnabled); } private void updateSearchMenu(boolean searching) { @@ -578,10 +572,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment } else { mThisDevicePref.setTitle(mThisDevice.deviceName); } - - mThisDevicePref.setPersistent(false); - mThisDevicePref.setEnabled(true); - mThisDevicePref.setSelectable(false); } } }