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
This commit is contained in:
Yuhao Zheng
2013-10-10 09:41:51 -07:00
parent e4d0d1e0c4
commit acac38011b

View File

@@ -298,9 +298,11 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
final PreferenceScreen preferenceScreen = getPreferenceScreen(); final PreferenceScreen preferenceScreen = getPreferenceScreen();
preferenceScreen.removeAll(); preferenceScreen.removeAll();
preferenceScreen.setOrderingAsAdded(true); preferenceScreen.setOrderingAsAdded(true);
mThisDevicePref = new Preference(getActivity()); mThisDevicePref = new Preference(getActivity());
mThisDevicePref.setPersistent(false);
mThisDevicePref.setSelectable(false);
preferenceScreen.addPreference(mThisDevicePref); preferenceScreen.addPreference(mThisDevicePref);
mPeersGroup = new PreferenceCategory(getActivity()); mPeersGroup = new PreferenceCategory(getActivity());
@@ -508,6 +510,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
if (DBG) Log.d(TAG, " mConnectedDevices " + mConnectedDevices); if (DBG) Log.d(TAG, " mConnectedDevices " + mConnectedDevices);
} }
@Override
public void onPersistentGroupInfoAvailable(WifiP2pGroupList groups) { public void onPersistentGroupInfoAvailable(WifiP2pGroupList groups) {
mPersistentGroup.removeAll(); mPersistentGroup.removeAll();
@@ -530,6 +533,7 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
} }
} }
@Override
public void onGroupInfoAvailable(WifiP2pGroup group) { public void onGroupInfoAvailable(WifiP2pGroup group) {
if (DBG) Log.d(TAG, " group " + group); if (DBG) Log.d(TAG, " group " + group);
mConnectedGroup = group; mConnectedGroup = group;
@@ -538,19 +542,9 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
private void handleP2pStateChanged() { private void handleP2pStateChanged() {
updateSearchMenu(false); updateSearchMenu(false);
if (mWifiP2pEnabled) { mThisDevicePref.setEnabled(mWifiP2pEnabled);
final PreferenceScreen preferenceScreen = getPreferenceScreen(); mPeersGroup.setEnabled(mWifiP2pEnabled);
preferenceScreen.removeAll(); mPersistentGroup.setEnabled(mWifiP2pEnabled);
preferenceScreen.setOrderingAsAdded(true);
preferenceScreen.addPreference(mThisDevicePref);
mPeersGroup.setEnabled(true);
preferenceScreen.addPreference(mPeersGroup);
mPersistentGroup.setEnabled(true);
preferenceScreen.addPreference(mPersistentGroup);
}
} }
private void updateSearchMenu(boolean searching) { private void updateSearchMenu(boolean searching) {
@@ -578,10 +572,6 @@ public class WifiP2pSettings extends SettingsPreferenceFragment
} else { } else {
mThisDevicePref.setTitle(mThisDevice.deviceName); mThisDevicePref.setTitle(mThisDevice.deviceName);
} }
mThisDevicePref.setPersistent(false);
mThisDevicePref.setEnabled(true);
mThisDevicePref.setSelectable(false);
} }
} }
} }