[Wi-Fi] Apply WifiEntry onUpdate to support refresh WiFi detail page for OpenRoaming feature.

Issue: The preference UIs status didn't chage dynamically.
Solution: update the preference UI status when onUpdated is called.

Bug: 146669261
Test: 1.manually mofidy framework to test.
      2.The getAvailabilityStatus() already tested in
      WifiSubscriptionDetailPreferenceController2Test.
Change-Id: I51b5e67df7998d7d3e9ede9ead7aa49ad574c7a3
This commit is contained in:
govenliu
2020-03-03 17:19:15 +08:00
parent 4d59bce21b
commit a22a457750
2 changed files with 24 additions and 8 deletions

View File

@@ -967,6 +967,9 @@ public class WifiDetailPreferenceController2 extends AbstractPreferenceControlle
@Override @Override
public void onUpdated() { public void onUpdated() {
refreshPage(); refreshPage();
// Refresh the Preferences in fragment.
((WifiNetworkDetailsFragment2) mFragment).refreshPreferences();
} }
/** /**

View File

@@ -33,6 +33,8 @@ import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import androidx.preference.PreferenceScreen;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
import com.android.settings.wifi.WifiConfigUiBase2; import com.android.settings.wifi.WifiConfigUiBase2;
@@ -71,6 +73,7 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
private HandlerThread mWorkerThread; private HandlerThread mWorkerThread;
private WifiDetailPreferenceController2 mWifiDetailPreferenceController2; private WifiDetailPreferenceController2 mWifiDetailPreferenceController2;
private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>(); private List<WifiDialog2.WifiDialog2Listener> mWifiDialogListeners = new ArrayList<>();
private List<AbstractPreferenceController> mControllers;
@Override @Override
public void onDestroy() { public void onDestroy() {
@@ -139,7 +142,7 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
@Override @Override
protected List<AbstractPreferenceController> createPreferenceControllers(Context context) { protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
final List<AbstractPreferenceController> controllers = new ArrayList<>(); mControllers = new ArrayList<>();
final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class); final ConnectivityManager cm = context.getSystemService(ConnectivityManager.class);
setupNetworksDetailTracker(); setupNetworksDetailTracker();
final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry(); final WifiEntry wifiEntry = mNetworkDetailsTracker.getWifiEntry();
@@ -153,39 +156,39 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
getSettingsLifecycle(), getSettingsLifecycle(),
context.getSystemService(WifiManager.class), context.getSystemService(WifiManager.class),
mMetricsFeatureProvider); mMetricsFeatureProvider);
controllers.add(mWifiDetailPreferenceController2); mControllers.add(mWifiDetailPreferenceController2);
final WifiAutoConnectPreferenceController2 wifiAutoConnectPreferenceController2 = final WifiAutoConnectPreferenceController2 wifiAutoConnectPreferenceController2 =
new WifiAutoConnectPreferenceController2(context); new WifiAutoConnectPreferenceController2(context);
wifiAutoConnectPreferenceController2.setWifiEntry(wifiEntry); wifiAutoConnectPreferenceController2.setWifiEntry(wifiEntry);
controllers.add(wifiAutoConnectPreferenceController2); mControllers.add(wifiAutoConnectPreferenceController2);
final AddDevicePreferenceController2 addDevicePreferenceController2 = final AddDevicePreferenceController2 addDevicePreferenceController2 =
new AddDevicePreferenceController2(context); new AddDevicePreferenceController2(context);
addDevicePreferenceController2.setWifiEntry(wifiEntry); addDevicePreferenceController2.setWifiEntry(wifiEntry);
controllers.add(addDevicePreferenceController2); mControllers.add(addDevicePreferenceController2);
final WifiMeteredPreferenceController2 meteredPreferenceController2 = final WifiMeteredPreferenceController2 meteredPreferenceController2 =
new WifiMeteredPreferenceController2(context, wifiEntry); new WifiMeteredPreferenceController2(context, wifiEntry);
controllers.add(meteredPreferenceController2); mControllers.add(meteredPreferenceController2);
final WifiPrivacyPreferenceController2 privacyController2 = final WifiPrivacyPreferenceController2 privacyController2 =
new WifiPrivacyPreferenceController2(context); new WifiPrivacyPreferenceController2(context);
privacyController2.setWifiEntry(wifiEntry); privacyController2.setWifiEntry(wifiEntry);
controllers.add(privacyController2); mControllers.add(privacyController2);
final WifiSubscriptionDetailPreferenceController2 final WifiSubscriptionDetailPreferenceController2
wifiSubscriptionDetailPreferenceController2 = wifiSubscriptionDetailPreferenceController2 =
new WifiSubscriptionDetailPreferenceController2(context); new WifiSubscriptionDetailPreferenceController2(context);
wifiSubscriptionDetailPreferenceController2.setWifiEntry(wifiEntry); wifiSubscriptionDetailPreferenceController2.setWifiEntry(wifiEntry);
controllers.add(wifiSubscriptionDetailPreferenceController2); mControllers.add(wifiSubscriptionDetailPreferenceController2);
// Sets callback listener for wifi dialog. // Sets callback listener for wifi dialog.
mWifiDialogListeners.add(mWifiDetailPreferenceController2); mWifiDialogListeners.add(mWifiDetailPreferenceController2);
mWifiDialogListeners.add(privacyController2); mWifiDialogListeners.add(privacyController2);
mWifiDialogListeners.add(meteredPreferenceController2); mWifiDialogListeners.add(meteredPreferenceController2);
return controllers; return mControllers;
} }
@Override @Override
@@ -225,4 +228,14 @@ public class WifiNetworkDetailsFragment2 extends DashboardFragment implements
SCAN_INTERVAL_MILLIS, SCAN_INTERVAL_MILLIS,
getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY)); getArguments().getString(KEY_CHOSEN_WIFIENTRY_KEY));
} }
/**
* API call for refreshing the preferences in this fragment.
*/
public void refreshPreferences() {
final PreferenceScreen screen = getPreferenceScreen();
for (AbstractPreferenceController controller : mControllers) {
controller.displayPreference(screen);
}
}
} }