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

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

Cleanup code before adding Kosmoses

- move touches input functionality to the VolumeDialogSliderViewBinder to reduce the amount of view binders;
- remove useless VolumeDialogResources;
- make handler nullable in the VolumeDialogCallbackInteractor;

Flag: com.android.systemui.volume_redesign
Bug: 369993864
Test: passes presubmits
Test: manual on the phone. Observe the new Volume Dialog
Change-Id: I5d5dbc530546382c3db58e50ce9a45ed92db9b69
parent b01ac598
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ class VolumeDialogCallbacksInteractor
constructor(
    private val volumeDialogController: VolumeDialogController,
    @VolumeDialogPlugin private val coroutineScope: CoroutineScope,
    @Background private val bgHandler: Handler,
    @Background private val bgHandler: Handler?,
) {

    @SuppressLint("SharedFlowCreation") // event-bus needed
+0 −3
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ 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
import dagger.BindsInstance
import dagger.Subcomponent
@@ -34,8 +33,6 @@ interface VolumeDialogSliderComponent {

    fun sliderViewBinder(): VolumeDialogSliderViewBinder

    fun sliderTouchesViewBinder(): VolumeDialogSliderTouchesViewBinder

    fun sliderHapticsViewBinder(): VolumeDialogSliderHapticsViewBinder

    fun overscrollViewBinder(): VolumeDialogOverscrollViewBinder
+0 −41
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.systemui.volume.dialog.sliders.ui

import android.annotation.SuppressLint
import android.view.View
import com.android.systemui.res.R
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderInputEventsViewModel
import com.google.android.material.slider.Slider
import javax.inject.Inject

@VolumeDialogSliderScope
class VolumeDialogSliderTouchesViewBinder
@Inject
constructor(private val viewModel: VolumeDialogSliderInputEventsViewModel) {

    @SuppressLint("ClickableViewAccessibility")
    fun bind(view: View) {
        with(view.requireViewById<Slider>(R.id.volume_dialog_slider)) {
            setOnTouchListener { _, event ->
                viewModel.onTouchEvent(event)
                false
            }
        }
    }
}
+10 −2
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringForce
import com.android.systemui.res.R
import com.android.systemui.volume.dialog.sliders.dagger.VolumeDialogSliderScope
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderInputEventsViewModel
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderStateModel
import com.android.systemui.volume.dialog.sliders.ui.viewmodel.VolumeDialogSliderViewModel
import com.google.android.material.slider.Slider
@@ -35,7 +36,10 @@ import kotlinx.coroutines.flow.onEach
@VolumeDialogSliderScope
class VolumeDialogSliderViewBinder
@Inject
constructor(private val viewModel: VolumeDialogSliderViewModel) {
constructor(
    private val viewModel: VolumeDialogSliderViewModel,
    private val inputViewModel: VolumeDialogSliderInputEventsViewModel,
) {

    private val sliderValueProperty =
        object : FloatPropertyCompat<Slider>("value") {
@@ -51,12 +55,16 @@ constructor(private val viewModel: VolumeDialogSliderViewModel) {
            dampingRatio = SpringForce.DAMPING_RATIO_NO_BOUNCY
        }

    @SuppressLint("ClickableViewAccessibility")
    fun CoroutineScope.bind(view: View) {
        var isInitialUpdate = true
        val sliderView: Slider = view.requireViewById(R.id.volume_dialog_slider)
        val animation = SpringAnimation(sliderView, sliderValueProperty)
        animation.spring = springForce

        sliderView.setOnTouchListener { _, event ->
            inputViewModel.onTouchEvent(event)
            false
        }
        sliderView.addOnChangeListener { _, value, fromUser ->
            viewModel.setStreamVolume(value.roundToInt(), fromUser)
        }
+0 −1
Original line number Diff line number Diff line
@@ -71,7 +71,6 @@ constructor(private val viewModel: VolumeDialogSlidersViewModel) {
        viewsToAnimate: Array<View>,
    ) {
        with(component.sliderViewBinder()) { bind(sliderContainer) }
        with(component.sliderTouchesViewBinder()) { bind(sliderContainer) }
        with(component.sliderHapticsViewBinder()) { bind(sliderContainer) }
        with(component.overscrollViewBinder()) { bind(sliderContainer, viewsToAnimate) }
    }
Loading