blob: 3656ed116b3292bd05636b0d3152106a6d1fa317 [file] [log] [blame]
/*
* Copyright (C) 2021 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.systemui.statusbar.phone.fragment.dagger;
import com.android.systemui.battery.BatteryMeterViewController;
import com.android.systemui.dagger.qualifiers.RootView;
import com.android.systemui.statusbar.phone.HeadsUpAppearanceController;
import com.android.systemui.statusbar.phone.PhoneStatusBarView;
import com.android.systemui.statusbar.phone.PhoneStatusBarViewController;
import com.android.systemui.statusbar.phone.fragment.CollapsedStatusBarFragment;
import dagger.BindsInstance;
import dagger.Subcomponent;
/**
* A subcomponent that gets re-created each time we create a new {@link CollapsedStatusBarFragment}.
*
* This component will also re-create all classes that depend on {@link CollapsedStatusBarFragment}
* and friends. Specifically, the fragment creates a new {@link PhoneStatusBarView} and multiple
* controllers need access to that view, so those controllers will be re-created whenever the
* fragment is recreated.
*
* Note that this is completely separate from
* {@link com.android.systemui.statusbar.phone.dagger.StatusBarComponent}. This component gets
* re-created on each new fragment creation, whereas
* {@link com.android.systemui.statusbar.phone.dagger.StatusBarComponent} is only created once in
* {@link com.android.systemui.statusbar.phone.StatusBar} and never re-created.
*/
@Subcomponent(modules = {StatusBarFragmentModule.class})
@StatusBarFragmentScope
public interface StatusBarFragmentComponent {
/** Simple factory. */
@Subcomponent.Factory
interface Factory {
StatusBarFragmentComponent create(
@BindsInstance CollapsedStatusBarFragment collapsedStatusBarFragment);
}
/**
* Initialize anything extra for the component. Must be called after the component is created.
*/
default void init() {
// No one accesses this controller, so we need to make sure we reference it here so it does
// get initialized.
getBatteryMeterViewController().init();
getHeadsUpAppearanceController().init();
getPhoneStatusBarViewController().init();
}
/** */
@StatusBarFragmentScope
BatteryMeterViewController getBatteryMeterViewController();
/** */
@StatusBarFragmentScope
@RootView
PhoneStatusBarView getPhoneStatusBarView();
/** */
@StatusBarFragmentScope
PhoneStatusBarViewController getPhoneStatusBarViewController();
/** */
@StatusBarFragmentScope
HeadsUpAppearanceController getHeadsUpAppearanceController();
}