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

Commit 86a72a8e authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Request layout if visiblity (thus, size) changes"

parents bf2fbaa7 f303d953
Loading
Loading
Loading
Loading
+20 −10
Original line number Diff line number Diff line
@@ -126,20 +126,21 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
    }

    public void applyMobileState(MobileIconState state) {
        boolean requestLayout = false;
        if (state == null) {
            requestLayout = getVisibility() != View.GONE;
            setVisibility(View.GONE);
            mState = null;
            return;
        }

        if (mState == null) {
        } else if (mState == null) {
            requestLayout = true;
            mState = state.copy();
            initViewState();
            return;
        } else if (!mState.equals(state)) {
            requestLayout = updateState(state.copy());
        }

        if (!mState.equals(state)) {
            updateState(state.copy());
        if (requestLayout) {
            requestLayout();
        }
    }

@@ -162,20 +163,24 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
        mMobileRoaming.setVisibility(mState.roaming ? View.VISIBLE : View.GONE);
        mMobileRoamingSpace.setVisibility(mState.roaming ? View.VISIBLE : View.GONE);
        mIn.setVisibility(mState.activityIn ? View.VISIBLE : View.GONE);
        mOut.setVisibility(mState.activityIn ? View.VISIBLE : View.GONE);
        mOut.setVisibility(mState.activityOut ? View.VISIBLE : View.GONE);
        mInoutContainer.setVisibility((mState.activityIn || mState.activityOut)
                ? View.VISIBLE : View.GONE);
    }

    private void updateState(MobileIconState state) {
    private boolean updateState(MobileIconState state) {
        boolean needsLayout = false;

        setContentDescription(state.contentDescription);
        if (mState.visible != state.visible) {
            mMobileGroup.setVisibility(state.visible ? View.VISIBLE : View.GONE);
            needsLayout = true;
        }
        if (mState.strengthId != state.strengthId) {
            mMobileDrawable.setLevel(state.strengthId);
        }
        if (mState.typeId != state.typeId) {
            needsLayout |= state.typeId == 0 || mState.typeId == 0;
            if (state.typeId != 0) {
                mMobileType.setContentDescription(state.typeContentDescription);
                mMobileType.setImageResource(state.typeId);
@@ -188,11 +193,16 @@ public class StatusBarMobileView extends FrameLayout implements DarkReceiver,
        mMobileRoaming.setVisibility(state.roaming ? View.VISIBLE : View.GONE);
        mMobileRoamingSpace.setVisibility(state.roaming ? View.VISIBLE : View.GONE);
        mIn.setVisibility(state.activityIn ? View.VISIBLE : View.GONE);
        mOut.setVisibility(state.activityIn ? View.VISIBLE : View.GONE);
        mOut.setVisibility(state.activityOut ? View.VISIBLE : View.GONE);
        mInoutContainer.setVisibility((state.activityIn || state.activityOut)
                ? View.VISIBLE : View.GONE);

        needsLayout |= state.roaming != mState.roaming
                || state.activityIn != mState.activityIn
                || state.activityOut != mState.activityOut;

        mState = state;
        return needsLayout;
    }

    @Override
+16 −7
Original line number Diff line number Diff line
@@ -191,23 +191,26 @@ public class StatusBarWifiView extends FrameLayout implements DarkReceiver,
    }

    public void applyWifiState(WifiIconState state) {
        boolean requestLayout = false;

        if (state == null) {
            requestLayout = getVisibility() != View.GONE;
            setVisibility(View.GONE);
            mState = null;
            return;
        }

        if (mState == null) {
        } else if (mState == null) {
            requestLayout = true;
            mState = state.copy();
            initViewState();
        } else if (!mState.equals(state)) {
            requestLayout = updateState(state.copy());
        }

        if (!mState.equals(state)) {
            updateState(state.copy());
        if (requestLayout) {
            requestLayout();
        }
    }

    private void updateState(WifiIconState state) {
    private boolean updateState(WifiIconState state) {
        setContentDescription(state.contentDescription);
        if (mState.resId != state.resId && state.resId >= 0) {
            NeutralGoodDrawable drawable = NeutralGoodDrawable
@@ -222,11 +225,17 @@ public class StatusBarWifiView extends FrameLayout implements DarkReceiver,
                (state.activityIn || state.activityOut) ? View.VISIBLE : View.GONE);
        mAirplaneSpacer.setVisibility(state.airplaneSpacerVisible ? View.VISIBLE : View.GONE);
        mSignalSpacer.setVisibility(state.signalSpacerVisible ? View.VISIBLE : View.GONE);

        boolean needsLayout = state.activityIn != mState.activityIn
                ||state.activityOut != mState.activityOut;

        if (mState.visible != state.visible) {
            needsLayout |= true;
            setVisibility(state.visible ? View.VISIBLE : View.GONE);
        }

        mState = state;
        return needsLayout;
    }

    private void initViewState() {
+7 −3
Original line number Diff line number Diff line
@@ -203,7 +203,7 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
        v.set(icon);
        v.setStaticDrawableColor(mColor);
        v.setDecorColor(mColor);
        addView(v, 0, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, mIconSize));
        addView(v, 0, createLayoutParams());
    }

    public void addDemoWifiView(WifiIconState state) {
@@ -223,7 +223,7 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
        mWifiView = view;
        mWifiView.applyWifiState(state);
        mWifiView.setStaticDrawableColor(mColor);
        addView(view, viewIndex);
        addView(view, viewIndex, createLayoutParams());
    }

    public void updateWifiState(WifiIconState state) {
@@ -244,7 +244,7 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da

        // mobile always goes at the end
        mMobileViews.add(view);
        addView(view, getChildCount());
        addView(view, getChildCount(), createLayoutParams());
    }

    public void updateMobileState(MobileIconState state) {
@@ -290,6 +290,10 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da
        return null;
    }

    private LayoutParams createLayoutParams() {
        return new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, mIconSize);
    }

    @Override
    public void onDarkChanged(Rect area, float darkIntensity, int tint) {
        setColor(DarkIconDispatcher.getTint(area, mStatusIcons, tint));