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

Commit b0d72c20 authored by George Lin's avatar George Lin
Browse files

Remove the flag isCarouselInTransition

The clock vertical shift issue when onTimeTick is resolved.
We no longer need to inspect if we are scrolling the carousel.

1. Remove isCarouselInTransition. It's not really idea to create a state
   in a view and reference it externally. The view should be as
   stateless as possible.
2. Remove onTimeTick when populating, since this looks weird when we
   have second level clocks that the second arm moves every time when
   populateing

Test: Manually tested time tick does not make clock view vertically
      shift
Bug: 278850684
Change-Id: I6478a4467f7d9e3091a709a5978a042fa65d3d3b
parent d1d1b5a8
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -106,9 +106,7 @@ object ClockCarouselViewBinder {
            LifecycleEventObserver { source, event ->
                when (event) {
                    Lifecycle.Event.ON_RESUME -> {
                        clockViewFactory.registerTimeTicker(source) {
                            !carouselView.isCarouselInTransition
                        }
                        clockViewFactory.registerTimeTicker(source)
                    }
                    Lifecycle.Event.ON_PAUSE -> {
                        clockViewFactory.unregisterTimeTicker(source)
+0 −6
Original line number Diff line number Diff line
@@ -36,8 +36,6 @@ class ClockCarouselView(
        attrs,
    ) {

    var isCarouselInTransition = false

    val carousel: Carousel
    private val motionLayout: MotionLayout
    private lateinit var adapter: ClockCarouselAdapter
@@ -72,7 +70,6 @@ class ClockCarouselView(
                    startId: Int,
                    endId: Int
                ) {
                    isCarouselInTransition = true
                    val scalingDownClockId = adapter.clockIds[carousel.currentIndex]
                    val scalingUpIdx =
                        if (endId == R.id.next) (carousel.currentIndex + 1) % adapter.count()
@@ -125,7 +122,6 @@ class ClockCarouselView(
                }

                override fun onTransitionCompleted(motionLayout: MotionLayout?, currentId: Int) {
                    isCarouselInTransition = false
                    setCardAnimationState(currentId == R.id.start)
                }

@@ -197,8 +193,6 @@ class ClockCarouselView(

            clockHostView.removeAllViews()
            val clockView = onGetClockController(clockIds[index]).largeClock.view
            // Making sure the large clock tick to the correct time
            onGetClockController(clockIds[index]).largeClock.events.onTimeTick()
            // The clock view might still be attached to an existing parent. Detach before adding to
            // another parent.
            (clockView.parent as? ViewGroup)?.removeView(clockView)
+1 −9
Original line number Diff line number Diff line
@@ -67,21 +67,13 @@ class ClockViewFactory(
    }

    fun registerTimeTicker(owner: LifecycleOwner) {
        registerTimeTicker(owner, null)
    }

    fun registerTimeTicker(owner: LifecycleOwner, shouldTimeTick: (() -> Boolean)?) {
        val hashCode = owner.hashCode()
        if (timeTickListeners.keys.contains(hashCode)) {
            return
        }

        timeTickListeners[hashCode] =
            TimeTicker.registerNewReceiver(activity.applicationContext) {
                if (shouldTimeTick == null || shouldTimeTick()) {
                    onTimeTick()
                }
            }
            TimeTicker.registerNewReceiver(activity.applicationContext) { onTimeTick() }
    }

    private fun onTimeTick() {