diff options
| author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-09-05 21:12:51 +0000 |
|---|---|---|
| committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-09-05 21:12:51 +0000 |
| commit | b5cc01342ea3930ae3bc7592e13c4b5f6f4c646d (patch) | |
| tree | f18e583fcdaefb7e41b7238d6cb03c61b9f30021 /src/com/android/settings | |
| parent | c7fafa25c20bfdebe765227bbc135b4b4ec89be3 (diff) | |
| parent | 92239ed799c81f3842302dd65f347d726c8c908d (diff) | |
| download | packages_apps_Settings-b5cc01342ea3930ae3bc7592e13c4b5f6f4c646d.tar.gz packages_apps_Settings-b5cc01342ea3930ae3bc7592e13c4b5f6f4c646d.tar.bz2 packages_apps_Settings-b5cc01342ea3930ae3bc7592e13c4b5f6f4c646d.zip | |
Merge "Fix bug #15890188 wifi toggle on-off switch missing after skipping setup wizard" into lmp-dev
Diffstat (limited to 'src/com/android/settings')
| -rw-r--r-- | src/com/android/settings/wifi/WifiEnabler.java | 45 |
1 files changed, 18 insertions, 27 deletions
diff --git a/src/com/android/settings/wifi/WifiEnabler.java b/src/com/android/settings/wifi/WifiEnabler.java index dc3974e30..ffc10a0b3 100644 --- a/src/com/android/settings/wifi/WifiEnabler.java +++ b/src/com/android/settings/wifi/WifiEnabler.java @@ -27,8 +27,6 @@ import android.net.wifi.WifiManager; import android.os.Handler; import android.os.Message; import android.provider.Settings; -import android.view.View; -import android.widget.CompoundButton; import android.widget.Switch; import android.widget.Toast; @@ -41,7 +39,6 @@ import java.util.concurrent.atomic.AtomicBoolean; public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { private Context mContext; - private Switch mSwitch; private SwitchBar mSwitchBar; private AtomicBoolean mConnected = new AtomicBoolean(false); @@ -88,22 +85,20 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { public WifiEnabler(Context context, SwitchBar switchBar) { mContext = context; mSwitchBar = switchBar; - mSwitch = switchBar.getSwitch(); - // This is a trick: as the Wi-Fi initial state is asynchronously coming from the - // BroadcastReceiver we cannot have the Switch visible at first otherwise you will notice - // its state change later on. So start it as VIEW.GONE and make it View.VISIBLE later - // when its state is defined. - mSwitch.setVisibility(View.GONE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); + mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); // The order matters! We really should not depend on this. :( mIntentFilter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION); mIntentFilter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION); + setupSwitchBar(); } public void setupSwitchBar() { + final int state = mWifiManager.getWifiState(); + handleWifiStateChanged(state); mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.show(); } @@ -126,27 +121,26 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { private void handleWifiStateChanged(int state) { switch (state) { case WifiManager.WIFI_STATE_ENABLING: - mSwitch.setEnabled(false); + mSwitchBar.setEnabled(false); break; case WifiManager.WIFI_STATE_ENABLED: - setSwitchChecked(true); - mSwitch.setEnabled(true); + setSwitchBarChecked(true); + mSwitchBar.setEnabled(true); updateSearchIndex(true); break; case WifiManager.WIFI_STATE_DISABLING: - mSwitch.setEnabled(false); + mSwitchBar.setEnabled(false); break; case WifiManager.WIFI_STATE_DISABLED: - setSwitchChecked(false); - mSwitch.setEnabled(true); + setSwitchBarChecked(false); + mSwitchBar.setEnabled(true); updateSearchIndex(false); break; default: - setSwitchChecked(false); - mSwitch.setEnabled(true); + setSwitchBarChecked(false); + mSwitchBar.setEnabled(true); updateSearchIndex(false); } - mSwitch.setVisibility(View.VISIBLE); } private void updateSearchIndex(boolean isWiFiOn) { @@ -158,12 +152,10 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { mHandler.sendMessage(msg); } - private void setSwitchChecked(boolean checked) { - if (checked != mSwitch.isChecked()) { - mStateMachineEvent = true; - mSwitch.setChecked(checked); - mStateMachineEvent = false; - } + private void setSwitchBarChecked(boolean checked) { + mStateMachineEvent = true; + mSwitchBar.setChecked(checked); + mStateMachineEvent = false; } private void handleStateChanged(@SuppressWarnings("unused") NetworkInfo.DetailedState state) { @@ -192,7 +184,7 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { if (isChecked && !WirelessSettings.isRadioAllowed(mContext, Settings.Global.RADIO_WIFI)) { Toast.makeText(mContext, R.string.wifi_in_airplane_mode, Toast.LENGTH_SHORT).show(); // Reset switch to off. No infinite check/listenenr loop. - switchView.setChecked(false); + mSwitchBar.setChecked(false); return; } @@ -203,10 +195,9 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { mWifiManager.setWifiApEnabled(null, false); } - mSwitch.setEnabled(false); if (!mWifiManager.setWifiEnabled(isChecked)) { // Error - mSwitch.setEnabled(true); + mSwitchBar.setEnabled(true); Toast.makeText(mContext, R.string.wifi_error, Toast.LENGTH_SHORT).show(); } } |
