wifi-display: use new getDisplays() method of WifiDisplayStatus

which returns a list of all displays including currently availabe
and remembered ones, each display has properties indicating it's
availability, remembered and canConnect status

Bug 9229799

Change-Id: I1f74b9c41abdfecc10e7bc1853929e982c44be2f
This commit is contained in:
Chong Zhang
2013-06-12 17:56:16 -07:00
parent bdd91eab59
commit 94417b41c0

View File

@@ -207,8 +207,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
preferenceScreen.removeAll(); preferenceScreen.removeAll();
if (featureState == WifiDisplayStatus.FEATURE_STATE_ON) { if (featureState == WifiDisplayStatus.FEATURE_STATE_ON) {
final WifiDisplay[] pairedDisplays = mWifiDisplayStatus.getRememberedDisplays(); final WifiDisplay[] displays = mWifiDisplayStatus.getDisplays();
final WifiDisplay[] availableDisplays = mWifiDisplayStatus.getAvailableDisplays();
if (mPairedDevicesCategory == null) { if (mPairedDevicesCategory == null) {
mPairedDevicesCategory = new PreferenceCategory(getActivity()); mPairedDevicesCategory = new PreferenceCategory(getActivity());
@@ -218,13 +217,6 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
} }
preferenceScreen.addPreference(mPairedDevicesCategory); preferenceScreen.addPreference(mPairedDevicesCategory);
for (WifiDisplay d : pairedDisplays) {
mPairedDevicesCategory.addPreference(createWifiDisplayPreference(d, true));
}
if (mPairedDevicesCategory.getPreferenceCount() == 0) {
preferenceScreen.removePreference(mPairedDevicesCategory);
}
if (mAvailableDevicesCategory == null) { if (mAvailableDevicesCategory == null) {
mAvailableDevicesCategory = new ProgressCategory(getActivity(), null, mAvailableDevicesCategory = new ProgressCategory(getActivity(), null,
R.string.wifi_display_no_devices_found); R.string.wifi_display_no_devices_found);
@@ -234,11 +226,16 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
} }
preferenceScreen.addPreference(mAvailableDevicesCategory); preferenceScreen.addPreference(mAvailableDevicesCategory);
for (WifiDisplay d : availableDisplays) { for (WifiDisplay d : displays) {
if (!contains(pairedDisplays, d.getDeviceAddress())) { if (d.isRemembered()) {
mAvailableDevicesCategory.addPreference(createWifiDisplayPreference(d, false)); mPairedDevicesCategory.addPreference(createWifiDisplayPreference(d));
} else if (d.isAvailable()){
mAvailableDevicesCategory.addPreference(createWifiDisplayPreference(d));
} }
} }
if (mPairedDevicesCategory.getPreferenceCount() == 0) {
preferenceScreen.removePreference(mPairedDevicesCategory);
}
if (mWifiDisplayStatus.getScanState() == WifiDisplayStatus.SCAN_STATE_SCANNING) { if (mWifiDisplayStatus.getScanState() == WifiDisplayStatus.SCAN_STATE_SCANNING) {
mAvailableDevicesCategory.setProgress(true); mAvailableDevicesCategory.setProgress(true);
} else { } else {
@@ -253,7 +250,7 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
getActivity().invalidateOptionsMenu(); getActivity().invalidateOptionsMenu();
} }
private Preference createWifiDisplayPreference(final WifiDisplay d, boolean paired) { private Preference createWifiDisplayPreference(final WifiDisplay d) {
WifiDisplayPreference p = new WifiDisplayPreference(getActivity(), d); WifiDisplayPreference p = new WifiDisplayPreference(getActivity(), d);
if (d.equals(mWifiDisplayStatus.getActiveDisplay())) { if (d.equals(mWifiDisplayStatus.getActiveDisplay())) {
switch (mWifiDisplayStatus.getActiveDisplayState()) { switch (mWifiDisplayStatus.getActiveDisplayState()) {
@@ -264,22 +261,15 @@ public final class WifiDisplaySettings extends SettingsPreferenceFragment {
p.setSummary(R.string.wifi_display_status_connecting); p.setSummary(R.string.wifi_display_status_connecting);
break; break;
} }
} else if (paired && contains(mWifiDisplayStatus.getAvailableDisplays(), } else if (d.isAvailable()) {
d.getDeviceAddress())) { if (!d.canConnect()) {
p.setSummary(R.string.wifi_display_status_in_use);
p.setEnabled(false);
} else if (d.isRemembered()) {
p.setSummary(R.string.wifi_display_status_available); p.setSummary(R.string.wifi_display_status_available);
for (WifiDisplay display : mWifiDisplayStatus.getAvailableDisplays()) {
if (display.getDeviceAddress().equals(d.getDeviceAddress()) &&
!display.canConnect()) {
p.setSummary(R.string.wifi_display_status_in_use);
p.setEnabled(false);
break;
} }
} }
} else if (!paired && !d.canConnect()) { if (d.isRemembered()) {
p.setSummary(R.string.wifi_display_status_in_use);
p.setEnabled(false);
}
if (paired) {
p.setWidgetLayoutResource(R.layout.wifi_display_preference); p.setWidgetLayoutResource(R.layout.wifi_display_preference);
} }
return p; return p;