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

Commit 45a15942 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
parent d055939c
Loading
Loading
Loading
Loading
+32 −6
Original line number Original line Diff line number Diff line
@@ -29,7 +29,6 @@ import android.text.TextUtils;
import android.util.AttributeSet;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.util.SparseArray;
import android.widget.TextView;
import android.widget.TextView;

import com.android.settingslib.R;
import com.android.settingslib.R;


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

    private TextView mTitleView;
    private TextView mTitleView;

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


    static final int[] WIFI_CONNECTION_STRENGTH = {
    static final int[] WIFI_CONNECTION_STRENGTH = {
            R.string.accessibility_wifi_one_bar,
            R.string.accessibility_wifi_one_bar,
@@ -85,6 +85,24 @@ public class AccessPointPreference extends Preference {
        refresh();
        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() {
    public AccessPoint getAccessPoint() {
        return mAccessPoint;
        return mAccessPoint;
    }
    }
@@ -112,7 +130,7 @@ public class AccessPointPreference extends Preference {


    protected void updateIcon(int level, Context context) {
    protected void updateIcon(int level, Context context) {
        if (level == -1) {
        if (level == -1) {
            setIcon(null);
            safeSetDefaultIcon();
        } else {
        } else {
            if (getIcon() == null) {
            if (getIcon() == null) {
                // To avoid a drawing race condition, we first set the state (SECURE/NONE) and then
                // 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_SECURED
                            : STATE_NONE);
                            : STATE_NONE);
                    Drawable drawable = mWifiSld.getCurrent();
                    Drawable drawable = mWifiSld.getCurrent();
                    if (!mForSavedNetworks) {
                    if (!mForSavedNetworks && drawable != null) {
                        setIcon(drawable);
                        setIcon(drawable);
                    } else {
                        return;
                        setIcon(null);
                    }
                }
                safeSetDefaultIcon();
            }
            }
        }
        }
    }
    }

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