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

Commit 891c4f78 authored by George Lin's avatar George Lin
Browse files

[TP] Make clock previews tick

Make the clock previews tick with minute

Test: Manually waited for the minute updates and saw clocks tick
Bug: 270097085
Change-Id: I288c3d8ff50432b3eb9ca2cebabd2a8bbf5e3b21
parent 412c9bd7
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -88,6 +88,15 @@ object ClockCarouselViewBinder {
                }
            }
        }

        lifecycleOwner.lifecycleScope.launch {
            lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
                clockViewFactory.registerTimeTicker()
            }
            // When paused
            clockViewFactory.unregisterTimeTicker()
        }

        return object : Binding {
            override fun show() {
                viewModel.showClockCarousel(true)
+8 −0
Original line number Diff line number Diff line
@@ -169,5 +169,13 @@ object ClockSettingsBinder {
                }
            }
        }

        lifecycleOwner.lifecycleScope.launch {
            lifecycleOwner.repeatOnLifecycle(Lifecycle.State.RESUMED) {
                clockViewFactory.registerTimeTicker()
            }
            // When paused
            clockViewFactory.unregisterTimeTicker()
        }
    }
}
+13 −0
Original line number Diff line number Diff line
@@ -22,12 +22,14 @@ import com.android.systemui.plugins.ClockController
import com.android.systemui.shared.clocks.ClockRegistry
import com.android.wallpaper.R
import com.android.wallpaper.util.ScreenSizeCalculator
import com.android.wallpaper.util.TimeUtils.TimeTicker

class ClockViewFactory(
    private val activity: Activity,
    private val registry: ClockRegistry,
) {
    private val clockControllers: HashMap<String, ClockController> = HashMap()
    private var ticker: TimeTicker? = null

    fun getView(clockId: String): View {
        return (clockControllers[clockId] ?: initClockController(clockId)).largeClock.view
@@ -43,6 +45,17 @@ class ClockViewFactory(
            .onSeedColorChanged(seedColor)
    }

    fun registerTimeTicker() {
        ticker =
            TimeTicker.registerNewReceiver(activity.applicationContext) {
                clockControllers.values.forEach { it.largeClock.events.onTimeTick() }
            }
    }

    fun unregisterTimeTicker() {
        activity.applicationContext.unregisterReceiver(ticker)
    }

    private fun initClockController(clockId: String): ClockController {
        val controller =
            registry.createExampleClock(clockId).also { it?.initialize(activity.resources, 0f, 0f) }