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

Commit e5291908 authored by Shivangi Dubey's avatar Shivangi Dubey Committed by Automerger Merge Worker
Browse files

Merge "Separated animation of status bar in split shade" into udc-dev am: 5202d219

parents 741f0210 5202d219
Loading
Loading
Loading
Loading
+24 −7
Original line number Original line Diff line number Diff line
@@ -47,19 +47,36 @@ constructor(
            viewsIdToTranslate =
            viewsIdToTranslate =
                setOf(
                setOf(
                    ViewIdToTranslate(R.id.quick_settings_panel, START, filterShade),
                    ViewIdToTranslate(R.id.quick_settings_panel, START, filterShade),
                    ViewIdToTranslate(R.id.notification_stack_scroller, END, filterShade),
                    ViewIdToTranslate(R.id.notification_stack_scroller, END, filterShade)),
            progressProvider = progressProvider)
    }

    private val translateAnimatorStatusBar by lazy {
        UnfoldConstantTranslateAnimator(
            viewsIdToTranslate =
            setOf(
                ViewIdToTranslate(R.id.statusIcons, END, filterShade),
                ViewIdToTranslate(R.id.statusIcons, END, filterShade),
                ViewIdToTranslate(R.id.privacy_container, END, filterShade),
                ViewIdToTranslate(R.id.privacy_container, END, filterShade),
                ViewIdToTranslate(R.id.batteryRemainingIcon, END, filterShade),
                ViewIdToTranslate(R.id.batteryRemainingIcon, END, filterShade),
                ViewIdToTranslate(R.id.carrier_group, END, filterShade),
                ViewIdToTranslate(R.id.carrier_group, END, filterShade),
                ViewIdToTranslate(R.id.clock, START, filterShade),
                ViewIdToTranslate(R.id.clock, START, filterShade),
                    ViewIdToTranslate(R.id.date, START, filterShade)),
                ViewIdToTranslate(R.id.date, START, filterShade)
            progressProvider = progressProvider)
            ),
            progressProvider = progressProvider
        )
    }
    }


    fun setup(root: ViewGroup) {
    fun setup(root: ViewGroup) {
        val translationMax =
        val translationMax =
            context.resources.getDimensionPixelSize(R.dimen.notification_side_paddings).toFloat()
            context.resources.getDimensionPixelSize(R.dimen.notification_side_paddings).toFloat()
        translateAnimator.init(root, translationMax)
        translateAnimator.init(root, translationMax)
        val splitShadeStatusBarViewGroup: ViewGroup? =
            root.findViewById(R.id.split_shade_status_bar)
        if (splitShadeStatusBarViewGroup != null) {
            translateAnimatorStatusBar.init(
                splitShadeStatusBarViewGroup,
                translationMax
            )
        }
    }
    }
}
}
+93 −15
Original line number Original line Diff line number Diff line
@@ -37,6 +37,7 @@ import org.junit.runner.RunWith
import org.mockito.ArgumentCaptor
import org.mockito.ArgumentCaptor
import org.mockito.Captor
import org.mockito.Captor
import org.mockito.Mock
import org.mockito.Mock
import org.mockito.Mockito.atLeastOnce
import org.mockito.Mockito.verify
import org.mockito.Mockito.verify
import org.mockito.MockitoAnnotations
import org.mockito.MockitoAnnotations


@@ -54,10 +55,12 @@ class NotificationPanelUnfoldAnimationControllerTest : SysuiTestCase() {


    @Mock private lateinit var parent: ViewGroup
    @Mock private lateinit var parent: ViewGroup


    @Mock private lateinit var splitShadeStatusBar: ViewGroup

    @Mock private lateinit var statusBarStateController: StatusBarStateController
    @Mock private lateinit var statusBarStateController: StatusBarStateController


    private lateinit var underTest: NotificationPanelUnfoldAnimationController
    private lateinit var underTest: NotificationPanelUnfoldAnimationController
    private lateinit var progressListener: TransitionProgressListener
    private lateinit var progressListeners: List<TransitionProgressListener>
    private var xTranslationMax = 0f
    private var xTranslationMax = 0f


    @Before
    @Before
@@ -73,10 +76,13 @@ class NotificationPanelUnfoldAnimationControllerTest : SysuiTestCase() {
                statusBarStateController,
                statusBarStateController,
                progressProvider
                progressProvider
            )
            )
        whenever(parent.findViewById<ViewGroup>(R.id.split_shade_status_bar)).thenReturn(
            splitShadeStatusBar
        )
        underTest.setup(parent)
        underTest.setup(parent)


        verify(progressProvider).addCallback(capture(progressListenerCaptor))
        verify(progressProvider, atLeastOnce()).addCallback(capture(progressListenerCaptor))
        progressListener = progressListenerCaptor.value
        progressListeners = progressListenerCaptor.allValues
    }
    }


    @Test
    @Test
