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

Commit eebd136f authored by Anton Potapov's avatar Anton Potapov
Browse files

Add overscroll animation to the Volume Dialog sliders

Flag: com.android.systemui.volume_redesign
Test: manual on foldable
Bug: 369995895
Change-Id: I31b79f00a18284fee4b7c691f0f484147153c545
parent 559895c2
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -71,6 +71,9 @@
        android:layout_height="0dp"
        android:layout_marginTop="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:layout_marginBottom="@dimen/volume_dialog_floating_sliders_vertical_padding_negative"
        android:clipChildren="false"
        android:clipToOutline="false"
        android:clipToPadding="false"
        android:divider="@drawable/volume_dialog_floating_sliders_spacer"
        android:gravity="bottom"
        android:orientation="horizontal"
+2 −0
Original line number Diff line number Diff line
@@ -2106,6 +2106,8 @@

    <fraction name="volume_dialog_half_opened_bias">0.2</fraction>

    <dimen name="volume_dialog_slider_max_deviation">56dp</dimen>

    <dimen name="volume_dialog_background_square_corner_radius">12dp</dimen>

    <dimen name="volume_dialog_ringer_drawer_button_size">@dimen/volume_dialog_button_size</dimen>
+3 −0
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.volume.dialog.sliders.dagger

import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogOverscrollViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderHapticsViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderTouchesViewBinder
import com.android.systemui.volume.dialog.sliders.ui.VolumeDialogSliderViewBinder
@@ -37,6 +38,8 @@ interface VolumeDialogSliderComponent {

    fun sliderHapticsViewBinder(): VolumeDialogSliderHapticsViewBinder

    fun overscrollViewBinder(): VolumeDialogOverscrollViewBinder

    @Subcomponent.Factory
    interface Factory {

+0 −2
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.systemui.volume.dialog.sliders.data.repository

import android.annotation.SuppressLint
import android.view.MotionEvent
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import javax.inject.Inject
@@ -27,7 +26,6 @@ import kotlinx.coroutines.flow.filterNotNull
@VolumeDialogSliderScope
class VolumeDialogSliderTouchEventsRepository @Inject constructor() {

    @SuppressLint("SharedFlowCreation")
    private val mutableSliderTouchEvents: MutableStateFlow<MotionEvent?> = MutableStateFlow(null)
    val sliderTouchEvent: Flow<MotionEvent> = mutableSliderTouchEvents.filterNotNull()

+8 −2
Original line number Diff line number Diff line
@@ -17,14 +17,18 @@
package com.android.systemui.volume.dialog.sliders.domain.interactor

import com.android.systemui.plugins.VolumeDialogController
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.domain.interactor.VolumeDialogStateInteractor
import com.android.systemui.volume.dialog.shared.model.VolumeDialogStreamModel
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.domain.model.VolumeDialogSliderType
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.filterNotNull
import kotlinx.coroutines.flow.mapNotNull
import kotlinx.coroutines.flow.stateIn

/** Operates a state of particular slider of the Volume Dialog. */
@VolumeDialogSliderScope
@@ -32,6 +36,7 @@ class VolumeDialogSliderInteractor
@Inject
constructor(
    private val sliderType: VolumeDialogSliderType,
    @VolumeDialog private val coroutineScope: CoroutineScope,
    volumeDialogStateInteractor: VolumeDialogStateInteractor,
    private val volumeDialogController: VolumeDialogController,
) {
@@ -47,7 +52,8 @@ constructor(
                    }
                }
            }
            .distinctUntilChanged()
            .stateIn(coroutineScope, SharingStarted.Eagerly, null)
            .filterNotNull()

    fun setStreamVolume(userLevel: Int) {
        with(volumeDialogController) {
Loading