Merge "Move HUN car notifications into SystemUI" into qt-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
949266a388
@@ -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_height="match_parent"
|
||||||
|
android:layout_marginBottom="@dimen/navigation_bar_height"
|
||||||
|
android:visibility="invisible"/>
|
||||||
|
|
||||||
|
<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:visibility="invisible"/>
|
android:visibility="invisible"/>
|
||||||
|
|
||||||
<include layout="@layout/notification_center_activity"
|
<include layout="@layout/status_bar_expanded"
|
||||||
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"
|
|
||||||
/>
|
|
||||||
|
|
||||||
<com.android.systemui.statusbar.ScrimView
|
<com.android.systemui.statusbar.ScrimView
|
||||||
android:id="@+id/scrim_in_front"
|
android:id="@+id/scrim_in_front"
|
||||||
|
|||||||
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user