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

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

Merge "Move HUN car notifications into SystemUI" into qt-dev

am: 949266a3

Change-Id: Id0ff2d9a137f791642675a3a02e7b87d0069e820
parents 995bf1e3 949266a3
Loading
Loading
Loading
Loading
+11 −7
Original line number Original line Diff line number Diff line
@@ -74,17 +74,21 @@
        android:layout_height="match_parent"
        android:layout_height="match_parent"
        android:layout="@layout/car_fullscreen_user_switcher"/>
        android:layout="@layout/car_fullscreen_user_switcher"/>


    <include layout="@layout/status_bar_expanded"
    <include layout="@layout/notification_center_activity"
        android:layout_width="match_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_height="match_parent"
        android:layout_marginBottom="@dimen/navigation_bar_height"
        android:visibility="invisible"/>
        android:visibility="invisible"/>


    <include layout="@layout/notification_center_activity"
    <include layout="@layout/headsup_container"
        android:layout_width="match_parent"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_height="match_parent"
             android:layout_marginBottom="112dp"
        android:visibility="invisible"/>
             android:visibility="invisible"

    />
    <include layout="@layout/status_bar_expanded"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible"/>


    <com.android.systemui.statusbar.ScrimView
    <com.android.systemui.statusbar.ScrimView
        android:id="@+id/scrim_in_front"
        android:id="@+id/scrim_in_front"
+54 −1
Original line number Original line Diff line number Diff line
@@ -23,6 +23,7 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManager;
import android.app.ActivityTaskManager;
import android.app.ActivityTaskManager;
import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarDrivingStateEvent;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Drawable;
@@ -38,10 +39,13 @@ import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.RecyclerView;


import com.android.car.notification.CarHeadsUpNotificationManager;
import com.android.car.notification.CarNotificationListener;
import com.android.car.notification.CarNotificationListener;
import com.android.car.notification.CarNotificationView;
import com.android.car.notification.CarNotificationView;
import com.android.car.notification.CarUxRestrictionManagerWrapper;
import com.android.car.notification.CarUxRestrictionManagerWrapper;
import com.android.car.notification.HeadsUpEntry;
import com.android.car.notification.NotificationClickHandlerFactory;
import com.android.car.notification.NotificationClickHandlerFactory;
import com.android.car.notification.NotificationDataManager;
import com.android.car.notification.NotificationViewController;
import com.android.car.notification.NotificationViewController;
import com.android.car.notification.PreprocessingManager;
import com.android.car.notification.PreprocessingManager;
import com.android.internal.statusbar.RegisterStatusBarResult;
import com.android.internal.statusbar.RegisterStatusBarResult;
@@ -407,8 +411,13 @@ public class CarStatusBar extends StatusBar implements
        CarNotificationListener carNotificationListener = new CarNotificationListener();
        CarNotificationListener carNotificationListener = new CarNotificationListener();
        CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper =
        CarUxRestrictionManagerWrapper carUxRestrictionManagerWrapper =
                new CarUxRestrictionManagerWrapper();
                new CarUxRestrictionManagerWrapper();
        NotificationDataManager notificationDataManager = new NotificationDataManager();
        CarHeadsUpNotificationManager carHeadsUpNotificationManager =
                new CarSystemUIHeadsUpNotificationManager(mContext, clickHandlerFactory,
                        notificationDataManager);

        carNotificationListener.registerAsSystemService(mContext, carUxRestrictionManagerWrapper,
        carNotificationListener.registerAsSystemService(mContext, carUxRestrictionManagerWrapper,
                clickHandlerFactory);
                carHeadsUpNotificationManager, notificationDataManager);


        mNotificationView = mStatusBarWindow.findViewById(R.id.notification_view);
        mNotificationView = mStatusBarWindow.findViewById(R.id.notification_view);
        View glassPane = mStatusBarWindow.findViewById(R.id.glass_pane);
        View glassPane = mStatusBarWindow.findViewById(R.id.glass_pane);
@@ -1093,4 +1102,48 @@ public class CarStatusBar extends StatusBar implements
            super.onLongPress(e);
            super.onLongPress(e);
        }
        }
    }
    }

    /**
     * SystemUi version onf the notification manager that overrides methods such that the
     * notifications end up in the status bar layouts instead of a standalone window.
     */
    private class CarSystemUIHeadsUpNotificationManager extends CarHeadsUpNotificationManager {

        CarSystemUIHeadsUpNotificationManager(Context context,
                NotificationClickHandlerFactory clickHandlerFactory,
                NotificationDataManager notificationDataManager) {
            super(context, clickHandlerFactory, notificationDataManager);
        }

        @Override
        protected View createHeadsUpPanel() {
            // In SystemUi the view is already in the window so just return a reference.
            return mStatusBarWindow.findViewById(R.id.notification_headsup);
        }

        @Override
        protected void addHeadsUpPanelToDisplay() {
            // Set the panel initial state to invisible
            mHeadsUpPanel.setVisibility(View.INVISIBLE);
        }

        @Override
        protected void setHeadsUpVisible() {
            super.setHeadsUpVisible();
            if (mHeadsUpPanel.getVisibility() == View.VISIBLE) {
                mStatusBarWindowController.setHeadsUpShowing(true);
                mStatusBarWindowController.setForceStatusBarVisible(true);
            }
        }

        @Override
        protected void removeNotificationFromPanel(HeadsUpEntry currentHeadsUpNotification) {
            super.removeNotificationFromPanel(currentHeadsUpNotification);
            // If the panel ended up empty and hidden we can remove it from SystemUi
            if (mHeadsUpPanel.getVisibility() != View.VISIBLE) {
                mStatusBarWindowController.setHeadsUpShowing(false);
                mStatusBarWindowController.setForceStatusBarVisible(false);
            }
        }
    }
}
}