• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.qs.dagger;
18 
19 import static com.android.systemui.util.Utils.useQsMediaPlayer;
20 
21 import android.content.Context;
22 import android.view.LayoutInflater;
23 import android.view.View;
24 
25 import com.android.systemui.R;
26 import com.android.systemui.dagger.qualifiers.RootView;
27 import com.android.systemui.plugins.qs.QS;
28 import com.android.systemui.qs.QSContainerImpl;
29 import com.android.systemui.qs.QSFooter;
30 import com.android.systemui.qs.QSFooterView;
31 import com.android.systemui.qs.QSFooterViewController;
32 import com.android.systemui.qs.QSFragment;
33 import com.android.systemui.qs.QSPanel;
34 import com.android.systemui.qs.QuickQSPanel;
35 import com.android.systemui.qs.QuickStatusBarHeader;
36 import com.android.systemui.qs.carrier.QSCarrierGroupController;
37 import com.android.systemui.qs.customize.QSCustomizer;
38 import com.android.systemui.statusbar.phone.MultiUserSwitch;
39 
40 import javax.inject.Named;
41 
42 import dagger.Binds;
43 import dagger.Module;
44 import dagger.Provides;
45 
46 /**
47  * Dagger Module for {@link QSFragmentComponent}.
48  */
49 @Module
50 public interface QSFragmentModule {
51     String QS_SECURITY_FOOTER_VIEW = "qs_security_footer";
52     String QS_USING_MEDIA_PLAYER = "qs_using_media_player";
53 
54     /**
55      * Provide a context themed using the QS theme
56      */
57     @Provides
58     @QSThemedContext
provideThemedContext(@ootView View view)59     static Context provideThemedContext(@RootView View view) {
60         return view.getContext();
61     }
62 
63     /** */
64     @Provides
65     @QSThemedContext
provideThemedLayoutInflater(@SThemedContext Context context)66     static LayoutInflater provideThemedLayoutInflater(@QSThemedContext Context context) {
67         return LayoutInflater.from(context);
68     }
69 
70     /** */
71     @Provides
72     @RootView
provideRootView(QSFragment qsFragment)73     static View provideRootView(QSFragment qsFragment) {
74         return qsFragment.getView();
75     }
76 
77     /** */
78     @Provides
providesMultiUserSWitch(QSFooterView qsFooterView)79     static MultiUserSwitch providesMultiUserSWitch(QSFooterView qsFooterView) {
80         return qsFooterView.findViewById(R.id.multi_user_switch);
81     }
82 
83     /** */
84     @Provides
provideQSPanel(@ootView View view)85     static QSPanel provideQSPanel(@RootView View view) {
86         return view.findViewById(R.id.quick_settings_panel);
87     }
88 
89     /** */
90     @Provides
providesQSContainerImpl(@ootView View view)91     static QSContainerImpl providesQSContainerImpl(@RootView View view) {
92         return view.findViewById(R.id.quick_settings_container);
93     }
94 
95     /** */
96     @Binds
bindQS(QSFragment qsFragment)97     QS bindQS(QSFragment qsFragment);
98 
99     /** */
100     @Provides
providesQuickStatusBarHeader(@ootView View view)101     static QuickStatusBarHeader providesQuickStatusBarHeader(@RootView View view) {
102         return view.findViewById(R.id.header);
103     }
104 
105     /** */
106     @Provides
providesQuickQSPanel(QuickStatusBarHeader quickStatusBarHeader)107     static QuickQSPanel providesQuickQSPanel(QuickStatusBarHeader quickStatusBarHeader) {
108         return quickStatusBarHeader.findViewById(R.id.quick_qs_panel);
109     }
110 
111     /** */
112     @Provides
providesQSFooterView(@ootView View view)113     static QSFooterView providesQSFooterView(@RootView View view) {
114         return view.findViewById(R.id.qs_footer);
115     }
116 
117     /** */
118     @Provides
119     @QSScope
providesQSFooter(QSFooterViewController qsFooterViewController)120     static QSFooter providesQSFooter(QSFooterViewController qsFooterViewController) {
121         qsFooterViewController.init();
122         return qsFooterViewController;
123     }
124 
125     /** */
126     @Provides
127     @QSScope
providesQSCutomizer(@ootView View view)128     static QSCustomizer providesQSCutomizer(@RootView View view) {
129         return view.findViewById(R.id.qs_customize);
130     }
131 
132     /** */
133     @Provides
134     @QSScope
135     @Named(QS_SECURITY_FOOTER_VIEW)
providesQSSecurityFooterView( @SThemedContext LayoutInflater layoutInflater, QSPanel qsPanel )136     static View providesQSSecurityFooterView(
137             @QSThemedContext LayoutInflater layoutInflater,
138             QSPanel qsPanel
139     ) {
140         return layoutInflater.inflate(R.layout.quick_settings_security_footer, qsPanel, false);
141     }
142 
143     /** */
144     @Provides
145     @Named(QS_USING_MEDIA_PLAYER)
providesQSUsingMediaPlayer(Context context)146     static boolean providesQSUsingMediaPlayer(Context context) {
147         return useQsMediaPlayer(context);
148     }
149 
150     /** */
151     @Binds
provideSlotIndexResolver( QSCarrierGroupController.SubscriptionManagerSlotIndexResolver impl)152     QSCarrierGroupController.SlotIndexResolver provideSlotIndexResolver(
153             QSCarrierGroupController.SubscriptionManagerSlotIndexResolver impl);
154 }