From e2c6e7520b5002573bf76bcdee909281514eabb0 Mon Sep 17 00:00:00 2001 From: Isaac Levy Date: Wed, 24 Aug 2011 16:41:10 -0700 Subject: [PATCH] Fixed wifi refresh bug, b/5021754 Change-Id: I93711094ceb1490accce1e466de4cc1541dffdff --- .../android/settings/wifi/AccessPoint.java | 36 ++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/com/android/settings/wifi/AccessPoint.java b/src/com/android/settings/wifi/AccessPoint.java index 799a8da9f2d..66db32e55a5 100644 --- a/src/com/android/settings/wifi/AccessPoint.java +++ b/src/com/android/settings/wifi/AccessPoint.java @@ -71,7 +71,6 @@ class AccessPoint extends Preference { private int mRssi; private WifiInfo mInfo; private DetailedState mState; - private ImageView mSignal; static int getSecurity(WifiConfiguration config) { if (config.allowedKeyManagement.get(KeyMgmt.WPA_PSK)) { @@ -145,12 +144,14 @@ class AccessPoint extends Preference { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadConfig(config); + refresh(); } AccessPoint(Context context, ScanResult result) { super(context); setWidgetLayoutResource(R.layout.preference_widget_wifi_signal); loadResult(result); + refresh(); } AccessPoint(Context context, Bundle savedState) { @@ -204,17 +205,16 @@ class AccessPoint extends Preference { @Override protected void onBindView(View view) { - setTitle(ssid); - mSignal = (ImageView) view.findViewById(R.id.signal); + super.onBindView(view); + ImageView signal = (ImageView) view.findViewById(R.id.signal); if (mRssi == Integer.MAX_VALUE) { - mSignal.setImageDrawable(null); + signal.setImageDrawable(null); } else { - mSignal.setImageResource(R.drawable.wifi_signal); - mSignal.setImageState((security != SECURITY_NONE) ? + signal.setImageLevel(getLevel()); + signal.setImageResource(R.drawable.wifi_signal); + signal.setImageState((security != SECURITY_NONE) ? STATE_SECURED : STATE_NONE, true); } - refresh(); - super.onBindView(view); } @Override @@ -245,14 +245,19 @@ class AccessPoint extends Preference { } boolean update(ScanResult result) { - // We do not call refresh() since this is called before onBindView(). if (ssid.equals(result.SSID) && security == getSecurity(result)) { if (WifiManager.compareSignalLevel(result.level, mRssi) > 0) { + int oldLevel = getLevel(); mRssi = result.level; + if (getLevel() != oldLevel) { + notifyChanged(); + } } // This flag only comes from scans, is not easily saved in config - if (security == SECURITY_PSK) + if (security == SECURITY_PSK) { pskType = getPskType(result); + } + refresh(); return true; } return false; @@ -260,7 +265,8 @@ class AccessPoint extends Preference { void update(WifiInfo info, DetailedState state) { boolean reorder = false; - if (info != null && networkId != -1 && networkId == info.getNetworkId()) { + if (info != null && networkId != WifiConfiguration.INVALID_NETWORK_ID + && networkId == info.getNetworkId()) { reorder = (mInfo == null); mRssi = info.getRssi(); mInfo = info; @@ -309,13 +315,11 @@ class AccessPoint extends Preference { return "\"" + string + "\""; } + /** Updates the title and summary; may indirectly call notifyChanged() */ private void refresh() { - if (mSignal == null) { - return; - } - Context context = getContext(); - mSignal.setImageLevel(getLevel()); + setTitle(ssid); + Context context = getContext(); if (mState != null) { // This is the active connection setSummary(Summary.get(context, mState)); } else if (mRssi == Integer.MAX_VALUE) { // Wifi out of range