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

Commit a481fc36 authored by Michael Mikhail's avatar Michael Mikhail
Browse files

Fix unwanted reserved spaces for semantic buttons

Flag: ACONFIG media_controls_refactor DEVELOPMENT
Bug: 340860337
Test: manually checked UMO posted by chrome.
Change-Id: Ib9ba0a6bf038892250b35fe644e3a057aeb644d0
parent 6b158b32
Loading
Loading
Loading
Loading
+44 −44
Original line number Diff line number Diff line
@@ -260,45 +260,51 @@ object MediaControlViewBinder {
            }

            SEMANTIC_ACTIONS_ALL.forEachIndexed { index, id ->
                val button = viewHolder.getAction(id)
                val actionViewModel = viewModel.actionButtons[index]
                if (button.id == R.id.actionPrev) {
                    actionViewModel?.let {
                        viewController.setUpPrevButtonInfo(true, it.notVisibleValue)
                    }
                } else if (button.id == R.id.actionNext) {
                    actionViewModel?.let {
                        viewController.setUpNextButtonInfo(true, it.notVisibleValue)
                    }
                val buttonView = viewHolder.getAction(id)
                val buttonModel = viewModel.actionButtons[index]
                if (buttonView.id == R.id.actionPrev) {
                    viewController.setUpPrevButtonInfo(
                        buttonModel.isEnabled,
                        buttonModel.notVisibleValue
                    )
                } else if (buttonView.id == R.id.actionNext) {
                    viewController.setUpNextButtonInfo(
                        buttonModel.isEnabled,
                        buttonModel.notVisibleValue
                    )
                }
                actionViewModel?.let { action ->
                    val animHandler = (button.tag ?: AnimationBindHandler()) as AnimationBindHandler
                val animHandler = (buttonView.tag ?: AnimationBindHandler()) as AnimationBindHandler
                animHandler.tryExecute {
                        if (animHandler.updateRebindId(action.rebindId)) {
                    if (buttonModel.isEnabled) {
                        if (animHandler.updateRebindId(buttonModel.rebindId)) {
                            animHandler.unregisterAll()
                            animHandler.tryRegister(action.icon)
                            animHandler.tryRegister(action.background)
                            animHandler.tryRegister(buttonModel.icon)
                            animHandler.tryRegister(buttonModel.background)
                            bindButtonCommon(
                                button,
                                buttonView,
                                viewHolder.multiRippleView,
                                action,
                                buttonModel,
                                viewController,
                                falsingManager,
                            )
                        }
                        val visible = action.isVisibleWhenScrubbing || !viewController.isScrubbing
                    } else {
                        animHandler.unregisterAll()
                        clearButton(buttonView)
                    }
                    val visible =
                        buttonModel.isEnabled &&
                            (buttonModel.isVisibleWhenScrubbing || !viewController.isScrubbing)
                    setSemanticButtonVisibleAndAlpha(
                        viewHolder.getAction(id),
                        viewController.expandedLayout,
                        viewController.collapsedLayout,
                        visible,
                            action.notVisibleValue,
                            action.showInCollapsed
                        buttonModel.notVisibleValue,
                        buttonModel.showInCollapsed
                    )
                }
            }
                    ?: clearButton(button)
            }
        } else {
            // Hide buttons that only appear for semantic actions
            SEMANTIC_ACTIONS_COMPACT.forEach { buttonId ->
@@ -309,7 +315,7 @@ object MediaControlViewBinder {
            // Set all generic buttons
            genericButtons.forEachIndexed { index, button ->
                if (index < viewModel.actionButtons.size) {
                    viewModel.actionButtons[index]?.let { action ->
                    val action = viewModel.actionButtons[index]
                    bindButtonCommon(
                        button,
                        viewHolder.multiRippleView,
@@ -318,13 +324,7 @@ object MediaControlViewBinder {
                        falsingManager,
                    )
                    setVisibleAndAlpha(expandedSet, button.id, visible = true)
                        setVisibleAndAlpha(
                            collapsedSet,
                            button.id,
                            visible = action.showInCollapsed
                        )
                    }
                        ?: clearButton(button)
                    setVisibleAndAlpha(collapsedSet, button.id, visible = action.showInCollapsed)
                } else {
                    // Hide any unused buttons
                    clearButton(button)
+16 −15
Original line number Diff line number Diff line
@@ -283,16 +283,17 @@ class MediaControlViewModel(
        )
    }

    private fun toActionViewModels(model: MediaControlModel): List<MediaActionViewModel?> {
    private fun toActionViewModels(model: MediaControlModel): List<MediaActionViewModel> {
        val semanticActionButtons =
            model.semanticActionButtons?.let { mediaButton ->
                with(mediaButton) {
                val isScrubbingTimeEnabled = canShowScrubbingTimeViews(mediaButton)
                SEMANTIC_ACTIONS_ALL.map { buttonId ->
                        getActionById(buttonId)?.let {
                            toSemanticActionViewModel(model, it, buttonId, isScrubbingTimeEnabled)
                        }
                    }
                    toSemanticActionViewModel(
                        model,
                        mediaButton.getActionById(buttonId),
                        buttonId,
                        isScrubbingTimeEnabled
                    )
                }
            }
        val notifActionButtons =
@@ -304,7 +305,7 @@ class MediaControlViewModel(

    private fun toSemanticActionViewModel(
        model: MediaControlModel,
        mediaAction: MediaAction,
        mediaAction: MediaAction?,
        buttonId: Int,
        canShowScrubbingTimeViews: Boolean
    ): MediaActionViewModel {
@@ -312,9 +313,9 @@ class MediaControlViewModel(
        val hideWhenScrubbing = SEMANTIC_ACTIONS_HIDE_WHEN_SCRUBBING.contains(buttonId)
        val shouldHideWhenScrubbing = canShowScrubbingTimeViews && hideWhenScrubbing
        return MediaActionViewModel(
            icon = mediaAction.icon,
            contentDescription = mediaAction.contentDescription,
            background = mediaAction.background,
            icon = mediaAction?.icon,
            contentDescription = mediaAction?.contentDescription,
            background = mediaAction?.background,
            isVisibleWhenScrubbing = !shouldHideWhenScrubbing,
            notVisibleValue =
                if (
@@ -326,11 +327,11 @@ class MediaControlViewModel(
                    ConstraintSet.GONE
                },
            showInCollapsed = showInCollapsed,
            rebindId = mediaAction.rebindId,
            rebindId = mediaAction?.rebindId,
            buttonId = buttonId,
            isEnabled = mediaAction.action != null,
            isEnabled = mediaAction?.action != null,
            onClicked = { id ->
                mediaAction.action?.let {
                mediaAction?.action?.let {
                    onButtonClicked(id, model.uid, model.packageName, model.instanceId, it)
                }
            },
+1 −1
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ data class MediaPlayerViewModel(
    val canShowTime: Boolean,
    val playTurbulenceNoise: Boolean,
    val useSemanticActions: Boolean,
    val actionButtons: List<MediaActionViewModel?>,
    val actionButtons: List<MediaActionViewModel>,
    val outputSwitcher: MediaOutputSwitcherViewModel,
    val gutsMenu: GutsViewModel,
    val onClicked: (Expandable) -> Unit,