Loading src/com/android/customization/module/CustomizationInjector.kt +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.customization.model.theme.ThemeBundleProvider import com.android.customization.model.theme.ThemeManager import com.android.customization.picker.clock.data.repository.ClockRegistryProvider import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor import com.android.customization.picker.clock.ui.view.ClockViewFactory import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor Loading Loading @@ -71,4 +72,9 @@ interface CustomizationInjector : Injector { context: Context, clockRegistry: ClockRegistry, ): ClockCarouselViewModel fun getClockViewFactory( context: Context, registry: ClockRegistry, ): ClockViewFactory } src/com/android/customization/module/DefaultCustomizationSections.java +8 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import com.android.customization.picker.notifications.ui.section.NotificationSec import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockViewFactoryProvider; import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor; import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController; import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel; Loading Loading @@ -53,6 +54,8 @@ public final class DefaultCustomizationSections implements CustomizationSections private final ClockRegistryProvider mClockRegistryProvider; private final PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider mClockCarouselViewModelProvider; private final PreviewWithClockCarouselSectionController.ClockViewFactoryProvider mClockViewFactoryProvider; public DefaultCustomizationSections( KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor, Loading @@ -61,7 +64,8 @@ public final class DefaultCustomizationSections implements CustomizationSections NotificationSectionViewModel.Factory notificationSectionViewModelFactory, BaseFlags flags, ClockRegistryProvider clockRegistryProvider, ClockCarouselViewModelProvider clockCarouselViewModelProvider) { ClockCarouselViewModelProvider clockCarouselViewModelProvider, ClockViewFactoryProvider clockViewFactoryProvider) { mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor; mKeyguardQuickAffordancePickerViewModelFactory = keyguardQuickAffordancePickerViewModelFactory; Loading @@ -69,6 +73,7 @@ public final class DefaultCustomizationSections implements CustomizationSections mFlags = flags; mClockRegistryProvider = clockRegistryProvider; mClockCarouselViewModelProvider = clockCarouselViewModelProvider; mClockViewFactoryProvider = clockViewFactoryProvider; } @Override Loading Loading @@ -98,7 +103,8 @@ public final class DefaultCustomizationSections implements CustomizationSections wallpaperColorsViewModel, displayUtils, mClockRegistryProvider, mClockCarouselViewModelProvider) mClockCarouselViewModelProvider, mClockViewFactoryProvider) : new ScreenPreviewSectionController( activity, lifecycleOwner, Loading src/com/android/customization/module/ThemePickerInjector.kt +21 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.customization.model.theme.ThemeManager import com.android.customization.picker.clock.data.repository.ClockPickerRepositoryImpl import com.android.customization.picker.clock.data.repository.ClockRegistryProvider import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor import com.android.customization.picker.clock.ui.view.ClockViewFactory import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel import com.android.customization.picker.color.data.repository.ColorPickerRepositoryImpl Loading @@ -37,7 +38,8 @@ import com.android.customization.picker.notifications.data.repository.Notificati import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor import com.android.customization.picker.notifications.domain.interactor.NotificationsSnapshotRestorer import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockViewFactoryProvider import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer Loading Loading @@ -79,6 +81,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject private var clockPickerInteractor: ClockPickerInteractor? = null private var clockSectionViewModel: ClockSectionViewModel? = null private var clockCarouselViewModel: ClockCarouselViewModel? = null private var clockViewFactory: ClockViewFactory? = null private var notificationsInteractor: NotificationsInteractor? = null private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null private var colorPickerInteractor: ColorPickerInteractor? = null Loading @@ -94,14 +97,21 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject ), getFlags(), getClockRegistryProvider(activity), object : PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider { object : ClockCarouselViewModelProvider { override fun get(registry: ClockRegistry): ClockCarouselViewModel { return getClockCarouselViewModel( context = activity, clockRegistry = registry, ) } }, object : ClockViewFactoryProvider { override fun get(registry: ClockRegistry): ClockViewFactory { return getClockViewFactory( context = activity, registry = registry, ) } } ) .also { customizationSections = it } Loading Loading @@ -293,6 +303,14 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject } } override fun getClockViewFactory( context: Context, registry: ClockRegistry, ): ClockViewFactory { return clockViewFactory ?: ClockViewFactory(context, registry).also { clockViewFactory = it } } protected fun getNotificationsInteractor( context: Context, ): NotificationsInteractor { Loading src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt +5 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,11 @@ class ClockCarouselView( override fun populate(view: View?, index: Int) { val viewGroup = view as ViewGroup viewGroup.removeAllViews() viewGroup.addView(onGetClockPreview(clockIds[index])) val clockView = onGetClockPreview(clockIds[index]) // The clock view might still be attached to an existing parent. Detach before adding to // another parent. (clockView.parent as? ViewGroup)?.removeView(clockView) viewGroup.addView(clockView) } override fun onNewItem(index: Int) { Loading src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.android.customization.picker.clock.ui.view import android.content.Context import android.view.View import com.android.systemui.plugins.ClockController import com.android.systemui.shared.clocks.ClockRegistry import java.util.HashMap class ClockViewFactory(private val context: Context, private val registry: ClockRegistry) { private val clockControllers: HashMap<String, ClockController> = HashMap<String, ClockController>() fun getView(clockId: String): View { return (clockControllers[clockId] ?: initClockController(clockId)).largeClock.view } private fun initClockController(clockId: String): ClockController { val controller = registry.createExampleClock(clockId).also { it?.initialize(context.resources, 0f, 0f) } checkNotNull(controller) clockControllers[clockId] = controller return controller } } Loading
src/com/android/customization/module/CustomizationInjector.kt +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import com.android.customization.model.theme.ThemeBundleProvider import com.android.customization.model.theme.ThemeManager import com.android.customization.picker.clock.data.repository.ClockRegistryProvider import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor import com.android.customization.picker.clock.ui.view.ClockViewFactory import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel import com.android.customization.picker.color.domain.interactor.ColorPickerInteractor Loading Loading @@ -71,4 +72,9 @@ interface CustomizationInjector : Injector { context: Context, clockRegistry: ClockRegistry, ): ClockCarouselViewModel fun getClockViewFactory( context: Context, registry: ClockRegistry, ): ClockViewFactory }
src/com/android/customization/module/DefaultCustomizationSections.java +8 −2 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ import com.android.customization.picker.notifications.ui.section.NotificationSec import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider; import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockViewFactoryProvider; import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor; import com.android.customization.picker.quickaffordance.ui.section.KeyguardQuickAffordanceSectionController; import com.android.customization.picker.quickaffordance.ui.viewmodel.KeyguardQuickAffordancePickerViewModel; Loading Loading @@ -53,6 +54,8 @@ public final class DefaultCustomizationSections implements CustomizationSections private final ClockRegistryProvider mClockRegistryProvider; private final PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider mClockCarouselViewModelProvider; private final PreviewWithClockCarouselSectionController.ClockViewFactoryProvider mClockViewFactoryProvider; public DefaultCustomizationSections( KeyguardQuickAffordancePickerInteractor keyguardQuickAffordancePickerInteractor, Loading @@ -61,7 +64,8 @@ public final class DefaultCustomizationSections implements CustomizationSections NotificationSectionViewModel.Factory notificationSectionViewModelFactory, BaseFlags flags, ClockRegistryProvider clockRegistryProvider, ClockCarouselViewModelProvider clockCarouselViewModelProvider) { ClockCarouselViewModelProvider clockCarouselViewModelProvider, ClockViewFactoryProvider clockViewFactoryProvider) { mKeyguardQuickAffordancePickerInteractor = keyguardQuickAffordancePickerInteractor; mKeyguardQuickAffordancePickerViewModelFactory = keyguardQuickAffordancePickerViewModelFactory; Loading @@ -69,6 +73,7 @@ public final class DefaultCustomizationSections implements CustomizationSections mFlags = flags; mClockRegistryProvider = clockRegistryProvider; mClockCarouselViewModelProvider = clockCarouselViewModelProvider; mClockViewFactoryProvider = clockViewFactoryProvider; } @Override Loading Loading @@ -98,7 +103,8 @@ public final class DefaultCustomizationSections implements CustomizationSections wallpaperColorsViewModel, displayUtils, mClockRegistryProvider, mClockCarouselViewModelProvider) mClockCarouselViewModelProvider, mClockViewFactoryProvider) : new ScreenPreviewSectionController( activity, lifecycleOwner, Loading
src/com/android/customization/module/ThemePickerInjector.kt +21 −3 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.customization.model.theme.ThemeManager import com.android.customization.picker.clock.data.repository.ClockPickerRepositoryImpl import com.android.customization.picker.clock.data.repository.ClockRegistryProvider import com.android.customization.picker.clock.domain.interactor.ClockPickerInteractor import com.android.customization.picker.clock.ui.view.ClockViewFactory import com.android.customization.picker.clock.ui.viewmodel.ClockCarouselViewModel import com.android.customization.picker.clock.ui.viewmodel.ClockSectionViewModel import com.android.customization.picker.color.data.repository.ColorPickerRepositoryImpl Loading @@ -37,7 +38,8 @@ import com.android.customization.picker.notifications.data.repository.Notificati import com.android.customization.picker.notifications.domain.interactor.NotificationsInteractor import com.android.customization.picker.notifications.domain.interactor.NotificationsSnapshotRestorer import com.android.customization.picker.notifications.ui.viewmodel.NotificationSectionViewModel import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider import com.android.customization.picker.preview.ui.section.PreviewWithClockCarouselSectionController.ClockViewFactoryProvider import com.android.customization.picker.quickaffordance.data.repository.KeyguardQuickAffordancePickerRepository import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordancePickerInteractor import com.android.customization.picker.quickaffordance.domain.interactor.KeyguardQuickAffordanceSnapshotRestorer Loading Loading @@ -79,6 +81,7 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject private var clockPickerInteractor: ClockPickerInteractor? = null private var clockSectionViewModel: ClockSectionViewModel? = null private var clockCarouselViewModel: ClockCarouselViewModel? = null private var clockViewFactory: ClockViewFactory? = null private var notificationsInteractor: NotificationsInteractor? = null private var notificationSectionViewModelFactory: NotificationSectionViewModel.Factory? = null private var colorPickerInteractor: ColorPickerInteractor? = null Loading @@ -94,14 +97,21 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject ), getFlags(), getClockRegistryProvider(activity), object : PreviewWithClockCarouselSectionController.ClockCarouselViewModelProvider { object : ClockCarouselViewModelProvider { override fun get(registry: ClockRegistry): ClockCarouselViewModel { return getClockCarouselViewModel( context = activity, clockRegistry = registry, ) } }, object : ClockViewFactoryProvider { override fun get(registry: ClockRegistry): ClockViewFactory { return getClockViewFactory( context = activity, registry = registry, ) } } ) .also { customizationSections = it } Loading Loading @@ -293,6 +303,14 @@ open class ThemePickerInjector : WallpaperPicker2Injector(), CustomizationInject } } override fun getClockViewFactory( context: Context, registry: ClockRegistry, ): ClockViewFactory { return clockViewFactory ?: ClockViewFactory(context, registry).also { clockViewFactory = it } } protected fun getNotificationsInteractor( context: Context, ): NotificationsInteractor { Loading
src/com/android/customization/picker/clock/ui/view/ClockCarouselView.kt +5 −1 Original line number Diff line number Diff line Loading @@ -69,7 +69,11 @@ class ClockCarouselView( override fun populate(view: View?, index: Int) { val viewGroup = view as ViewGroup viewGroup.removeAllViews() viewGroup.addView(onGetClockPreview(clockIds[index])) val clockView = onGetClockPreview(clockIds[index]) // The clock view might still be attached to an existing parent. Detach before adding to // another parent. (clockView.parent as? ViewGroup)?.removeView(clockView) viewGroup.addView(clockView) } override fun onNewItem(index: Int) { Loading
src/com/android/customization/picker/clock/ui/view/ClockViewFactory.kt 0 → 100644 +24 −0 Original line number Diff line number Diff line package com.android.customization.picker.clock.ui.view import android.content.Context import android.view.View import com.android.systemui.plugins.ClockController import com.android.systemui.shared.clocks.ClockRegistry import java.util.HashMap class ClockViewFactory(private val context: Context, private val registry: ClockRegistry) { private val clockControllers: HashMap<String, ClockController> = HashMap<String, ClockController>() fun getView(clockId: String): View { return (clockControllers[clockId] ?: initClockController(clockId)).largeClock.view } private fun initClockController(clockId: String): ClockController { val controller = registry.createExampleClock(clockId).also { it?.initialize(context.resources, 0f, 0f) } checkNotNull(controller) clockControllers[clockId] = controller return controller } }