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:
@@ -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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user