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

Commit 9c387a5c authored by Jason Monk's avatar Jason Monk Committed by Android (Google) Code Review
Browse files

Merge changes I9c2ab16b,I6ac1fd46,I687412fc,I943f3098

* changes:
  Add link to dagger user guide
  Make QSTileImpl a LifecycleOwner and make use of it
  Remove Dependency.get usages from QS tiles
  Switch QS tile creation to use injection
parents ecb117eb 55fd968a
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6,6 +6,8 @@ to create dependencies without reflection*

Go read about Dagger 2.

 - [User's guide](https://google.github.io/dagger/users-guide)

TODO: Add some links.

## State of the world
+7 −0
Original line number Diff line number Diff line
@@ -22,6 +22,8 @@ import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.VolumeDialogController;
import com.android.systemui.power.PowerNotificationWarnings;
import com.android.systemui.power.PowerUI;
import com.android.systemui.qs.QSHost;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.statusbar.NotificationRemoteInputManager;
import com.android.systemui.statusbar.phone.DarkIconDispatcherImpl;
import com.android.systemui.statusbar.phone.ManagedProfileController;
@@ -224,4 +226,9 @@ public abstract class DependencyBinder {
     */
    @Binds
    public abstract PowerUI.WarningsUI provideWarningsUi(PowerNotificationWarnings controllerImpl);

    /**
     */
    @Binds
    public abstract QSHost provideQsHost(QSTileHost controllerImpl);
}
+0 −7
Original line number Diff line number Diff line
@@ -34,7 +34,6 @@ import com.android.systemui.fragments.FragmentService;
import com.android.systemui.keyguard.DismissCallbackRegistry;
import com.android.systemui.power.EnhancedEstimates;
import com.android.systemui.power.EnhancedEstimatesImpl;
import com.android.systemui.qs.QSTileHost;
import com.android.systemui.statusbar.KeyguardIndicationController;
import com.android.systemui.statusbar.NotificationListener;
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -52,7 +51,6 @@ import com.android.systemui.statusbar.phone.NotificationIconAreaController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.ScrimState;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.statusbar.policy.DeviceProvisionedController;
import com.android.systemui.util.InjectionInflationController;
@@ -145,11 +143,6 @@ public class SystemUIFactory {
        return new KeyguardIndicationController(context, indicationArea, lockIcon);
    }

    public QSTileHost createQSTileHost(Context context, StatusBar statusBar,
            StatusBarIconController iconController) {
        return new QSTileHost(context, statusBar, iconController);
    }

    public VolumeDialogComponent createVolumeDialogComponent(SystemUI systemUi, Context context) {
        return new VolumeDialogComponent(systemUi, context);
    }
+5 −1
Original line number Diff line number Diff line
@@ -79,15 +79,18 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca

    private final RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler;
    private final InjectionInflationController mInjectionInflater;
    private final QSTileHost mHost;

    @Inject
    public QSFragment(RemoteInputQuickSettingsDisabler remoteInputQsDisabler,
            InjectionInflationController injectionInflater,
            Context context) {
            Context context,
            QSTileHost qsTileHost) {
        mRemoteInputQuickSettingsDisabler = remoteInputQsDisabler;
        mInjectionInflater = injectionInflater;
        SysUiServiceProvider.getComponent(context, CommandQueue.class)
                .observe(getLifecycle(), this);
        mHost = qsTileHost;
    }

    @Override
@@ -122,6 +125,7 @@ public class QSFragment extends LifecycleFragment implements QS, CommandQueue.Ca
                mQSPanel.getTileLayout().restoreInstanceState(savedInstanceState);
            }
        }
        setHost(mHost);
    }

    @Override
+29 −6
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import android.util.Log;

import com.android.systemui.Dependency;
import com.android.systemui.R;
import com.android.systemui.SysUiServiceProvider;
import com.android.systemui.plugins.PluginListener;
import com.android.systemui.plugins.qs.QSFactory;
import com.android.systemui.plugins.qs.QSTile;
@@ -52,7 +53,12 @@ import java.util.LinkedHashMap;
import java.util.List;
import java.util.function.Predicate;

import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;

/** Platform implementation of the quick settings tile host **/
@Singleton
public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    private static final String TAG = "QSTileHost";
    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
@@ -60,7 +66,6 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    public static final String TILES_SETTING = Secure.QS_TILES;

    private final Context mContext;
    private final StatusBar mStatusBar;
    private final LinkedHashMap<String, QSTile> mTiles = new LinkedHashMap<>();
    protected final ArrayList<String> mTileSpecs = new ArrayList<>();
    private final TileServices mServices;
@@ -70,19 +75,28 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {
    private final StatusBarIconController mIconController;
    private final ArrayList<QSFactory> mQsFactories = new ArrayList<>();
    private int mCurrentUser;
    private StatusBar mStatusBar;

    public QSTileHost(Context context, StatusBar statusBar,
            StatusBarIconController iconController) {
    @Inject
    public QSTileHost(Context context,
            StatusBarIconController iconController,
            QSFactoryImpl defaultFactory,
            @Named(Dependency.MAIN_HANDLER_NAME) Handler mainHandler) {
        mIconController = iconController;
        mContext = context;
        mStatusBar = statusBar;

        mServices = new TileServices(this, Dependency.get(Dependency.BG_LOOPER));

        mQsFactories.add(new QSFactoryImpl(this));
        defaultFactory.setHost(this);
        mQsFactories.add(defaultFactory);
        Dependency.get(PluginManager.class).addPluginListener(this, QSFactory.class, true);

        mainHandler.post(() -> {
            // This is technically a hack to avoid circular dependency of
            // QSTileHost -> XXXTile -> QSTileHost. Posting ensures creation
            // finishes before creating any tiles.
            Dependency.get(TunerService.class).addTunable(this, TILES_SETTING);
        });
        // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
        mAutoTiles = new AutoTileManager(context, this);
    }
@@ -140,16 +154,25 @@ public class QSTileHost implements QSHost, Tunable, PluginListener<QSFactory> {

    @Override
    public void collapsePanels() {
        if (mStatusBar == null) {
            mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
        }
        mStatusBar.postAnimateCollapsePanels();
    }

    @Override
    public void forceCollapsePanels() {
        if (mStatusBar == null) {
            mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
        }
        mStatusBar.postAnimateForceCollapsePanels();
    }

    @Override
    public void openPanels() {
        if (mStatusBar == null) {
            mStatusBar = SysUiServiceProvider.getComponent(mContext, StatusBar.class);
        }
        mStatusBar.postAnimateOpenPanels();
    }

Loading