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

Commit def2bc1a authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
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
parents c74d6b56 44d3907b
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) {