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

Commit bbcebde5 authored by Selim Cinek's avatar Selim Cinek
Browse files

Refactored the viewstates for more modularity

Viewstates are now much more independent of the
Stack scroller and can be used on their own.

Test: Add notification, everything still works
Bug: 32437839
Change-Id: I535ea9200dcaafef9eb833c2f0301cb09731542f
parent 76932df9
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -22,12 +22,17 @@ import android.util.AttributeSet;
import android.view.View;

import com.android.systemui.R;
import com.android.systemui.statusbar.stack.ExpandableViewState;
import com.android.systemui.statusbar.stack.StackScrollState;

public class DismissView extends StackScrollerDecorView {
    private final int mClearAllTopPadding;
    private DismissViewButton mDismissButton;

    public DismissView(Context context, AttributeSet attrs) {
        super(context, attrs);
        mClearAllTopPadding = context.getResources().getDimensionPixelSize(
                R.dimen.clear_all_padding_top);
    }

    @Override
@@ -63,4 +68,21 @@ public class DismissView extends StackScrollerDecorView {
    public boolean isButtonVisible() {
        return mDismissButton.getAlpha() != 0.0f;
    }

    @Override
    public ExpandableViewState createNewViewState(StackScrollState stackScrollState) {
        return new DismissViewState();
    }

    public class DismissViewState extends ExpandableViewState {
        @Override
        public void applyToView(View view) {
            super.applyToView(view);
            if (view instanceof DismissView) {
                DismissView dismissView = (DismissView) view;
                boolean visible = this.clipTopAmount < mClearAllTopPadding;
                dismissView.performVisibilityAnimation(visible && !dismissView.willBeGone());
            }
        }
    }
}
+20 −0
Original line number Diff line number Diff line
@@ -23,6 +23,8 @@ import android.view.View;
import android.widget.TextView;

import com.android.systemui.R;
import com.android.systemui.statusbar.stack.ExpandableViewState;
import com.android.systemui.statusbar.stack.StackScrollState;

public class EmptyShadeView extends StackScrollerDecorView {

@@ -40,4 +42,22 @@ public class EmptyShadeView extends StackScrollerDecorView {
    protected View findContentView() {
        return findViewById(R.id.no_notifications);
    }

    @Override
    public ExpandableViewState createNewViewState(StackScrollState stackScrollState) {
        return new EmptyShadeViewState();
    }

    public static class EmptyShadeViewState extends ExpandableViewState {
        @Override
        public void applyToView(View view) {
            super.applyToView(view);
            if (view instanceof EmptyShadeView) {
                EmptyShadeView emptyShadeView = (EmptyShadeView) view;
                boolean visible = this.clipTopAmount <= 0;
                emptyShadeView.performVisibilityAnimation(
                        visible && !emptyShadeView.willBeGone());
            }
        }
    }
}
+28 −2
Original line number Diff line number Diff line
@@ -54,7 +54,7 @@ import com.android.systemui.statusbar.stack.NotificationChildrenContainer;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.StackScrollState;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackViewState;
import com.android.systemui.statusbar.stack.ExpandableViewState;

import java.util.ArrayList;
import java.util.List;
@@ -459,7 +459,7 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {

    public void getChildrenStates(StackScrollState resultState) {
        if (mIsSummaryWithChildren) {
            StackViewState parentState = resultState.getViewStateForView(this);
            ExpandableViewState parentState = resultState.getViewStateForView(this);
            mChildrenContainer.getState(resultState, parentState);
        }
    }
@@ -1679,4 +1679,30 @@ public class ExpandableNotificationRow extends ActivatableNotificationView {
    public interface OnExpandClickListener {
        void onExpandClicked(NotificationData.Entry clickedEntry, boolean nowExpanded);
    }

    @Override
    public ExpandableViewState createNewViewState(StackScrollState stackScrollState) {
        return new NotificationViewState(stackScrollState);
    }

    public static class NotificationViewState extends ExpandableViewState {

        private final StackScrollState mOverallState;

        private NotificationViewState(StackScrollState stackScrollState) {
            mOverallState = stackScrollState;
        }

        @Override
        public void applyToView(View view) {
            super.applyToView(view);
            if (view instanceof ExpandableNotificationRow) {
                ExpandableNotificationRow row = (ExpandableNotificationRow) view;
                if (this.isBottomClipped) {
                    row.setClipToActualHeight(true);
                }
                row.applyChildrenState(mOverallState);
            }
        }
    }
}
+6 −0
Original line number Diff line number Diff line
@@ -25,6 +25,8 @@ import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.ExpandableViewState;
import com.android.systemui.statusbar.stack.StackScrollState;

import java.util.ArrayList;

@@ -438,6 +440,10 @@ public abstract class ExpandableView extends FrameLayout {

    public void setActualHeightAnimating(boolean animating) {}

    public ExpandableViewState createNewViewState(StackScrollState stackScrollState) {
        return new ExpandableViewState();
    }

    /**
     * A listener notifying when {@link #getActualHeight} changes.
     */
+3 −3
Original line number Diff line number Diff line
@@ -197,7 +197,7 @@ import com.android.systemui.statusbar.stack.NotificationStackScrollLayout;
import com.android.systemui.statusbar.stack.NotificationStackScrollLayout
        .OnChildLocationsChangedListener;
import com.android.systemui.statusbar.stack.StackStateAnimator;
import com.android.systemui.statusbar.stack.StackViewState;
import com.android.systemui.statusbar.stack.ExpandableViewState;
import com.android.systemui.volume.VolumeComponent;

import java.io.FileDescriptor;
@@ -569,8 +569,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode,
     */
    protected boolean mStartedGoingToSleep;

    private static final int VISIBLE_LOCATIONS = StackViewState.LOCATION_FIRST_HUN
            | StackViewState.LOCATION_MAIN_AREA;
    private static final int VISIBLE_LOCATIONS = ExpandableViewState.LOCATION_FIRST_HUN
            | ExpandableViewState.LOCATION_MAIN_AREA;

    private final OnChildLocationsChangedListener mNotificationLocationsChangedListener =
            new OnChildLocationsChangedListener() {
Loading