diff options
author | Adnan Begovic <adnan@cyngn.com> | 2015-12-14 17:47:59 -0800 |
---|---|---|
committer | Adnan Begovic <adnan@cyngn.com> | 2015-12-14 17:47:59 -0800 |
commit | abe4aff41352fb2ce92247178ae03a5fc8e2a9bc (patch) | |
tree | 9dff5ffe3b279293fe5864cbecc98e2499fc52ec /src/com/android/settings/wifi | |
parent | 61bc55b3561aa4652cfe6df67d3a8c716b7f1e92 (diff) | |
download | packages_apps_Settings-abe4aff41352fb2ce92247178ae03a5fc8e2a9bc.zip packages_apps_Settings-abe4aff41352fb2ce92247178ae03a5fc8e2a9bc.tar.gz packages_apps_Settings-abe4aff41352fb2ce92247178ae03a5fc8e2a9bc.tar.bz2 |
Settings: Fix up management for wifi priority.
Change-Id: I3a173caf6eb2cf7f602071851afe9828cda01ca2
Diffstat (limited to 'src/com/android/settings/wifi')
3 files changed, 29 insertions, 10 deletions
diff --git a/src/com/android/settings/wifi/AccessPointPreference.java b/src/com/android/settings/wifi/AccessPointPreference.java index 264f681..d9cb34a 100644 --- a/src/com/android/settings/wifi/AccessPointPreference.java +++ b/src/com/android/settings/wifi/AccessPointPreference.java @@ -40,6 +40,7 @@ public class AccessPointPreference extends Preference { private static final int[] STATE_NONE = {}; private static int[] wifi_signal_attributes = { R.attr.wifi_signal }; + private static int[] wifi_no_signal_attributes = { R.attr.wifi_no_signal }; private final StateListDrawable mWifiSld; private final int mBadgePadding; @@ -52,6 +53,9 @@ public class AccessPointPreference extends Preference { private int mLevel; private CharSequence mContentDescription; + private boolean mShowNoSignalIcon; + private boolean mNoSignalLoaded; + static final int[] WIFI_CONNECTION_STRENGTH = { R.string.accessibility_wifi_one_bar, R.string.accessibility_wifi_two_bars, @@ -68,7 +72,7 @@ public class AccessPointPreference extends Preference { } public AccessPointPreference(AccessPoint accessPoint, Context context, UserBadgeCache cache, - boolean forSavedNetworks) { + boolean forSavedNetworks, boolean showNoSignal) { super(context); mBadgeCache = cache; mAccessPoint = accessPoint; @@ -82,6 +86,7 @@ public class AccessPointPreference extends Preference { // Distance from the end of the title at which this AP's user badge should sit. mBadgePadding = context.getResources() .getDimensionPixelSize(R.dimen.wifi_preference_badge_padding); + mShowNoSignalIcon = showNoSignal; refresh(); } @@ -112,9 +117,24 @@ public class AccessPointPreference extends Preference { protected void updateIcon(int level, Context context) { if (level == -1) { - setIcon(null); + if (mShowNoSignalIcon) { + Drawable drawable = getIcon(); + if (drawable == null || !mNoSignalLoaded) { + StateListDrawable sld = (StateListDrawable) context.getTheme() + .obtainStyledAttributes(wifi_no_signal_attributes).getDrawable(0); + if (sld != null) { + sld.setState((getAccessPoint().getSecurity() != AccessPoint.SECURITY_NONE) + ? STATE_SECURED : STATE_NONE); + setIcon(sld.getCurrent()); + mNoSignalLoaded = true; + } + } + } + if (!mNoSignalLoaded) { + setIcon(null); + } } else { - if (getIcon() == null) { + if (getIcon() == null || mNoSignalLoaded) { // To avoid a drawing race condition, we first set the state (SECURE/NONE) and then // set the icon (drawable) to that state's drawable. // If sld is null then we are indexing and therefore do not have access to @@ -124,7 +144,7 @@ public class AccessPointPreference extends Preference { ? STATE_SECURED : STATE_NONE); Drawable drawable = mWifiSld.getCurrent(); - if (!mForSavedNetworks) { + if (!mForSavedNetworks || mShowNoSignalIcon) { setIcon(drawable); } else { setIcon(null); @@ -156,7 +176,7 @@ public class AccessPointPreference extends Preference { final Context context = getContext(); int level = mAccessPoint.getLevel(); - if (level != mLevel) { + if (level != mLevel || mShowNoSignalIcon) { mLevel = level; updateIcon(mLevel, context); notifyChanged(); diff --git a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java index d50ebfc..a3140a1 100644 --- a/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java +++ b/src/com/android/settings/wifi/SavedAccessPointsWifiSettings.java @@ -164,7 +164,7 @@ public class SavedAccessPointsWifiSettings extends RestrictedSettingsFragment Bundle savedInstanceState) { mNetworksListView = new DraggableSortListView(getActivity()); mNetworksListView.setId(android.R.id.list); - mNetworksListView.setDropListener(isAutoConfigPriorities() ? null : mDropListener); + mNetworksListView.setDropListener(mDropListener); return mNetworksListView; } @@ -271,13 +271,12 @@ public class SavedAccessPointsWifiSettings extends RestrictedSettingsFragment final int accessPointsSize = accessPoints.size(); for (int i = 0; i < accessPointsSize; ++i){ AccessPointPreference preference = new AccessPointPreference(accessPoints.get(i), - context, mUserBadgeCache, true); - preference.setIcon(null); + context, mUserBadgeCache, true, true); preference.setOrder(i); preferenceScreen.addPreference(preference); } - if(getPreferenceScreen().getPreferenceCount() < 1) { + if (getPreferenceScreen().getPreferenceCount() < 1) { Log.w(TAG, "Saved networks activity loaded, but there are no saved networks!"); } } diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java index 7eded24..18eb6d9 100644 --- a/src/com/android/settings/wifi/WifiSettings.java +++ b/src/com/android/settings/wifi/WifiSettings.java @@ -675,7 +675,7 @@ public class WifiSettings extends RestrictedSettingsFragment continue; } AccessPointPreference preference = new AccessPointPreference(accessPoint, - getActivity(), mUserBadgeCache, false); + getActivity(), mUserBadgeCache, false, false); preference.setOrder(index++); if (mOpenSsid != null && mOpenSsid.equals(accessPoint.getSsidStr()) |