Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 823cd0e3 authored by Salvador Martinez's avatar Salvador Martinez
Browse files

Prevent wifi icon from disappearing

Made changes to AccessPointPreference to prevent
it from ever setting a empty icon to reduce the
jittering from elements all changing at once.

Bug: 29979747
Change-Id: If432aed1d55b37cf3d48074275f8b3dc0584f884
(cherry picked from commit 45a15942)
parent 4ecc9d2d
Loading
Loading
Loading
Loading
+32 −6
Original line number Diff line number Diff line
@@ -29,7 +29,6 @@ import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.widget.TextView;

import com.android.settingslib.R;

public class AccessPointPreference extends Preference {
@@ -44,13 +43,14 @@ public class AccessPointPreference extends Preference {
    private final StateListDrawable mWifiSld;
    private final int mBadgePadding;
    private final UserBadgeCache mBadgeCache;

    private TextView mTitleView;

    private boolean mForSavedNetworks = false;
    private AccessPoint mAccessPoint;
    private Drawable mBadge;
    private int mLevel;
    private CharSequence mContentDescription;
    private int mDefaultIconResId;

    static final int[] WIFI_CONNECTION_STRENGTH = {
            R.string.accessibility_wifi_one_bar,
@@ -85,6 +85,24 @@ public class AccessPointPreference extends Preference {
        refresh();
    }

    public AccessPointPreference(AccessPoint accessPoint, Context context, UserBadgeCache cache,
            int iconResId, boolean forSavedNetworks) {
        super(context);
        mBadgeCache = cache;
        mAccessPoint = accessPoint;
        mForSavedNetworks = forSavedNetworks;
        mAccessPoint.setTag(this);
        mLevel = -1;
        mDefaultIconResId = iconResId;

        mWifiSld = (StateListDrawable) context.getTheme()
                .obtainStyledAttributes(wifi_signal_attributes).getDrawable(0);

        // 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);
    }

    public AccessPoint getAccessPoint() {
        return mAccessPoint;
    }
@@ -112,7 +130,7 @@ public class AccessPointPreference extends Preference {

    protected void updateIcon(int level, Context context) {
        if (level == -1) {
            setIcon(null);
            safeSetDefaultIcon();
        } else {
            if (getIcon() == null) {
                // To avoid a drawing race condition, we first set the state (SECURE/NONE) and then
@@ -124,13 +142,21 @@ public class AccessPointPreference extends Preference {
                            ? STATE_SECURED
                            : STATE_NONE);
                    Drawable drawable = mWifiSld.getCurrent();
                    if (!mForSavedNetworks) {
                    if (!mForSavedNetworks && drawable != null) {
                        setIcon(drawable);
                    } else {
                        setIcon(null);
                        return;
                    }
                }
                safeSetDefaultIcon();
            }
        }
    }

    private void safeSetDefaultIcon() {
        if (mDefaultIconResId != 0) {
            setIcon(mDefaultIconResId);
        } else {
            setIcon(null);
        }
    }