Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 1a9b9d7a authored by Caitlin Shkuratov's avatar Caitlin Shkuratov
Browse files

[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
parent 7229904e
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+18 −0
Original line number Diff line number Diff line
@@ -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
        }
    }
}
+2 −15
Original line number Diff line number Diff line
@@ -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