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

Commit 1b70650d authored by Peter Liang's avatar Peter Liang
Browse files

Fine-tune the vertical margin of the volume dialog slider.

Flag: com.android.systemui.captions_toggle_in_volume_dialog_v1
Bug: 425471100
Fixes: 433686860
Test: manual test
Change-Id: I873b0101f5d818fe1fd427a9c5c1082af5572112
parent 5d072ccc
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -2251,6 +2251,7 @@
        orientation when the vertical space is limited
    -->
    <dimen name="volume_dialog_slider_vertical_margin">124dp</dimen>
    <dimen name="volume_dialog_slider_vertical_margin_with_captions_toggle">130dp</dimen>
    <dimen name="volume_dialog_half_opened_offset">-128dp</dimen>
    <dimen name="volume_dialog_slider_max_deviation">56dp</dimen>

+20 −4
Original line number Diff line number Diff line
@@ -32,11 +32,13 @@ import androidx.dynamicanimation.animation.SpringAnimation
import androidx.dynamicanimation.animation.SpringForce
import com.android.app.tracing.coroutines.launchInTraced
import com.android.app.tracing.coroutines.launchTraced
import com.android.systemui.Flags
import com.android.systemui.common.ui.view.onApplyWindowInsets
import com.android.systemui.common.ui.view.updateMargin
import com.android.systemui.dagger.qualifiers.Application
import com.android.systemui.res.R
import com.android.systemui.util.kotlin.awaitCancellationThenDispose
import com.android.systemui.volume.dialog.captions.ui.viewmodel.VolumeDialogCaptionsButtonViewModel
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialog
import com.android.systemui.volume.dialog.dagger.scope.VolumeDialogScope
import com.android.systemui.volume.dialog.shared.model.VolumeDialogVisibilityModel
@@ -70,6 +72,7 @@ class VolumeDialogViewBinder
constructor(
    @Application context: Context,
    private val viewModel: VolumeDialogViewModel,
    private val captionsButtonViewModel: VolumeDialogCaptionsButtonViewModel,
    private val jankListenerFactory: JankListenerFactory,
    private val tracer: VolumeTracer,
    @VolumeDialog private val viewBinders: List<@JvmSuppressWildcards ViewBinder>,
@@ -81,6 +84,12 @@ constructor(
        context.resources.getDimensionPixelSize(R.dimen.volume_dialog_slider_vertical_margin)
    }

    private val mainSliderWithCaptionsToggleVerticalMargin: Int by lazy {
        context.resources.getDimensionPixelSize(
            R.dimen.volume_dialog_slider_vertical_margin_with_captions_toggle
        )
    }

    fun CoroutineScope.bind(dialog: Dialog, isVolumeDialogVertical: Boolean = true) {
        // Root view of the Volume Dialog.
        val root: ViewGroup = dialog.requireViewById(R.id.volume_dialog)
@@ -131,13 +140,13 @@ constructor(
                    )
                    if (isVolumeDialogVertical) {
                        mainSliderContainer?.updateMargin(
                            top = mainSliderVerticalMargin - view.paddingTop,
                            bottom = mainSliderVerticalMargin - view.paddingBottom,
                            top = getSliderVerticalMargin() - view.paddingTop,
                            bottom = getSliderVerticalMargin() - view.paddingBottom,
                        )
                    } else {
                        mainSliderContainer?.updateMargin(
                            left = mainSliderVerticalMargin - view.paddingLeft,
                            right = mainSliderVerticalMargin - view.paddingRight,
                            left = getSliderVerticalMargin() - view.paddingLeft,
                            right = getSliderVerticalMargin() - view.paddingRight,
                        )
                    }
                    WindowInsets.CONSUMED
@@ -223,6 +232,13 @@ constructor(
        animate().setDuration(150).translationY(offsetPx).suspendAnimate()
    }

    private fun getSliderVerticalMargin(): Int =
        if (Flags.captionsToggleInVolumeDialogV1() && captionsButtonViewModel.isVisible.value) {
            mainSliderWithCaptionsToggleVerticalMargin
        } else {
            mainSliderVerticalMargin
        }

    private class Accessibility(private val viewModel: VolumeDialogViewModel) :
        View.AccessibilityDelegate() {

+23 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2025 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.captions.ui.viewmodel

import com.android.systemui.kosmos.Kosmos
import com.android.systemui.volume.dialog.captions.domain.volumeDialogCaptionsButtonInteractor

val Kosmos.volumeDialogCaptionsButtonViewModelKosmos by
    Kosmos.Fixture { VolumeDialogCaptionsButtonViewModel(volumeDialogCaptionsButtonInteractor) }
+2 −0
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.systemui.volume.dialog.ui.binder

import android.content.applicationContext
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.volume.dialog.captions.ui.viewmodel.volumeDialogCaptionsButtonViewModelKosmos
import com.android.systemui.volume.dialog.ringer.volumeDialogRingerViewBinder
import com.android.systemui.volume.dialog.settings.ui.binder.volumeDialogSettingsButtonViewBinder
import com.android.systemui.volume.dialog.sliders.ui.volumeDialogSlidersViewBinder
@@ -41,6 +42,7 @@ val Kosmos.volumeDialogViewBinder by
        VolumeDialogViewBinder(
            applicationContext,
            volumeDialogViewModel,
            volumeDialogCaptionsButtonViewModelKosmos,
            jankListenerFactory,
            volumeTracer,
            volumeDialogViewBinders,