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

Commit 28e56025 authored by Anton Potapov's avatar Anton Potapov Committed by Android (Google) Code Review
Browse files

Merge "Add adapter to support new ViewModel" into main

parents 891a21c5 5c291f7e
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -48,6 +48,7 @@ import com.android.systemui.qs.nano.QsTileState;
import com.android.systemui.qs.pipeline.data.repository.CustomTileAddedRepository;
import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor;
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository;
import com.android.systemui.qs.tiles.di.NewQSTileFactory;
import com.android.systemui.settings.UserFileManager;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.shade.ShadeController;
@@ -56,6 +57,8 @@ import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.util.settings.SecureSettings;

import dagger.Lazy;

import org.jetbrains.annotations.NotNull;

import java.io.PrintWriter;
@@ -121,6 +124,7 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P

    @Inject
    public QSTileHost(Context context,
            Lazy<NewQSTileFactory> newQsTileFactoryProvider,
            QSFactory defaultFactory,
            @Main Executor mainExecutor,
            PluginManager pluginManager,
@@ -147,6 +151,9 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P

        mShadeController = shadeController;

        if (featureFlags.getPipelineTilesEnabled()) {
            mQsFactories.add(newQsTileFactoryProvider.get());
        }
        mQsFactories.add(defaultFactory);
        pluginManager.addPluginListener(this, QSFactory.class, true);
        mUserTracker = userTracker;
@@ -326,7 +333,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory>, P
                try {
                    tile = createTile(tileSpec);
                    if (tile != null) {
                        tile.setTileSpec(tileSpec);
                        if (tile.isAvailable()) {
                            newTiles.put(tileSpec, tile);
                            mQSLogger.logTileAdded(tileSpec);
+0 −2
Original line number Diff line number Diff line
@@ -130,11 +130,9 @@ public class TileQueryHelper {
            if (tile == null) {
                continue;
            } else if (!tile.isAvailable()) {
                tile.setTileSpec(spec);
                tile.destroy();
                continue;
            }
            tile.setTileSpec(spec);
            tilesToAdd.add(tile);
        }

+10 −4
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@ import com.android.systemui.qs.ReduceBrightColorsController;
import com.android.systemui.qs.external.QSExternalModule;
import com.android.systemui.qs.pipeline.dagger.QSPipelineModule;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.qs.tiles.viewmodel.QSTileViewModel;
import com.android.systemui.statusbar.phone.AutoTileManager;
import com.android.systemui.statusbar.phone.ManagedProfileController;
import com.android.systemui.statusbar.policy.CastController;
@@ -41,14 +42,14 @@ import com.android.systemui.statusbar.policy.SafetyController;
import com.android.systemui.statusbar.policy.WalletController;
import com.android.systemui.util.settings.SecureSettings;

import java.util.Map;

import javax.inject.Named;

import dagger.Module;
import dagger.Provides;
import dagger.multibindings.Multibinds;

import java.util.Map;

import javax.inject.Named;

/**
 * Module for QS dependencies
 */
@@ -68,6 +69,11 @@ public interface QSModule {
    @Multibinds
    Map<String, QSTileImpl<?>> tileMap();

    /** A map of internal QS tile ViewModels. Ensures that this can be injected even if
     * it is empty */
    @Multibinds
    Map<String, QSTileViewModel> tileViewModelMap();

    @Provides
    @SysUISingleton
    static AutoTileManager provideAutoTileManager(
+13 −3
Original line number Diff line number Diff line
@@ -41,10 +41,12 @@ import com.android.systemui.qs.pipeline.domain.model.TileModel
import com.android.systemui.qs.pipeline.shared.QSPipelineFlagsRepository
import com.android.systemui.qs.pipeline.shared.TileSpec
import com.android.systemui.qs.pipeline.shared.logging.QSPipelineLogger
import com.android.systemui.qs.tiles.di.NewQSTileFactory
import com.android.systemui.qs.toProto
import com.android.systemui.settings.UserTracker
import com.android.systemui.user.data.repository.UserRepository
import com.android.systemui.util.kotlin.pairwise
import dagger.Lazy
import java.io.PrintWriter
import javax.inject.Inject
import kotlinx.coroutines.CoroutineDispatcher
@@ -131,6 +133,7 @@ constructor(
    private val installedTilesComponentRepository: InstalledTilesComponentRepository,
    private val userRepository: UserRepository,
    private val customTileStatePersister: CustomTileStatePersister,
    private val newQSTileFactory: Lazy<NewQSTileFactory>,
    private val tileFactory: QSFactory,
    private val customTileAddedRepository: CustomTileAddedRepository,
    private val tileLifecycleManagerFactory: TileLifecycleManager.Factory,
@@ -139,7 +142,7 @@ constructor(
    @Background private val backgroundDispatcher: CoroutineDispatcher,
    @Application private val scope: CoroutineScope,
    private val logger: QSPipelineLogger,
    featureFlags: QSPipelineFlagsRepository,
    private val featureFlags: QSPipelineFlagsRepository,
) : CurrentTilesInteractor {

    private val _currentSpecsAndTiles: MutableStateFlow<List<TileModel>> =
@@ -333,12 +336,19 @@ constructor(
    }

    private suspend fun createTile(spec: TileSpec): QSTile? {
        val tile = withContext(mainDispatcher) { tileFactory.createTile(spec.spec) }
        val tile =
            withContext(mainDispatcher) {
                if (featureFlags.pipelineTilesEnabled) {
                    newQSTileFactory.get().createTile(spec.spec)
                } else {
                    null
                }
                    ?: tileFactory.createTile(spec.spec)
            }
        if (tile == null) {
            logger.logTileNotFoundInFactory(spec)
            return null
        } else {
            tile.tileSpec = spec.spec
            return if (!tile.isAvailable) {
                logger.logTileDestroyed(
                    spec,
+6 −2
Original line number Diff line number Diff line
package com.android.systemui.qs.pipeline.shared

import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.flags.FeatureFlags
import com.android.systemui.flags.FeatureFlagsClassic
import com.android.systemui.flags.Flags
import javax.inject.Inject

@@ -10,7 +10,7 @@ import javax.inject.Inject
class QSPipelineFlagsRepository
@Inject
constructor(
    private val featureFlags: FeatureFlags,
    private val featureFlags: FeatureFlagsClassic,
) {

    /** @see Flags.QS_PIPELINE_NEW_HOST */
@@ -20,4 +20,8 @@ constructor(
    /** @see Flags.QS_PIPELINE_AUTO_ADD */
    val pipelineAutoAddEnabled: Boolean
        get() = pipelineHostEnabled && featureFlags.isEnabled(Flags.QS_PIPELINE_AUTO_ADD)

    /** @see Flags.QS_PIPELINE_NEW_TILES */
    val pipelineTilesEnabled: Boolean
        get() = featureFlags.isEnabled(Flags.QS_PIPELINE_NEW_TILES)
}
Loading