Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +10 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import com.android.systemui.statusbar.StatusIconDisplayable; import com.android.systemui.statusbar.pipeline.mobile.ui.MobileViewLogger; import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView; import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel; import com.android.systemui.statusbar.pipeline.shared.ui.view.ModernStatusBarView; import com.android.systemui.statusbar.pipeline.wifi.ui.view.ModernStatusBarWifiView; import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel; Loading Loading @@ -277,6 +278,15 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da addView(view, viewIndex, createLayoutParams()); } /** Adds a bindable icon to the demo mode view. */ public void addBindableIcon(StatusBarIconHolder.BindableIconHolder holder) { // This doesn't do any correct ordering, and also doesn't check if we already have an // existing icon for the slot. But since we hope to remove this class soon, we won't spend // the time adding that logic. ModernStatusBarView view = holder.getInitializer().createAndBind(mContext); addView(view, createLayoutParams()); } public void onRemoveIcon(StatusIconDisplayable view) { if (view.getSlot().equals("wifi")) { if (view instanceof ModernStatusBarWifiView) { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +14 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,9 @@ import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWi import com.android.systemui.util.Assert; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; Loading Loading @@ -348,7 +350,11 @@ public interface StatusBarIconController { private final MobileContextProvider mMobileContextProvider; private final LocationBasedWifiViewModel mWifiViewModel; private final MobileIconsViewModel mMobileIconsViewModel; /** * Stores the list of bindable icons that have been added, keyed on slot name. This ensures * we don't accidentally add the same bindable icon twice. */ private final Map<String, BindableIconHolder> mBindableIcons = new HashMap<>(); protected final Context mContext; protected int mIconSize; // Whether or not these icons show up in dumpsys Loading Loading @@ -460,8 +466,12 @@ public interface StatusBarIconController { * ViewBinder to control its visual state. */ protected StatusIconDisplayable addBindableIcon(BindableIconHolder holder, int index) { mBindableIcons.put(holder.getSlot(), holder); ModernStatusBarView view = holder.getInitializer().createAndBind(mContext); mGroup.addView(view, index, onCreateLayoutParams()); if (mIsInDemoMode) { mDemoStatusIcons.addBindableIcon(holder); } return view; } Loading Loading @@ -572,6 +582,9 @@ public interface StatusBarIconController { if (mDemoStatusIcons == null) { mDemoStatusIcons = createDemoStatusIcons(); mDemoStatusIcons.addModernWifiView(mWifiViewModel); for (BindableIconHolder holder : mBindableIcons.values()) { mDemoStatusIcons.addBindableIcon(holder); } } mDemoStatusIcons.onDemoModeStarted(); } Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +2 −1 Original line number Diff line number Diff line Loading @@ -212,7 +212,8 @@ public class StatusBarIconControllerImpl implements Tunable, StatusBarIconHolder existingHolder = mStatusBarIconList.getIconHolder(icon.getSlot(), 0); // Expected to be null if (existingHolder == null) { BindableIconHolder bindableIcon = new BindableIconHolder(icon.getInitializer()); BindableIconHolder bindableIcon = new BindableIconHolder(icon.getInitializer(), icon.getSlot()); setIcon(icon.getSlot(), bindableIcon); } else { Log.e(TAG, "addBindableIcon called, but icon has already been added. Ignoring"); Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt +6 −3 Original line number Diff line number Diff line Loading @@ -169,16 +169,19 @@ open class StatusBarIconHolder private constructor() { * StatusBarIconController will register all available bindable icons on init (see * [BindableIconsRepository]), and will ignore any call to setIcon for these. * * [initializer] a view creator that can bind the relevant view models to the created view. * @property initializer a view creator that can bind the relevant view models to the created * view. * @property slot the name of the slot that this holder is used for. */ class BindableIconHolder(val initializer: ModernStatusBarViewCreator) : StatusBarIconHolder() { class BindableIconHolder(val initializer: ModernStatusBarViewCreator, val slot: String) : StatusBarIconHolder() { override var type: Int = TYPE_BINDABLE /** This is unused, as bindable icons use their own view binders to control visibility */ override var isVisible: Boolean = true override fun toString(): String { return ("StatusBarIconHolder(type=BINDABLE)") return ("StatusBarIconHolder(type=BINDABLE, slot=$slot)") } } } packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +8 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxyIm import com.android.systemui.statusbar.pipeline.mobile.util.SubscriptionManagerProxy import com.android.systemui.statusbar.pipeline.mobile.util.SubscriptionManagerProxyImpl import com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepository import com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepositorySwitcher import com.android.systemui.statusbar.pipeline.satellite.data.RealDeviceBasedSatelliteRepository import com.android.systemui.statusbar.pipeline.satellite.data.prod.DeviceBasedSatelliteRepositoryImpl import com.android.systemui.statusbar.pipeline.satellite.ui.viewmodel.DeviceBasedSatelliteViewModel import com.android.systemui.statusbar.pipeline.satellite.ui.viewmodel.DeviceBasedSatelliteViewModelImpl Loading Loading @@ -83,8 +85,13 @@ abstract class StatusBarPipelineModule { abstract fun connectivityRepository(impl: ConnectivityRepositoryImpl): ConnectivityRepository @Binds abstract fun deviceBasedSatelliteRepository( abstract fun realDeviceBasedSatelliteRepository( impl: DeviceBasedSatelliteRepositoryImpl ): RealDeviceBasedSatelliteRepository @Binds abstract fun deviceBasedSatelliteRepository( impl: DeviceBasedSatelliteRepositorySwitcher ): DeviceBasedSatelliteRepository @Binds Loading Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/DemoStatusIcons.java +10 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,7 @@ import com.android.systemui.statusbar.StatusIconDisplayable; import com.android.systemui.statusbar.pipeline.mobile.ui.MobileViewLogger; import com.android.systemui.statusbar.pipeline.mobile.ui.view.ModernStatusBarMobileView; import com.android.systemui.statusbar.pipeline.mobile.ui.viewmodel.MobileIconsViewModel; import com.android.systemui.statusbar.pipeline.shared.ui.view.ModernStatusBarView; import com.android.systemui.statusbar.pipeline.wifi.ui.view.ModernStatusBarWifiView; import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWifiViewModel; Loading Loading @@ -277,6 +278,15 @@ public class DemoStatusIcons extends StatusIconContainer implements DemoMode, Da addView(view, viewIndex, createLayoutParams()); } /** Adds a bindable icon to the demo mode view. */ public void addBindableIcon(StatusBarIconHolder.BindableIconHolder holder) { // This doesn't do any correct ordering, and also doesn't check if we already have an // existing icon for the slot. But since we hope to remove this class soon, we won't spend // the time adding that logic. ModernStatusBarView view = holder.getInitializer().createAndBind(mContext); addView(view, createLayoutParams()); } public void onRemoveIcon(StatusIconDisplayable view) { if (view.getSlot().equals("wifi")) { if (view instanceof ModernStatusBarWifiView) { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconController.java +14 −1 Original line number Diff line number Diff line Loading @@ -54,7 +54,9 @@ import com.android.systemui.statusbar.pipeline.wifi.ui.viewmodel.LocationBasedWi import com.android.systemui.util.Assert; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.inject.Inject; Loading Loading @@ -348,7 +350,11 @@ public interface StatusBarIconController { private final MobileContextProvider mMobileContextProvider; private final LocationBasedWifiViewModel mWifiViewModel; private final MobileIconsViewModel mMobileIconsViewModel; /** * Stores the list of bindable icons that have been added, keyed on slot name. This ensures * we don't accidentally add the same bindable icon twice. */ private final Map<String, BindableIconHolder> mBindableIcons = new HashMap<>(); protected final Context mContext; protected int mIconSize; // Whether or not these icons show up in dumpsys Loading Loading @@ -460,8 +466,12 @@ public interface StatusBarIconController { * ViewBinder to control its visual state. */ protected StatusIconDisplayable addBindableIcon(BindableIconHolder holder, int index) { mBindableIcons.put(holder.getSlot(), holder); ModernStatusBarView view = holder.getInitializer().createAndBind(mContext); mGroup.addView(view, index, onCreateLayoutParams()); if (mIsInDemoMode) { mDemoStatusIcons.addBindableIcon(holder); } return view; } Loading Loading @@ -572,6 +582,9 @@ public interface StatusBarIconController { if (mDemoStatusIcons == null) { mDemoStatusIcons = createDemoStatusIcons(); mDemoStatusIcons.addModernWifiView(mWifiViewModel); for (BindableIconHolder holder : mBindableIcons.values()) { mDemoStatusIcons.addBindableIcon(holder); } } mDemoStatusIcons.onDemoModeStarted(); } Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconControllerImpl.java +2 −1 Original line number Diff line number Diff line Loading @@ -212,7 +212,8 @@ public class StatusBarIconControllerImpl implements Tunable, StatusBarIconHolder existingHolder = mStatusBarIconList.getIconHolder(icon.getSlot(), 0); // Expected to be null if (existingHolder == null) { BindableIconHolder bindableIcon = new BindableIconHolder(icon.getInitializer()); BindableIconHolder bindableIcon = new BindableIconHolder(icon.getInitializer(), icon.getSlot()); setIcon(icon.getSlot(), bindableIcon); } else { Log.e(TAG, "addBindableIcon called, but icon has already been added. Ignoring"); Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarIconHolder.kt +6 −3 Original line number Diff line number Diff line Loading @@ -169,16 +169,19 @@ open class StatusBarIconHolder private constructor() { * StatusBarIconController will register all available bindable icons on init (see * [BindableIconsRepository]), and will ignore any call to setIcon for these. * * [initializer] a view creator that can bind the relevant view models to the created view. * @property initializer a view creator that can bind the relevant view models to the created * view. * @property slot the name of the slot that this holder is used for. */ class BindableIconHolder(val initializer: ModernStatusBarViewCreator) : StatusBarIconHolder() { class BindableIconHolder(val initializer: ModernStatusBarViewCreator, val slot: String) : StatusBarIconHolder() { override var type: Int = TYPE_BINDABLE /** This is unused, as bindable icons use their own view binders to control visibility */ override var isVisible: Boolean = true override fun toString(): String { return ("StatusBarIconHolder(type=BINDABLE)") return ("StatusBarIconHolder(type=BINDABLE, slot=$slot)") } } }
packages/SystemUI/src/com/android/systemui/statusbar/pipeline/dagger/StatusBarPipelineModule.kt +8 −1 Original line number Diff line number Diff line Loading @@ -41,6 +41,8 @@ import com.android.systemui.statusbar.pipeline.mobile.util.MobileMappingsProxyIm import com.android.systemui.statusbar.pipeline.mobile.util.SubscriptionManagerProxy import com.android.systemui.statusbar.pipeline.mobile.util.SubscriptionManagerProxyImpl import com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepository import com.android.systemui.statusbar.pipeline.satellite.data.DeviceBasedSatelliteRepositorySwitcher import com.android.systemui.statusbar.pipeline.satellite.data.RealDeviceBasedSatelliteRepository import com.android.systemui.statusbar.pipeline.satellite.data.prod.DeviceBasedSatelliteRepositoryImpl import com.android.systemui.statusbar.pipeline.satellite.ui.viewmodel.DeviceBasedSatelliteViewModel import com.android.systemui.statusbar.pipeline.satellite.ui.viewmodel.DeviceBasedSatelliteViewModelImpl Loading Loading @@ -83,8 +85,13 @@ abstract class StatusBarPipelineModule { abstract fun connectivityRepository(impl: ConnectivityRepositoryImpl): ConnectivityRepository @Binds abstract fun deviceBasedSatelliteRepository( abstract fun realDeviceBasedSatelliteRepository( impl: DeviceBasedSatelliteRepositoryImpl ): RealDeviceBasedSatelliteRepository @Binds abstract fun deviceBasedSatelliteRepository( impl: DeviceBasedSatelliteRepositorySwitcher ): DeviceBasedSatelliteRepository @Binds Loading