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

Commit f91c2f1e authored by Josh's avatar Josh
Browse files

Add dialog title for shortuct customization dialogs

This is needed for accessibility, otherwise accessibility will announce
"SystemUI" when the dialogs are opened

Test: Manual - use talkback , open add/remove/reset shortcut dialog and
ensure there is a meaningful description announced instead of "systemUI"
Flag: com.android.systemui.keyboard_shortcut_helper_shortcut_customizer
Fix: 390316097

Change-Id: I30b2eda02089eebdaea41aba94ddfebaf09c95cd
parent f71aa0da
Loading
Loading
Loading
Loading
+24 −5
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.keyboard.shortcut.ui
package com.android.systemui.keyboard.shortcut.ui


import android.app.Dialog
import android.app.Dialog
import android.content.res.Resources
import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_ALLOW_ACTION_KEY_EVENTS
import android.view.WindowManager.LayoutParams.PRIVATE_FLAG_ALLOW_ACTION_KEY_EVENTS
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.layout.width
@@ -26,6 +27,7 @@ import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCustomizationRequestInfo
import com.android.systemui.keyboard.shortcut.shared.model.ShortcutCustomizationRequestInfo
import com.android.systemui.keyboard.shortcut.ui.composable.ShortcutCustomizationDialog
import com.android.systemui.keyboard.shortcut.ui.composable.ShortcutCustomizationDialog
import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCustomizationUiState
import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCustomizationUiState
@@ -34,6 +36,8 @@ import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCustomizationUiSt
import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCustomizationUiState.ResetShortcutDialog
import com.android.systemui.keyboard.shortcut.ui.model.ShortcutCustomizationUiState.ResetShortcutDialog
import com.android.systemui.keyboard.shortcut.ui.viewmodel.ShortcutCustomizationViewModel
import com.android.systemui.keyboard.shortcut.ui.viewmodel.ShortcutCustomizationViewModel
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.lifecycle.ExclusiveActivatable
import com.android.systemui.res.R
import com.android.systemui.statusbar.phone.SystemUIDialog
import com.android.systemui.statusbar.phone.SystemUIDialogFactory
import com.android.systemui.statusbar.phone.SystemUIDialogFactory
import com.android.systemui.statusbar.phone.create
import com.android.systemui.statusbar.phone.create
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedFactory
@@ -46,6 +50,7 @@ class ShortcutCustomizationDialogStarter
constructor(
constructor(
    viewModelFactory: ShortcutCustomizationViewModel.Factory,
    viewModelFactory: ShortcutCustomizationViewModel.Factory,
    private val dialogFactory: SystemUIDialogFactory,
    private val dialogFactory: SystemUIDialogFactory,
    @Main private val resources: Resources,
) : ExclusiveActivatable() {
) : ExclusiveActivatable() {


    private var dialog: Dialog? = null
    private var dialog: Dialog? = null
@@ -97,13 +102,27 @@ constructor(
                    coroutineScope.launch { viewModel.resetAllCustomShortcuts() }
                    coroutineScope.launch { viewModel.resetAllCustomShortcuts() }
                },
                },
            )
            )
            dialog.setOnDismissListener { viewModel.onDialogDismissed() }
            setDialogProperties(dialog, uiState)
        }
    }


    private fun setDialogProperties(dialog: SystemUIDialog, uiState: ShortcutCustomizationUiState) {
        dialog.setOnDismissListener { viewModel.onDialogDismissed() }
        dialog.setTitle(
            resources.getString(
                when (uiState) {
                    is AddShortcutDialog ->
                        R.string.shortcut_customize_mode_add_shortcut_description
                    is DeleteShortcutDialog ->
                        R.string.shortcut_customize_mode_remove_shortcut_description
                    else -> R.string.shortcut_customize_mode_reset_shortcut_description
                }
            )
        )
        // By default, apps cannot intercept action key. The system always handles it. This
        // By default, apps cannot intercept action key. The system always handles it. This
        // flag is needed to enable customisation dialog window to intercept action key
        // flag is needed to enable customisation dialog window to intercept action key
        dialog.window?.addPrivateFlags(PRIVATE_FLAG_ALLOW_ACTION_KEY_EVENTS)
        dialog.window?.addPrivateFlags(PRIVATE_FLAG_ALLOW_ACTION_KEY_EVENTS)
    }
    }
    }


    @AssistedFactory
    @AssistedFactory
    interface Factory {
    interface Factory {
+1 −0
Original line number Original line Diff line number Diff line
@@ -211,6 +211,7 @@ val Kosmos.shortcutCustomizationDialogStarterFactory by
                return ShortcutCustomizationDialogStarter(
                return ShortcutCustomizationDialogStarter(
                    shortcutCustomizationViewModelFactory,
                    shortcutCustomizationViewModelFactory,
                    systemUIDialogFactory,
                    systemUIDialogFactory,
                    mainResources,
                )
                )
            }
            }
        }
        }