[Central Surfaces] Make the shade header view a singleton.

Bug: 277762009
Test: compiles
Test: shade header shows up correctly
Test: atest ShadeHeaderControllerTest
Change-Id: I3c94c96388db279574f43f52426e72e682f3ccb9
This commit is contained in:
Caitlin Shkuratov
2023-04-25 14:19:58 +00:00
parent 7229904e7c
commit 1a9b9d7abb
3 changed files with 21 additions and 16 deletions

View File

@@ -52,6 +52,7 @@ import com.android.systemui.shade.ShadeHeaderController.Companion.LARGE_SCREEN_H
import com.android.systemui.shade.ShadeHeaderController.Companion.LARGE_SCREEN_HEADER_TRANSITION_ID
import com.android.systemui.shade.ShadeHeaderController.Companion.QQS_HEADER_CONSTRAINT
import com.android.systemui.shade.ShadeHeaderController.Companion.QS_HEADER_CONSTRAINT
import com.android.systemui.shade.ShadeModule.Companion.SHADE_HEADER
import com.android.systemui.shade.carrier.ShadeCarrierGroup
import com.android.systemui.shade.carrier.ShadeCarrierGroupController
import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider
@@ -59,7 +60,6 @@ import com.android.systemui.statusbar.phone.StatusBarIconController
import com.android.systemui.statusbar.phone.StatusBarLocation
import com.android.systemui.statusbar.phone.StatusIconContainer
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope
import com.android.systemui.statusbar.phone.dagger.StatusBarViewModule.SHADE_HEADER
import com.android.systemui.statusbar.policy.Clock
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.NextAlarmController

View File

@@ -17,6 +17,8 @@
package com.android.systemui.shade
import android.view.LayoutInflater
import android.view.ViewStub
import androidx.constraintlayout.motion.widget.MotionLayout
import com.android.keyguard.LockIconView
import com.android.systemui.CoreStartable
import com.android.systemui.R
@@ -31,6 +33,7 @@ import dagger.Module
import dagger.Provides
import dagger.multibindings.ClassKey
import dagger.multibindings.IntoMap
import javax.inject.Named
/** Module for classes related to the notification shade. */
@Module
@@ -42,6 +45,8 @@ abstract class ShadeModule {
abstract fun bindAuthRippleController(controller: AuthRippleController): CoreStartable
companion object {
const val SHADE_HEADER = "large_screen_shade_header"
@Provides
@SysUISingleton
// TODO(b/277762009): Do something similar to
@@ -109,5 +114,18 @@ abstract class ShadeModule {
): TapAgainView {
return notificationPanelView.findViewById(R.id.shade_falsing_tap_again)
}
// TODO(b/277762009): Only allow this view's controller to inject the view. See above.
@Provides
@SysUISingleton
@Named(SHADE_HEADER)
fun providesShadeHeaderView(
notificationShadeWindowView: NotificationShadeWindowView,
): MotionLayout {
val stub = notificationShadeWindowView.findViewById<ViewStub>(R.id.qs_header_stub)
val layoutId = R.layout.combined_qs_header
stub.layoutResource = layoutId
return stub.inflate() as MotionLayout
}
}
}

View File

@@ -16,10 +16,11 @@
package com.android.systemui.statusbar.phone.dagger;
import static com.android.systemui.shade.ShadeModule.SHADE_HEADER;
import android.content.ContentResolver;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.ViewStub;
import androidx.constraintlayout.motion.widget.MotionLayout;
@@ -90,7 +91,6 @@ import javax.inject.Provider;
})
public abstract class StatusBarViewModule {
public static final String SHADE_HEADER = "large_screen_shade_header";
public static final String STATUS_BAR_FRAGMENT = "status_bar_fragment";
/** */
@@ -136,19 +136,6 @@ public abstract class StatusBarViewModule {
abstract ShadeViewController bindsShadeViewController(
NotificationPanelViewController notificationPanelViewController);
@Provides
@Named(SHADE_HEADER)
@CentralSurfacesComponent.CentralSurfacesScope
public static MotionLayout getLargeScreenShadeHeaderBarView(
NotificationShadeWindowView notificationShadeWindowView,
FeatureFlags featureFlags) {
ViewStub stub = notificationShadeWindowView.findViewById(R.id.qs_header_stub);
int layoutId = R.layout.combined_qs_header;
stub.setLayoutResource(layoutId);
MotionLayout v = (MotionLayout) stub.inflate();
return v;
}
/** */
@Provides
@CentralSurfacesComponent.CentralSurfacesScope