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

Commit b2314f2d authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Fully expand QSPanel on scroll

If the user starts to scroll while the panel is not fully expanded,
expand it fully.

Test: manual: expand and collapse QS while trying to scroll it
Fixes: 189915859
Change-Id: I15d46e3ff4c67754aa8063ffa55e5c62cad7dc89
parent 7aafe8e0
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ public interface QS extends FragmentBase {

    String ACTION = "com.android.systemui.action.PLUGIN_QS";

    int VERSION = 10;
    int VERSION = 11;

    String TAG = "QS";

@@ -108,6 +108,20 @@ public interface QS extends FragmentBase {
     */
    void setCollapsedMediaVisibilityChangedListener(Consumer<Boolean> listener);

    /**
     * Set a scroll listener for the QSPanel container
     */
    default void setScrollListener(ScrollListener scrollListener) {}

    /**
     * Callback for when QSPanel container is scrolled
     */
    @ProvidesInterface(version = ScrollListener.VERSION)
    interface ScrollListener {
        int VERSION = 1;
        void onQsPanelScrollChanged(int scrollY);
    }

    @ProvidesInterface(version = HeightListener.VERSION)
    interface HeightListener {
        int VERSION = 1;
+1 −1
Original line number Diff line number Diff line
@@ -215,7 +215,7 @@ public class QSContainerImpl extends FrameLayout {

    public void setExpansion(float expansion) {
        mQsExpansion = expansion;
        mQSPanelContainer.setScrollingEnabled(expansion > 0.0f);
        mQSPanelContainer.setScrollingEnabled(expansion > 0f);
        updateExpansion();
    }

+13 −3
Original line number Diff line number Diff line
@@ -108,6 +108,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
    private QSPanelController mQSPanelController;
    private QuickQSPanelController mQuickQSPanelController;
    private QSCustomizerController mQSCustomizerController;
    private ScrollListener mScrollListener;
    private FeatureFlags mFeatureFlags;
    /**
     * When true, QS will translate from outside the screen. It will be clipped with parallax
@@ -174,6 +175,9 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
                    // Lazily update animators whenever the scrolling changes
                    mQSAnimator.onQsScrollingChanged();
                    mHeader.setExpandedScrollAmount(scrollY);
                    if (mScrollListener != null) {
                        mScrollListener.onQsPanelScrollChanged(scrollY);
                    }
        });
        mQSDetail = view.findViewById(R.id.qs_detail);
        mHeader = view.findViewById(R.id.header);
@@ -213,6 +217,11 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
                });
    }

    @Override
    public void setScrollListener(ScrollListener listener) {
        mScrollListener = listener;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
@@ -222,6 +231,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
        }
        mQSCustomizerController.setQs(null);
        mQsDetailDisplayer.setQsPanelController(null);
        mScrollListener = null;
    }

    @Override
+9 −0
Original line number Diff line number Diff line
@@ -3478,6 +3478,14 @@ public class NotificationPanelViewController extends PanelViewController {
        return !isFullWidth() || !mShowIconsWhenExpanded;
    }

    public final QS.ScrollListener mScrollListener = scrollY -> {
        if (scrollY > 0 && !mQsFullyExpanded) {
            if (DEBUG) Log.d(TAG, "Scrolling while not expanded. Forcing expand");
            // If we are scrolling QS, we should be fully expanded.
            expandWithQs();
        }
    };

    private final FragmentListener mFragmentListener = new FragmentListener() {
        @Override
        public void onFragmentViewCreated(String tag, Fragment fragment) {
@@ -3507,6 +3515,7 @@ public class NotificationPanelViewController extends PanelViewController {
            });
            mLockscreenShadeTransitionController.setQS(mQs);
            mNotificationStackScrollLayoutController.setQsContainer((ViewGroup) mQs.getView());
            mQs.setScrollListener(mScrollListener);
            updateQsExpansion();
        }