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

Commit fd9c958b authored by Brad Stenning's avatar Brad Stenning Committed by android-build-merger
Browse files

Merge "Change CarSystemUI notification button from launching Car Notification...

Merge "Change CarSystemUI notification button from launching Car Notification Center to opening the panel instead." into qt-dev
am: def2bc1a

Change-Id: Ia2e26cf6334eb74a87bbeda0d9f44ad03510b9b4
parents 424321ce def2bc1a
Loading
Loading
Loading
Loading
+6 −5
Original line number Diff line number Diff line
@@ -108,12 +108,13 @@
            android:layout_height="match_parent"
            android:layout_weight="1"/>

        <com.android.systemui.statusbar.car.CarFacetButton
            android:id="@+id/note"
        <!-- Click handling will be initialized in CarNavigationBarView because its
             id = notifications which is treated special for the opening of the notification panel
         -->
        <com.android.systemui.statusbar.car.CarNavigationButton
            android:id="@+id/notifications"
            style="@style/NavigationBarButton"
            systemui:icon="@drawable/car_ic_notification"
            systemui:intent="intent:#Intent;component=com.android.car.notification/.CarNotificationCenterActivity;launchFlags=0x14000000;end"
            systemui:packages="com.android.car.notification"
            android:src="@drawable/car_ic_notification"
            systemui:selectedIcon="@drawable/car_ic_notification_selected"
            systemui:useMoreIcon="false"
        />
+29 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.statusbar.car;

import android.content.Context;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;
@@ -34,7 +35,7 @@ import com.android.systemui.statusbar.phone.StatusBarIconController;
 */
class CarNavigationBarView extends LinearLayout {
    private View mNavButtons;
    private CarFacetButton mNotificationsButton;
    private View mNotificationsButton;
    private CarStatusBar mCarStatusBar;
    private Context mContext;
    private View mLockScreenButtons;
@@ -74,13 +75,39 @@ class CarNavigationBarView extends LinearLayout {
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (mStatusBarWindowTouchListener != null) {
            // forward touch events to the status bar window so it can add a drag down
            boolean shouldConsumeEvent = shouldConsumeNotificationButtonEvent(ev);
            // Forward touch events to the status bar window so it can drag
            // windows if required (Notification shade)
            mStatusBarWindowTouchListener.onTouch(this, ev);
            // return true if child views should not receive this event.
            if (shouldConsumeEvent) {
                return true;
            }
        }
        return super.onInterceptTouchEvent(ev);
    }

    /**
     * If the motion event is over top of the notification button while the notification
     * panel is open, we need the statusbar touch listeners handle the event instead of the button.
     * Since the statusbar listener will trigger a close of the notification panel before the
     * any button click events are fired this will prevent reopening the panel.
     *
     * Note: we can't use requestDisallowInterceptTouchEvent because the gesture detector will
     * always receive the ACTION_DOWN and thus think a longpress happened if no other events are
     * received
     *
     * @return true if the notification button should not receive the event
     */
    private boolean shouldConsumeNotificationButtonEvent(MotionEvent ev) {
        if (mNotificationsButton == null || !mCarStatusBar.isNotificationPanelOpen()) {
            return false;
        }
        Rect notificationButtonLocation = new Rect();
        mNotificationsButton.getHitRect(notificationButtonLocation);
        return notificationButtonLocation.contains((int) ev.getX(), (int) ev.getY());
    }


    void setStatusBar(CarStatusBar carStatusBar) {
        mCarStatusBar = carStatusBar;
+13 −2
Original line number Diff line number Diff line
@@ -349,16 +349,20 @@ public class CarStatusBar extends StatusBar implements
                new CloseNotificationGestureListener() {
                    @Override
                    protected void close() {
                        if (mPanelExpanded) {
                            animateCollapsePanels();
                        }
                    }
                });
        // Attached to the NavBars to close the notification shade
        GestureDetector navBarCloseNotificationGestureDetector = new GestureDetector(mContext,
                new NavBarCloseNotificationGestureListener() {
                    @Override
                    protected void close() {
                        if (mPanelExpanded) {
                            animateCollapsePanels();
                        }
                    }
                });
        mNavBarNotificationTouchListener =
                (v, event) -> {
@@ -520,6 +524,13 @@ public class CarStatusBar extends StatusBar implements
        mNotificationViewController.enable();
    }

    /**
     * @return true if the notification panel is currently visible
     */
    boolean isNotificationPanelOpen() {
        return mPanelExpanded;
    }

    @Override
    public void animateExpandNotificationsPanel() {
        if (!mCommandQueue.panelsEnabled() || !mUserSetup) {