Switch QS tile creation to use injection
This will make it easy to remove dependency usages from tiles. Test: existing tests Change-Id: I943f3098c4e7cf2feaa6ebe190f3ddec557c3850
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Dependency.get(TunerService.class).addTunable(this, TILES_SETTING);
|
||||
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();
|
||||
}
|
||||
|
||||
|
||||
@@ -47,12 +47,79 @@ import com.android.systemui.qs.tiles.WifiTile;
|
||||
import com.android.systemui.qs.tiles.WorkModeTile;
|
||||
import com.android.systemui.util.leak.GarbageMonitor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.inject.Provider;
|
||||
import javax.inject.Singleton;
|
||||
|
||||
@Singleton
|
||||
public class QSFactoryImpl implements QSFactory {
|
||||
|
||||
private static final String TAG = "QSFactory";
|
||||
private final QSTileHost mHost;
|
||||
|
||||
public QSFactoryImpl(QSTileHost host) {
|
||||
private final Provider<WifiTile> mWifiTileProvider;
|
||||
private final Provider<BluetoothTile> mBluetoothTileProvider;
|
||||
private final Provider<CellularTile> mCellularTileProvider;
|
||||
private final Provider<DndTile> mDndTileProvider;
|
||||
private final Provider<ColorInversionTile> mColorInversionTileProvider;
|
||||
private final Provider<AirplaneModeTile> mAirplaneModeTileProvider;
|
||||
private final Provider<WorkModeTile> mWorkModeTileProvider;
|
||||
private final Provider<RotationLockTile> mRotationLockTileProvider;
|
||||
private final Provider<FlashlightTile> mFlashlightTileProvider;
|
||||
private final Provider<LocationTile> mLocationTileProvider;
|
||||
private final Provider<CastTile> mCastTileProvider;
|
||||
private final Provider<HotspotTile> mHotspotTileProvider;
|
||||
private final Provider<UserTile> mUserTileProvider;
|
||||
private final Provider<BatterySaverTile> mBatterySaverTileProvider;
|
||||
private final Provider<DataSaverTile> mDataSaverTileProvider;
|
||||
private final Provider<NightDisplayTile> mNightDisplayTileProvider;
|
||||
private final Provider<NfcTile> mNfcTileProvider;
|
||||
private final Provider<SensorPrivacyTile> mSensorPrivacyTileProvider;
|
||||
private final Provider<GarbageMonitor.MemoryTile> mMemoryTileProvider;
|
||||
|
||||
private QSTileHost mHost;
|
||||
|
||||
@Inject
|
||||
public QSFactoryImpl(Provider<WifiTile> wifiTileProvider,
|
||||
Provider<BluetoothTile> bluetoothTileProvider,
|
||||
Provider<CellularTile> cellularTileProvider,
|
||||
Provider<DndTile> dndTileProvider,
|
||||
Provider<ColorInversionTile> colorInversionTileProvider,
|
||||
Provider<AirplaneModeTile> airplaneModeTileProvider,
|
||||
Provider<WorkModeTile> workModeTileProvider,
|
||||
Provider<RotationLockTile> rotationLockTileProvider,
|
||||
Provider<FlashlightTile> flashlightTileProvider,
|
||||
Provider<LocationTile> locationTileProvider,
|
||||
Provider<CastTile> castTileProvider,
|
||||
Provider<HotspotTile> hotspotTileProvider,
|
||||
Provider<UserTile> userTileProvider,
|
||||
Provider<BatterySaverTile> batterySaverTileProvider,
|
||||
Provider<DataSaverTile> dataSaverTileProvider,
|
||||
Provider<NightDisplayTile> nightDisplayTileProvider,
|
||||
Provider<NfcTile> nfcTileProvider,
|
||||
Provider<SensorPrivacyTile> sensorPrivacyTileProvider,
|
||||
Provider<GarbageMonitor.MemoryTile> memoryTileProvider) {
|
||||
mWifiTileProvider = wifiTileProvider;
|
||||
mBluetoothTileProvider = bluetoothTileProvider;
|
||||
mCellularTileProvider = cellularTileProvider;
|
||||
mDndTileProvider = dndTileProvider;
|
||||
mColorInversionTileProvider = colorInversionTileProvider;
|
||||
mAirplaneModeTileProvider = airplaneModeTileProvider;
|
||||
mWorkModeTileProvider = workModeTileProvider;
|
||||
mRotationLockTileProvider = rotationLockTileProvider;
|
||||
mFlashlightTileProvider = flashlightTileProvider;
|
||||
mLocationTileProvider = locationTileProvider;
|
||||
mCastTileProvider = castTileProvider;
|
||||
mHotspotTileProvider = hotspotTileProvider;
|
||||
mUserTileProvider = userTileProvider;
|
||||
mBatterySaverTileProvider = batterySaverTileProvider;
|
||||
mDataSaverTileProvider = dataSaverTileProvider;
|
||||
mNightDisplayTileProvider = nightDisplayTileProvider;
|
||||
mNfcTileProvider = nfcTileProvider;
|
||||
mSensorPrivacyTileProvider = sensorPrivacyTileProvider;
|
||||
mMemoryTileProvider = memoryTileProvider;
|
||||
}
|
||||
|
||||
public void setHost(QSTileHost host) {
|
||||
mHost = host;
|
||||
}
|
||||
|
||||
@@ -68,41 +135,41 @@ public class QSFactoryImpl implements QSFactory {
|
||||
// Stock tiles.
|
||||
switch (tileSpec) {
|
||||
case "wifi":
|
||||
return new WifiTile(mHost);
|
||||
return mWifiTileProvider.get();
|
||||
case "bt":
|
||||
return new BluetoothTile(mHost);
|
||||
return mBluetoothTileProvider.get();
|
||||
case "cell":
|
||||
return new CellularTile(mHost);
|
||||
return mCellularTileProvider.get();
|
||||
case "dnd":
|
||||
return new DndTile(mHost);
|
||||
return mDndTileProvider.get();
|
||||
case "inversion":
|
||||
return new ColorInversionTile(mHost);
|
||||
return mColorInversionTileProvider.get();
|
||||
case "airplane":
|
||||
return new AirplaneModeTile(mHost);
|
||||
return mAirplaneModeTileProvider.get();
|
||||
case "work":
|
||||
return new WorkModeTile(mHost);
|
||||
return mWorkModeTileProvider.get();
|
||||
case "rotation":
|
||||
return new RotationLockTile(mHost);
|
||||
return mRotationLockTileProvider.get();
|
||||
case "flashlight":
|
||||
return new FlashlightTile(mHost);
|
||||
return mFlashlightTileProvider.get();
|
||||
case "location":
|
||||
return new LocationTile(mHost);
|
||||
return mLocationTileProvider.get();
|
||||
case "cast":
|
||||
return new CastTile(mHost);
|
||||
return mCastTileProvider.get();
|
||||
case "hotspot":
|
||||
return new HotspotTile(mHost);
|
||||
return mHotspotTileProvider.get();
|
||||
case "user":
|
||||
return new UserTile(mHost);
|
||||
return mUserTileProvider.get();
|
||||
case "battery":
|
||||
return new BatterySaverTile(mHost);
|
||||
return mBatterySaverTileProvider.get();
|
||||
case "saver":
|
||||
return new DataSaverTile(mHost);
|
||||
return mDataSaverTileProvider.get();
|
||||
case "night":
|
||||
return new NightDisplayTile(mHost);
|
||||
return mNightDisplayTileProvider.get();
|
||||
case "nfc":
|
||||
return new NfcTile(mHost);
|
||||
return mNfcTileProvider.get();
|
||||
case "sensorprivacy":
|
||||
return new SensorPrivacyTile(mHost);
|
||||
return mSensorPrivacyTileProvider.get();
|
||||
}
|
||||
|
||||
// Intent tiles.
|
||||
@@ -112,7 +179,7 @@ public class QSFactoryImpl implements QSFactory {
|
||||
// Debug tiles.
|
||||
if (Build.IS_DEBUGGABLE) {
|
||||
if (tileSpec.equals(GarbageMonitor.MemoryTile.TILE_SPEC)) {
|
||||
return new GarbageMonitor.MemoryTile(mHost);
|
||||
return mMemoryTileProvider.get();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ import com.android.systemui.qs.GlobalSetting;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Airplane mode **/
|
||||
public class AirplaneModeTile extends QSTileImpl<BooleanState> {
|
||||
private final Icon mIcon =
|
||||
@@ -48,6 +50,7 @@ public class AirplaneModeTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
private boolean mListening;
|
||||
|
||||
@Inject
|
||||
public AirplaneModeTile(QSHost host) {
|
||||
super(host);
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.BatteryController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class BatterySaverTile extends QSTileImpl<BooleanState> implements
|
||||
BatteryController.BatteryStateChangeCallback {
|
||||
|
||||
@@ -40,6 +42,7 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
|
||||
private boolean mCharging;
|
||||
private boolean mPluggedIn;
|
||||
|
||||
@Inject
|
||||
public BatterySaverTile(QSHost host) {
|
||||
super(host);
|
||||
mBatteryController = Dependency.get(BatteryController.class);
|
||||
|
||||
@@ -51,6 +51,8 @@ import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Bluetooth **/
|
||||
public class BluetoothTile extends QSTileImpl<BooleanState> {
|
||||
private static final Intent BLUETOOTH_SETTINGS = new Intent(Settings.ACTION_BLUETOOTH_SETTINGS);
|
||||
@@ -59,6 +61,7 @@ public class BluetoothTile extends QSTileImpl<BooleanState> {
|
||||
private final BluetoothDetailAdapter mDetailAdapter;
|
||||
private final ActivityStarter mActivityStarter;
|
||||
|
||||
@Inject
|
||||
public BluetoothTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(BluetoothController.class);
|
||||
|
||||
@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Set;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Cast **/
|
||||
public class CastTile extends QSTileImpl<BooleanState> {
|
||||
private static final Intent CAST_SETTINGS =
|
||||
@@ -65,6 +67,7 @@ public class CastTile extends QSTileImpl<BooleanState> {
|
||||
private Dialog mDialog;
|
||||
private boolean mWifiConnected;
|
||||
|
||||
@Inject
|
||||
public CastTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(CastController.class);
|
||||
|
||||
@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.NetworkController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.IconState;
|
||||
import com.android.systemui.statusbar.policy.NetworkController.SignalCallback;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Cellular **/
|
||||
public class CellularTile extends QSTileImpl<SignalState> {
|
||||
private static final String ENABLE_SETTINGS_DATA_PLAN = "enable.settings.data.plan";
|
||||
@@ -63,6 +65,7 @@ public class CellularTile extends QSTileImpl<SignalState> {
|
||||
private final ActivityStarter mActivityStarter;
|
||||
private final KeyguardMonitor mKeyguardMonitor;
|
||||
|
||||
@Inject
|
||||
public CellularTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(NetworkController.class);
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.SecureSetting;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Invert colors **/
|
||||
public class ColorInversionTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
@@ -38,6 +40,7 @@ public class ColorInversionTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
private boolean mListening;
|
||||
|
||||
@Inject
|
||||
public ColorInversionTile(QSHost host) {
|
||||
super(host);
|
||||
|
||||
|
||||
@@ -30,11 +30,14 @@ import com.android.systemui.statusbar.phone.SystemUIDialog;
|
||||
import com.android.systemui.statusbar.policy.DataSaverController;
|
||||
import com.android.systemui.statusbar.policy.NetworkController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class DataSaverTile extends QSTileImpl<BooleanState> implements
|
||||
DataSaverController.Listener{
|
||||
|
||||
private final DataSaverController mDataSaverController;
|
||||
|
||||
@Inject
|
||||
public DataSaverTile(QSHost host) {
|
||||
super(host);
|
||||
mDataSaverController = Dependency.get(NetworkController.class).getDataSaverController();
|
||||
|
||||
@@ -62,6 +62,8 @@ import com.android.systemui.statusbar.phone.SystemUIDialog;
|
||||
import com.android.systemui.statusbar.policy.ZenModeController;
|
||||
import com.android.systemui.volume.ZenModePanel;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Do not disturb **/
|
||||
public class DndTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
@@ -81,6 +83,7 @@ public class DndTile extends QSTileImpl<BooleanState> {
|
||||
private boolean mShowingDetail;
|
||||
private boolean mReceiverRegistered;
|
||||
|
||||
@Inject
|
||||
public DndTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(ZenModeController.class);
|
||||
|
||||
@@ -30,6 +30,8 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.FlashlightController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Control flashlight **/
|
||||
public class FlashlightTile extends QSTileImpl<BooleanState> implements
|
||||
FlashlightController.FlashlightListener {
|
||||
@@ -37,6 +39,7 @@ public class FlashlightTile extends QSTileImpl<BooleanState> implements
|
||||
private final Icon mIcon = ResourceIcon.get(R.drawable.ic_signal_flashlight);
|
||||
private final FlashlightController mFlashlightController;
|
||||
|
||||
@Inject
|
||||
public FlashlightTile(QSHost host) {
|
||||
super(host);
|
||||
mFlashlightController = Dependency.get(FlashlightController.class);
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.DataSaverController;
|
||||
import com.android.systemui.statusbar.policy.HotspotController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Hotspot **/
|
||||
public class HotspotTile extends QSTileImpl<AirplaneBooleanState> {
|
||||
private static final Intent TETHER_SETTINGS = new Intent().setComponent(new ComponentName(
|
||||
@@ -48,6 +50,7 @@ public class HotspotTile extends QSTileImpl<AirplaneBooleanState> {
|
||||
private final GlobalSetting mAirplaneMode;
|
||||
private boolean mListening;
|
||||
|
||||
@Inject
|
||||
public HotspotTile(QSHost host) {
|
||||
super(host);
|
||||
mHotspotController = Dependency.get(HotspotController.class);
|
||||
|
||||
@@ -34,6 +34,8 @@ import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
import com.android.systemui.statusbar.policy.LocationController;
|
||||
import com.android.systemui.statusbar.policy.LocationController.LocationChangeCallback;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Location **/
|
||||
public class LocationTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
@@ -43,6 +45,7 @@ public class LocationTile extends QSTileImpl<BooleanState> {
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
private final Callback mCallback = new Callback();
|
||||
|
||||
@Inject
|
||||
public LocationTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(LocationController.class);
|
||||
|
||||
@@ -33,6 +33,8 @@ import com.android.systemui.plugins.qs.QSTile.BooleanState;
|
||||
import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Enable/Disable NFC **/
|
||||
public class NfcTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
@@ -40,6 +42,7 @@ public class NfcTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
private boolean mListening;
|
||||
|
||||
@Inject
|
||||
public NfcTile(QSHost host) {
|
||||
super(host);
|
||||
}
|
||||
|
||||
@@ -44,6 +44,8 @@ import java.time.format.DateTimeFormatter;
|
||||
import java.util.Calendar;
|
||||
import java.util.TimeZone;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class NightDisplayTile extends QSTileImpl<BooleanState>
|
||||
implements ColorDisplayController.Callback {
|
||||
|
||||
@@ -58,6 +60,7 @@ public class NightDisplayTile extends QSTileImpl<BooleanState>
|
||||
private ColorDisplayController mController;
|
||||
private boolean mIsListening;
|
||||
|
||||
@Inject
|
||||
public NightDisplayTile(QSHost host) {
|
||||
super(host);
|
||||
mController = new ColorDisplayController(mContext, ActivityManager.getCurrentUser());
|
||||
|
||||
@@ -32,12 +32,15 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.RotationLockController;
|
||||
import com.android.systemui.statusbar.policy.RotationLockController.RotationLockControllerCallback;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Rotation **/
|
||||
public class RotationLockTile extends QSTileImpl<BooleanState> {
|
||||
|
||||
private final Icon mIcon = ResourceIcon.get(R.drawable.ic_qs_auto_rotate);
|
||||
private final RotationLockController mController;
|
||||
|
||||
@Inject
|
||||
public RotationLockTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(RotationLockController.class);
|
||||
|
||||
@@ -31,6 +31,8 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.KeyguardMonitor;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: SensorPrivacy mode **/
|
||||
public class SensorPrivacyTile extends QSTileImpl<BooleanState> implements
|
||||
SensorPrivacyManager.OnSensorPrivacyChangedListener {
|
||||
@@ -40,6 +42,7 @@ public class SensorPrivacyTile extends QSTileImpl<BooleanState> implements
|
||||
private final KeyguardMonitor mKeyguard;
|
||||
private final SensorPrivacyManager mSensorPrivacyManager;
|
||||
|
||||
@Inject
|
||||
public SensorPrivacyTile(QSHost host) {
|
||||
super(host);
|
||||
|
||||
|
||||
@@ -31,12 +31,15 @@ import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.policy.UserInfoController;
|
||||
import com.android.systemui.statusbar.policy.UserSwitcherController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
public class UserTile extends QSTileImpl<State> implements UserInfoController.OnUserInfoChangedListener {
|
||||
|
||||
private final UserSwitcherController mUserSwitcherController;
|
||||
private final UserInfoController mUserInfoController;
|
||||
private Pair<String, Drawable> mLastUpdate;
|
||||
|
||||
@Inject
|
||||
public UserTile(QSHost host) {
|
||||
super(host);
|
||||
mUserSwitcherController = Dependency.get(UserSwitcherController.class);
|
||||
|
||||
@@ -51,6 +51,8 @@ import com.android.systemui.statusbar.policy.WifiIcons;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Wifi **/
|
||||
public class WifiTile extends QSTileImpl<SignalState> {
|
||||
private static final Intent WIFI_SETTINGS = new Intent(Settings.ACTION_WIFI_SETTINGS);
|
||||
@@ -64,6 +66,7 @@ public class WifiTile extends QSTileImpl<SignalState> {
|
||||
private final ActivityStarter mActivityStarter;
|
||||
private boolean mExpectDisabled;
|
||||
|
||||
@Inject
|
||||
public WifiTile(QSHost host) {
|
||||
super(host);
|
||||
mController = Dependency.get(NetworkController.class);
|
||||
|
||||
@@ -29,6 +29,8 @@ import com.android.systemui.qs.QSHost;
|
||||
import com.android.systemui.qs.tileimpl.QSTileImpl;
|
||||
import com.android.systemui.statusbar.phone.ManagedProfileController;
|
||||
|
||||
import javax.inject.Inject;
|
||||
|
||||
/** Quick settings tile: Work profile on/off */
|
||||
public class WorkModeTile extends QSTileImpl<BooleanState> implements
|
||||
ManagedProfileController.Callback {
|
||||
@@ -36,6 +38,7 @@ public class WorkModeTile extends QSTileImpl<BooleanState> implements
|
||||
|
||||
private final ManagedProfileController mProfileController;
|
||||
|
||||
@Inject
|
||||
public WorkModeTile(QSHost host) {
|
||||
super(host);
|
||||
mProfileController = Dependency.get(ManagedProfileController.class);
|
||||
|
||||
@@ -160,7 +160,6 @@ import com.android.systemui.plugins.qs.QS;
|
||||
import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption;
|
||||
import com.android.systemui.qs.QSFragment;
|
||||
import com.android.systemui.qs.QSPanel;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.recents.Recents;
|
||||
import com.android.systemui.recents.ScreenPinningRequest;
|
||||
import com.android.systemui.shared.system.WindowManagerWrapper;
|
||||
@@ -940,8 +939,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
.withPlugin(QS.class)
|
||||
.withDefault(this::createDefaultQSFragment)
|
||||
.build());
|
||||
final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this,
|
||||
mIconController);
|
||||
mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow,
|
||||
(visible) -> {
|
||||
mBrightnessMirrorVisible = visible;
|
||||
@@ -950,7 +947,6 @@ public class StatusBar extends SystemUI implements DemoMode,
|
||||
fragmentHostManager.addTagListener(QS.TAG, (tag, f) -> {
|
||||
QS qs = (QS) f;
|
||||
if (qs instanceof QSFragment) {
|
||||
((QSFragment) qs).setHost(qsh);
|
||||
mQSPanel = ((QSFragment) qs).getQsPanel();
|
||||
mQSPanel.setBrightnessMirror(mBrightnessMirrorController);
|
||||
}
|
||||
|
||||
@@ -346,6 +346,7 @@ public class GarbageMonitor {
|
||||
private final GarbageMonitor gm;
|
||||
private ProcessMemInfo pmi;
|
||||
|
||||
@Inject
|
||||
public MemoryTile(QSHost host) {
|
||||
super(host);
|
||||
gm = SystemUIFactory.getInstance().getRootComponent().createGarbageMonitor();
|
||||
|
||||
@@ -21,6 +21,7 @@ import static org.mockito.Mockito.mock;
|
||||
import android.app.Fragment;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.support.test.filters.SmallTest;
|
||||
import android.testing.AndroidTestingRunner;
|
||||
@@ -36,6 +37,7 @@ import com.android.systemui.Dependency;
|
||||
import com.android.systemui.R;
|
||||
import com.android.systemui.SystemUIFactory;
|
||||
import com.android.systemui.SysuiBaseFragmentTest;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.policy.Clock;
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController;
|
||||
@@ -86,7 +88,8 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
QSFragment qs = (QSFragment) mFragment;
|
||||
mFragments.dispatchResume();
|
||||
processAllMessages();
|
||||
QSTileHost host = new QSTileHost(mContext, null, mock(StatusBarIconController.class));
|
||||
QSTileHost host = new QSTileHost(mContext, mock(StatusBarIconController.class),
|
||||
mock(QSFactoryImpl.class), new Handler());
|
||||
qs.setHost(host);
|
||||
|
||||
qs.setListening(true);
|
||||
@@ -128,6 +131,7 @@ public class QSFragmentTest extends SysuiBaseFragmentTest {
|
||||
return new QSFragment(
|
||||
new RemoteInputQuickSettingsDisabler(context, mock(ConfigurationController.class)),
|
||||
new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()),
|
||||
context);
|
||||
context,
|
||||
mock(QSTileHost.class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import static junit.framework.Assert.assertTrue;
|
||||
import static org.mockito.Mockito.mock;
|
||||
|
||||
import android.content.ComponentName;
|
||||
import android.os.Handler;
|
||||
import android.os.Looper;
|
||||
import android.service.quicksettings.Tile;
|
||||
import android.test.suitebuilder.annotation.SmallTest;
|
||||
@@ -30,6 +31,7 @@ import android.testing.TestableLooper.RunWithLooper;
|
||||
|
||||
import com.android.systemui.SysuiTestCase;
|
||||
import com.android.systemui.qs.QSTileHost;
|
||||
import com.android.systemui.qs.tileimpl.QSFactoryImpl;
|
||||
import com.android.systemui.statusbar.phone.StatusBarIconController;
|
||||
import com.android.systemui.statusbar.policy.BluetoothController;
|
||||
|
||||
@@ -55,8 +57,10 @@ public class TileServicesTest extends SysuiTestCase {
|
||||
public void setUp() throws Exception {
|
||||
mDependency.injectMockDependency(BluetoothController.class);
|
||||
mManagers = new ArrayList<>();
|
||||
QSTileHost host = new QSTileHost(mContext, null,
|
||||
mock(StatusBarIconController.class));
|
||||
QSTileHost host = new QSTileHost(mContext,
|
||||
mock(StatusBarIconController.class),
|
||||
mock(QSFactoryImpl.class),
|
||||
new Handler());
|
||||
mTileService = new TestTileServices(host, Looper.getMainLooper());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user