1 /* 2 * Copyright (C) 2021 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.statusbar.phone.fragment.dagger; 18 19 import android.view.View; 20 21 import com.android.systemui.R; 22 import com.android.systemui.battery.BatteryMeterView; 23 import com.android.systemui.dagger.qualifiers.RootView; 24 import com.android.systemui.statusbar.HeadsUpStatusBarView; 25 import com.android.systemui.statusbar.phone.PhoneStatusBarTransitions; 26 import com.android.systemui.statusbar.phone.PhoneStatusBarView; 27 import com.android.systemui.statusbar.phone.PhoneStatusBarViewController; 28 import com.android.systemui.statusbar.phone.StatusBarBoundsProvider; 29 import com.android.systemui.statusbar.phone.StatusBarLocation; 30 import com.android.systemui.statusbar.phone.SystemBarAttributesListener; 31 import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment; 32 import com.android.systemui.statusbar.phone.userswitcher.StatusBarUserSwitcherContainer; 33 import com.android.systemui.statusbar.policy.Clock; 34 import com.android.systemui.statusbar.window.StatusBarWindowController; 35 36 import dagger.Binds; 37 import dagger.Module; 38 import dagger.Provides; 39 import dagger.multibindings.IntoSet; 40 import dagger.multibindings.Multibinds; 41 42 import java.util.Optional; 43 import java.util.Set; 44 45 import javax.inject.Named; 46 47 /** Dagger module for {@link StatusBarFragmentComponent}. */ 48 @Module 49 public interface StatusBarFragmentModule { 50 51 String LIGHTS_OUT_NOTIF_VIEW = "lights_out_notif_view"; 52 String OPERATOR_NAME_VIEW = "operator_name_view"; 53 String OPERATOR_NAME_FRAME_VIEW = "operator_name_frame_view"; 54 String START_SIDE_CONTENT = "start_side_content"; 55 String END_SIDE_CONTENT = "end_side_content"; 56 57 /** */ 58 @Provides 59 @RootView 60 @StatusBarFragmentScope providePhoneStatusBarView( CollapsedStatusBarFragment collapsedStatusBarFragment)61 static PhoneStatusBarView providePhoneStatusBarView( 62 CollapsedStatusBarFragment collapsedStatusBarFragment) { 63 return (PhoneStatusBarView) collapsedStatusBarFragment.getView(); 64 } 65 66 /** */ 67 @Provides 68 @StatusBarFragmentScope provideBatteryMeterView(@ootView PhoneStatusBarView view)69 static BatteryMeterView provideBatteryMeterView(@RootView PhoneStatusBarView view) { 70 return view.findViewById(R.id.battery); 71 } 72 73 /** */ 74 @Provides 75 @StatusBarFragmentScope getStatusBarLocation()76 static StatusBarLocation getStatusBarLocation() { 77 return StatusBarLocation.HOME; 78 } 79 80 /** */ 81 @Provides 82 @StatusBarFragmentScope 83 @Named(START_SIDE_CONTENT) startSideContent(@ootView PhoneStatusBarView view)84 static View startSideContent(@RootView PhoneStatusBarView view) { 85 return view.findViewById(R.id.status_bar_start_side_content); 86 } 87 88 /** */ 89 @Provides 90 @StatusBarFragmentScope 91 @Named(END_SIDE_CONTENT) endSideContent(@ootView PhoneStatusBarView view)92 static View endSideContent(@RootView PhoneStatusBarView view) { 93 return view.findViewById(R.id.status_bar_end_side_content); 94 } 95 96 /** */ 97 @Provides 98 @StatusBarFragmentScope 99 @Named(LIGHTS_OUT_NOTIF_VIEW) provideLightsOutNotifView(@ootView PhoneStatusBarView view)100 static View provideLightsOutNotifView(@RootView PhoneStatusBarView view) { 101 return view.findViewById(R.id.notification_lights_out); 102 } 103 104 /** */ 105 @Provides 106 @StatusBarFragmentScope 107 @Named(OPERATOR_NAME_VIEW) provideOperatorNameView(@ootView PhoneStatusBarView view)108 static View provideOperatorNameView(@RootView PhoneStatusBarView view) { 109 return view.findViewById(R.id.operator_name); 110 } 111 112 /** */ 113 @Provides 114 @StatusBarFragmentScope 115 @Named(OPERATOR_NAME_FRAME_VIEW) provideOperatorFrameNameView(@ootView PhoneStatusBarView view)116 static Optional<View> provideOperatorFrameNameView(@RootView PhoneStatusBarView view) { 117 return Optional.ofNullable(view.findViewById(R.id.operator_name_frame)); 118 } 119 120 /** */ 121 @Provides 122 @StatusBarFragmentScope provideClock(@ootView PhoneStatusBarView view)123 static Clock provideClock(@RootView PhoneStatusBarView view) { 124 return view.findViewById(R.id.clock); 125 } 126 127 /** */ 128 @Provides 129 @StatusBarFragmentScope provideStatusBarUserSwitcherContainer( @ootView PhoneStatusBarView view)130 static StatusBarUserSwitcherContainer provideStatusBarUserSwitcherContainer( 131 @RootView PhoneStatusBarView view) { 132 return view.findViewById(R.id.user_switcher_container); 133 } 134 135 /** */ 136 @Provides 137 @StatusBarFragmentScope providePhoneStatusBarViewController( PhoneStatusBarViewController.Factory phoneStatusBarViewControllerFactory, @RootView PhoneStatusBarView phoneStatusBarView)138 static PhoneStatusBarViewController providePhoneStatusBarViewController( 139 PhoneStatusBarViewController.Factory phoneStatusBarViewControllerFactory, 140 @RootView PhoneStatusBarView phoneStatusBarView) { 141 return phoneStatusBarViewControllerFactory.create( 142 phoneStatusBarView); 143 } 144 145 /** */ 146 @Provides 147 @StatusBarFragmentScope providePhoneStatusBarTransitions( @ootView PhoneStatusBarView view, StatusBarWindowController statusBarWindowController )148 static PhoneStatusBarTransitions providePhoneStatusBarTransitions( 149 @RootView PhoneStatusBarView view, 150 StatusBarWindowController statusBarWindowController 151 ) { 152 return new PhoneStatusBarTransitions(view, statusBarWindowController.getBackgroundView()); 153 } 154 155 /** */ 156 @Provides 157 @StatusBarFragmentScope providesHeasdUpStatusBarView(@ootView PhoneStatusBarView view)158 static HeadsUpStatusBarView providesHeasdUpStatusBarView(@RootView PhoneStatusBarView view) { 159 return view.findViewById(R.id.heads_up_status_bar_view); 160 } 161 162 /** */ 163 @Multibinds boundsChangeListeners()164 Set<StatusBarBoundsProvider.BoundsChangeListener> boundsChangeListeners(); 165 166 /** */ 167 @Binds 168 @IntoSet sysBarAttrsListenerAsBoundsListener( SystemBarAttributesListener systemBarAttributesListener)169 StatusBarBoundsProvider.BoundsChangeListener sysBarAttrsListenerAsBoundsListener( 170 SystemBarAttributesListener systemBarAttributesListener); 171 } 172