@@ -86,16 +92,16 @@ class NotificationPanelUnfoldAnimationControllerTest : SysuiTestCase() {
        val view = View(context)
        val view = View(context)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)


        progressListener.onTransitionStarted()
        onTransitionStarted()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()


        progressListener.onTransitionProgress(0f)
        onTransitionProgress(0f)
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()


        progressListener.onTransitionProgress(0.5f)
        onTransitionProgress(0.5f)
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()


        progressListener.onTransitionFinished()
        onTransitionFinished()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()
    }
    }


@@ -106,16 +112,16 @@ class NotificationPanelUnfoldAnimationControllerTest : SysuiTestCase() {
        val view = View(context)
        val view = View(context)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)


        progressListener.onTransitionStarted()
        onTransitionStarted()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()


        progressListener.onTransitionProgress(0f)
        onTransitionProgress(0f)
        assertThat(view.translationX).isEqualTo(xTranslationMax)
        assertThat(view.translationX).isEqualTo(xTranslationMax)


        progressListener.onTransitionProgress(0.5f)
        onTransitionProgress(0.5f)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)


        progressListener.onTransitionFinished()
        onTransitionFinished()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()
    }
    }


@@ -126,16 +132,88 @@ class NotificationPanelUnfoldAnimationControllerTest : SysuiTestCase() {
        val view = View(context)
        val view = View(context)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)
        whenever(parent.findViewById<View>(R.id.quick_settings_panel)).thenReturn(view)


        progressListener.onTransitionStarted()
        onTransitionStarted()
        assertThat(view.translationX).isZero()

        onTransitionProgress(0f)
        assertThat(view.translationX).isEqualTo(xTranslationMax)

        onTransitionProgress(0.5f)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)

        onTransitionFinished()
        assertThat(view.translationX).isZero()
    }

    @Test
    fun whenInKeyguardState_statusBarViewDoesNotMove() {
        whenever(statusBarStateController.getState()).thenReturn(KEYGUARD)

        val view = View(context)
        whenever(splitShadeStatusBar.findViewById<View>(R.id.date)).thenReturn(view)

        onTransitionStarted()
        assertThat(view.translationX).isZero()

        onTransitionProgress(0f)
        assertThat(view.translationX).isZero()

        onTransitionProgress(0.5f)
        assertThat(view.translationX).isZero()

        onTransitionFinished()
        assertThat(view.translationX).isZero()
    }

    @Test
    fun whenInShadeState_statusBarViewDoesMove() {
        whenever(statusBarStateController.getState()).thenReturn(SHADE)

        val view = View(context)
        whenever(splitShadeStatusBar.findViewById<View>(R.id.date)).thenReturn(view)

        onTransitionStarted()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()


        progressListener.onTransitionProgress(0f)
        onTransitionProgress(0f)
        assertThat(view.translationX).isEqualTo(xTranslationMax)
        assertThat(view.translationX).isEqualTo(xTranslationMax)


        progressListener.onTransitionProgress(0.5f)
        onTransitionProgress(0.5f)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)


        progressListener.onTransitionFinished()
        onTransitionFinished()
        assertThat(view.translationX).isZero()
        assertThat(view.translationX).isZero()
    }
    }

    @Test
    fun whenInShadeLockedState_statusBarViewDoesMove() {
        whenever(statusBarStateController.getState()).thenReturn(SHADE_LOCKED)

        val view = View(context)
        whenever(splitShadeStatusBar.findViewById<View>(R.id.date)).thenReturn(view)
        onTransitionStarted()
        assertThat(view.translationX).isZero()

        onTransitionProgress(0f)
        assertThat(view.translationX).isEqualTo(xTranslationMax)

        onTransitionProgress(0.5f)
        assertThat(view.translationX).isEqualTo(0.5f * xTranslationMax)

        onTransitionFinished()
        assertThat(view.translationX).isZero()
    }

    private fun onTransitionStarted() {
        progressListeners.forEach { it.onTransitionStarted() }
    }

    private fun onTransitionProgress(progress: Float) {
        progressListeners.forEach { it.onTransitionProgress(progress) }
    }

    private fun onTransitionFinished() {
        progressListeners.forEach { it.onTransitionFinished() }
    }

}
}