1 /*
2  * Copyright (C) 2020 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.systemui.car.window;
18 
19 import com.android.systemui.car.hvac.HvacPanelOverlayViewMediator;
20 import com.android.systemui.car.keyguard.CarKeyguardViewMediator;
21 import com.android.systemui.car.notification.BottomNotificationPanelViewMediator;
22 import com.android.systemui.car.notification.NotificationPanelViewMediator;
23 import com.android.systemui.car.notification.TopNotificationPanelViewMediator;
24 import com.android.systemui.car.userswitcher.FullscreenUserSwitcherViewMediator;
25 import com.android.systemui.car.userswitcher.UserSwitchTransitionViewMediator;
26 
27 import dagger.Binds;
28 import dagger.Module;
29 import dagger.multibindings.ClassKey;
30 import dagger.multibindings.IntoMap;
31 
32 /**
33  * Dagger injection module for {@link SystemUIOverlayWindowManager}
34  */
35 @Module
36 public abstract class OverlayWindowModule {
37 
38     /** Injects NotificationPanelViewMediator. */
39     @Binds
40     @IntoMap
41     @ClassKey(NotificationPanelViewMediator.class)
bindNotificationPanelViewMediator( NotificationPanelViewMediator notificationPanelViewMediator)42     public abstract OverlayViewMediator bindNotificationPanelViewMediator(
43             NotificationPanelViewMediator notificationPanelViewMediator);
44 
45     /** Injects TopNotificationPanelViewMediator. */
46     @Binds
47     @IntoMap
48     @ClassKey(TopNotificationPanelViewMediator.class)
bindTopNotificationPanelViewMediator( TopNotificationPanelViewMediator topNotificationPanelViewMediator)49     public abstract OverlayViewMediator bindTopNotificationPanelViewMediator(
50             TopNotificationPanelViewMediator topNotificationPanelViewMediator);
51 
52     /** Injects BottomNotificationPanelViewMediator. */
53     @Binds
54     @IntoMap
55     @ClassKey(BottomNotificationPanelViewMediator.class)
bindBottomNotificationPanelViewMediator( BottomNotificationPanelViewMediator bottomNotificationPanelViewMediator)56     public abstract OverlayViewMediator bindBottomNotificationPanelViewMediator(
57             BottomNotificationPanelViewMediator bottomNotificationPanelViewMediator);
58 
59     /** Inject into CarKeyguardViewMediator. */
60     @Binds
61     @IntoMap
62     @ClassKey(CarKeyguardViewMediator.class)
bindCarKeyguardViewMediator( CarKeyguardViewMediator carKeyguardViewMediator)63     public abstract OverlayViewMediator bindCarKeyguardViewMediator(
64             CarKeyguardViewMediator carKeyguardViewMediator);
65 
66     /** Injects FullscreenUserSwitcherViewsMediator. */
67     @Binds
68     @IntoMap
69     @ClassKey(FullscreenUserSwitcherViewMediator.class)
bindFullscreenUserSwitcherViewsMediator( FullscreenUserSwitcherViewMediator overlayViewsMediator)70     public abstract OverlayViewMediator bindFullscreenUserSwitcherViewsMediator(
71             FullscreenUserSwitcherViewMediator overlayViewsMediator);
72 
73     /** Injects CarUserSwitchingDialogMediator. */
74     @Binds
75     @IntoMap
76     @ClassKey(UserSwitchTransitionViewMediator.class)
bindUserSwitchTransitionViewMediator( UserSwitchTransitionViewMediator userSwitchTransitionViewMediator)77     public abstract OverlayViewMediator bindUserSwitchTransitionViewMediator(
78             UserSwitchTransitionViewMediator userSwitchTransitionViewMediator);
79 
80     /** Injects HvacPanelOverlayViewMediator. */
81     @Binds
82     @IntoMap
83     @ClassKey(HvacPanelOverlayViewMediator.class)
bindHvacPanelOverlayViewMediator( HvacPanelOverlayViewMediator overlayViewMediator)84     public abstract OverlayViewMediator bindHvacPanelOverlayViewMediator(
85             HvacPanelOverlayViewMediator overlayViewMediator);
86 }
87