diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 38f5a43fc42..01551da34ef 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -90,6 +90,7 @@ public class WifiSettings extends RestrictedSettingsFragment WifiDialog.WifiDialogListener { private static final String TAG = "WifiSettings"; + private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); /* package */ static final int MENU_ID_WPS_PBC = Menu.FIRST; private static final int MENU_ID_WPS_PIN = Menu.FIRST + 1; @@ -203,6 +204,9 @@ public class WifiSettings extends RestrictedSettingsFragment mConfigureWifiSettingsPreference = findPreference(PREF_KEY_CONFIGURE_WIFI_SETTINGS); mSavedNetworksPreference = findPreference(PREF_KEY_SAVED_NETWORKS); + // Hide additional settings until access points are shown during onStart + showAdditionalSettings(false); + Context prefContext = getPrefContext(); mAddPreference = new Preference(prefContext); mAddPreference.setIcon(R.drawable.ic_menu_add_inset); @@ -220,6 +224,17 @@ public class WifiSettings extends RestrictedSettingsFragment mBgThread.start(); } + // TODO(b/37429702): Figure out how to temporarily disable animations during startup and remove + // this method. + private void showAdditionalSettings(boolean visible) { + mAdditionalSettingsPreferenceCategory.setVisible(visible); + mAdditionalSettingsPreferenceCategory.removeAll(); + if (visible) { + mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference); + mAdditionalSettingsPreferenceCategory.addPreference(mSavedNetworksPreference); + } + } + @Override public void onDestroy() { mBgThread.quit(); @@ -335,6 +350,17 @@ public class WifiSettings extends RestrictedSettingsFragment mWifiEnabler = createWifiEnabler(); mWifiTracker.startTracking(); + + if (!isUiRestricted() && mWifiManager.isWifiEnabled()) { + setProgressBarVisible(true); + mWifiTracker.forceUpdate(); + if (DEBUG) Log.d(TAG, "WifiSettings onStart APs: " + mWifiTracker.getAccessPoints()); + + getView().removeCallbacks(mUpdateAccessPointsRunnable); + updateAccessPointPreferences(); + } + + showAdditionalSettings(true); } /** @@ -353,8 +379,6 @@ public class WifiSettings extends RestrictedSettingsFragment if (mWifiEnabler != null) { mWifiEnabler.resume(activity); } - - activity.invalidateOptionsMenu(); } @Override @@ -370,6 +394,7 @@ public class WifiSettings extends RestrictedSettingsFragment mWifiTracker.stopTracking(); getView().removeCallbacks(mUpdateAccessPointsRunnable); getView().removeCallbacks(mHideProgressBarRunnable); + showAdditionalSettings(false); super.onStop(); } @@ -733,7 +758,7 @@ public class WifiSettings extends RestrictedSettingsFragment removeCachedPrefs(mAccessPointsPreferenceCategory); mAddPreference.setOrder(index); mAccessPointsPreferenceCategory.addPreference(mAddPreference); - setConfigureWifiSettingsVisibility(); + setAdditionalSettingsSummaries(); if (!hasAvailableAccessPoints) { setProgressBarVisible(true); @@ -812,8 +837,8 @@ public class WifiSettings extends RestrictedSettingsFragment // in the Wifi Network Details Fragment pref.getAccessPoint().saveWifiState(pref.getExtras()); pref.setFragment(WifiNetworkDetailsFragment.class.getName()); - pref.refresh(); + mConnectedAccessPointPreferenceCategory.addPreference(pref); mConnectedAccessPointPreferenceCategory.setVisible(true); } @@ -824,7 +849,7 @@ public class WifiSettings extends RestrictedSettingsFragment mConnectedAccessPointPreferenceCategory.setVisible(false); } - private void setConfigureWifiSettingsVisibility() { + private void setAdditionalSettingsSummaries() { mAdditionalSettingsPreferenceCategory.addPreference(mConfigureWifiSettingsPreference); boolean wifiWakeupEnabled = Settings.Global.getInt( getContentResolver(), Settings.Global.WIFI_WAKEUP_ENABLED, 0) == 1;