diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AccessibilityScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AccessibilityScreen.kt index beb02633e..82461af4b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AccessibilityScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/AccessibilityScreen.kt @@ -49,6 +49,7 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign @@ -227,7 +228,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenReaderIntroductionIos"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenReaderIntroductionIos"), text = stringResource(R.string.main_accessibility_introduction_screen_reader_introduction_ios), ) DynamicText( @@ -236,7 +239,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenReaderIntroductionAndroid"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenReaderIntroductionAndroid"), text = stringResource(R.string.main_accessibility_introduction_screen_reader_introduction_android), ) Text( @@ -276,7 +281,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenMagnificationScreenToolsIos"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenMagnificationScreenToolsIos"), text = stringResource( R.string.main_accessibility_introduction_screen_magnification_screen_tools_ios, @@ -288,7 +295,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenMagnificationScreenToolsAndroid"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenMagnificationScreenToolsAndroid"), text = stringResource( R.string.main_accessibility_introduction_screen_magnification_screen_tools_android, @@ -309,7 +318,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenMagnificationToolsIos"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenMagnificationToolsIos"), text = stringResource(R.string.main_accessibility_introduction_screen_magnification_tools_ios), ) DynamicText( @@ -318,7 +329,9 @@ fun AccessibilityScreen( .padding( horizontal = SPadding, vertical = SPadding, - ).testTag("mainAccessibilityIntroductionScreenMagnificationToolsAndroid"), + ).semantics { + stateDescription = "link" + }.testTag("mainAccessibilityIntroductionScreenMagnificationToolsAndroid"), text = stringResource(R.string.main_accessibility_introduction_screen_magnification_tools_android), ) InvisibleElement(modifier = modifier) diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DiagnosticsScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DiagnosticsScreen.kt index 738c260ab..a2463ff01 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DiagnosticsScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/DiagnosticsScreen.kt @@ -646,58 +646,53 @@ fun DiagnosticsScreen( }.testTag("mainDiagnosticsRestartConfirmationDialog"), onDismissRequest = dismissRestartConfirmationDialog, ) { - Surface( + Column( modifier = modifier .padding(SPadding) .wrapContentHeight() .wrapContentWidth() - .verticalScroll(rememberScrollState()), + .verticalScroll(rememberScrollState()) + .semantics { + testTagsAsResourceId = true + }.testTag("diagnosticsActivateLoggingContainer"), ) { - Column( - modifier = - modifier - .semantics { - testTagsAsResourceId = true - }.testTag("diagnosticsActivateLoggingContainer"), - ) { - HrefMessageDialog( - text1 = R.string.main_diagnostics_restart_message, - text2 = R.string.main_diagnostics_restart_message_restart_now, - linkText = R.string.main_diagnostics_restart_message_read_more, - linkUrl = R.string.main_diagnostics_restart_message_href, - newLineBeforeLink = true, - newLineBeforeText2 = true, - ) + HrefMessageDialog( + text1 = R.string.main_diagnostics_restart_message, + text2 = R.string.main_diagnostics_restart_message_restart_now, + linkText = R.string.main_diagnostics_restart_message_read_more, + linkUrl = R.string.main_diagnostics_restart_message_href, + newLineBeforeLink = true, + newLineBeforeText2 = true, + ) - CancelAndOkButtonRow( - okButtonTestTag = "hrefMessageDialogOkButton", - cancelButtonTestTag = "hrefMessageDialogCancelButton", - cancelButtonClick = dismissRestartConfirmationDialog, - okButtonClick = { - enableOneTimeLogGeneration = true - diagnosticsViewModel.dataStore.setIsLogFileGenerationEnabled( - true, - ) - closeRestartConfirmationDialog() - sendAccessibilityEvent( - context, - getAccessibilityEventType(), - settingValueChanged, - ) - sharedSettingsViewModel.recreateActivity(true) - }, - cancelButtonTitle = R.string.cancel_button, - okButtonTitle = R.string.ok_button, - cancelButtonContentDescription = - stringResource( - id = R.string.cancel_button, - ).lowercase(), - okButtonContentDescription = stringResource(id = R.string.ok_button).lowercase(), - showCancelButton = true, - ) - InvisibleElement(modifier = modifier) - } + CancelAndOkButtonRow( + okButtonTestTag = "hrefMessageDialogOkButton", + cancelButtonTestTag = "hrefMessageDialogCancelButton", + cancelButtonClick = dismissRestartConfirmationDialog, + okButtonClick = { + enableOneTimeLogGeneration = true + diagnosticsViewModel.dataStore.setIsLogFileGenerationEnabled( + true, + ) + closeRestartConfirmationDialog() + sendAccessibilityEvent( + context, + getAccessibilityEventType(), + settingValueChanged, + ) + sharedSettingsViewModel.recreateActivity(true) + }, + cancelButtonTitle = R.string.cancel_button, + okButtonTitle = R.string.ok_button, + cancelButtonContentDescription = + stringResource( + id = R.string.cancel_button, + ).lowercase(), + okButtonContentDescription = stringResource(id = R.string.ok_button).lowercase(), + showCancelButton = true, + ) + InvisibleElement(modifier = modifier) } } } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptionServicesSettingsScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptionServicesSettingsScreen.kt index 80a411ff1..e36b0930b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptionServicesSettingsScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/EncryptionServicesSettingsScreen.kt @@ -84,6 +84,7 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.ImeAction @@ -201,6 +202,8 @@ fun EncryptionServicesSettingsScreen( val fetchUrlLabel = stringResource(R.string.main_settings_crypto_fetch_url) val postUrlLabel = stringResource(R.string.main_settings_crypto_post_url) + val panelDescription = stringResource(R.string.panel) + val nameChoices = arrayListOf() var index = 0 @@ -518,7 +521,14 @@ fun EncryptionServicesSettingsScreen( ) { OutlinedTextField( label = { - Text(serverLabel) + Text( + text = serverLabel, + modifier = + modifier + .semantics { + stateDescription = panelDescription + }, + ) }, value = nameChoices[settingsCdocNameChoiceInt.intValue], onValueChange = {}, @@ -556,6 +566,7 @@ fun EncryptionServicesSettingsScreen( indication = null, ).semantics { contentDescription = serverLabel + stateDescription = panelDescription }, ) } else { diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/HomeScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/HomeScreen.kt index 837151387..d5749a8f1 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/HomeScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/HomeScreen.kt @@ -61,6 +61,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.isTraversalGroup import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.semantics.traversalIndex import androidx.compose.ui.tooling.preview.Preview @@ -82,6 +83,7 @@ import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding import ee.ria.DigiDoc.ui.theme.Dimensions.iconSizeM import ee.ria.DigiDoc.ui.theme.RIADigiDocTheme import ee.ria.DigiDoc.utils.Route +import ee.ria.DigiDoc.utils.extensions.notAccessible import ee.ria.DigiDoc.utils.snackbar.SnackBarManager import ee.ria.DigiDoc.viewmodel.HomeViewModel import ee.ria.DigiDoc.viewmodel.shared.SharedMenuViewModel @@ -188,7 +190,9 @@ fun HomeScreen( }, sharedMenuViewModel = sharedMenuViewModel, leftIcon = R.drawable.ic_m3_menu_48dp_wght400, + leftIconContentDescription = R.string.main_home_menu_button, title = null, + isPanel = true, onLeftButtonClick = { isMainMenuBottomSheetVisible.value = true isSettingsMenuBottomSheetVisible.value = false @@ -274,10 +278,13 @@ fun HomeScreen( modifier = modifier .padding(end = XSPadding) - .width(iconSizeM), + .width(iconSizeM) + .semantics { + stateDescription = "logo" + }, ) Text( - modifier = modifier, + modifier = modifier.notAccessible(), style = MaterialTheme.typography.displayMedium, color = MaterialTheme.colorScheme.onSurface, text = stringResource(id = R.string.digidoc), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt index c7ee977b0..45e64886f 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InfoScreen.kt @@ -67,6 +67,7 @@ import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview @@ -193,7 +194,12 @@ fun InfoScreen( Image( painter = painterResource(id = R.drawable.eesti_flag), alignment = Alignment.Center, - modifier = modifier.wrapContentSize(), + modifier = + modifier + .wrapContentSize() + .semantics { + stateDescription = "logo" + }, contentDescription = stringResource(id = R.string.main_about_1_logo_text), ) Text( @@ -206,7 +212,12 @@ fun InfoScreen( Image( painter = painterResource(id = R.drawable.eu_flag), alignment = Alignment.Center, - modifier = modifier.wrapContentSize(), + modifier = + modifier + .wrapContentSize() + .semantics { + stateDescription = "logo" + }, contentDescription = stringResource(id = R.string.main_about_2_logo_text), ) Text( @@ -224,23 +235,29 @@ fun InfoScreen( .weight(.65f), horizontalAlignment = Alignment.Start, ) { - Text( - text = stringResource(id = R.string.main_about_ria_digidoc_title), - style = MaterialTheme.typography.titleLarge, - ) - Text( - text = - String.format( - stringResource(id = R.string.main_about_version_title), - BuildConfig.VERSION_NAME + '.' + BuildConfig.VERSION_CODE, - ), - style = MaterialTheme.typography.bodyMedium, - ) + Column( + modifier = modifier.semantics(mergeDescendants = true) {}, + ) { + Text( + text = stringResource(id = R.string.main_about_ria_digidoc_title), + style = MaterialTheme.typography.titleLarge, + ) + Text( + text = + String.format( + stringResource(id = R.string.main_about_version_title), + BuildConfig.VERSION_NAME + '.' + BuildConfig.VERSION_CODE, + ), + style = MaterialTheme.typography.bodyMedium, + ) + } + Text( modifier = modifier.padding(vertical = SPadding), text = stringResource(id = R.string.main_about_info_title), style = MaterialTheme.typography.labelMedium, ) + val helpButtonContentDescriptionText = if (isEstonianLanguageUsed.value) { stringResource(id = R.string.main_home_menu_help) + @@ -265,6 +282,7 @@ fun InfoScreen( ).clip(buttonRoundCornerShape) .semantics { contentDescription = helpButtonContentDescriptionText + stateDescription = "link" testTagsAsResourceId = true }.testTag("mainInfoHelpButton"), colors = diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt index 1794a7d56..89393fc6f 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/fragment/screen/InitScreen.kt @@ -40,6 +40,7 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.tooling.preview.Preview import androidx.navigation.NavHostController @@ -86,7 +87,9 @@ fun InitScreen( top = LPadding, bottom = zeroPadding, end = XLPadding, - ), + ).semantics { + stateDescription = "logo" + }, ) Text( text = stringResource(id = R.string.digidoc_all_caps), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt index 43d093cc7..070823590 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/crypto/RecipientComponent.kt @@ -54,6 +54,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import ee.ria.DigiDoc.R import ee.ria.DigiDoc.cryptolib.Addressee @@ -86,6 +87,7 @@ fun RecipientComponent( ) { val recipientText = stringResource(R.string.crypto_recipient_title) val buttonName = stringResource(id = R.string.button_name) + val panelDescription = stringResource(R.string.panel) if (showRecipientsLoadingIndicator) { Box( @@ -255,6 +257,7 @@ fun RecipientComponent( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("recipientComponentMoreOptionsIconButton"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/info/InfoComponent.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/info/InfoComponent.kt index 124a1eb17..a035a5251 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/info/InfoComponent.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/info/InfoComponent.kt @@ -45,6 +45,7 @@ import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -85,7 +86,8 @@ fun InfoComponent( modifier = modifier .weight(1f) - .fillMaxWidth(), + .fillMaxWidth() + .semantics(mergeDescendants = true) {}, horizontalAlignment = Alignment.Start, ) { Text( @@ -138,6 +140,7 @@ fun InfoComponent( .size(iconSizeXXS) .semantics { testTagsAsResourceId = true + stateDescription = "link" }.testTag("mainAboutComponentLicenseUrlButton"), imageVector = ImageVector.vectorResource(id = R.drawable.ic_m3_open_in_new_48dp_wght400), contentDescription = openButtonContentDescription, diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt index 4faf781eb..756be40df 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/ContainerNameView.kt @@ -57,6 +57,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -96,6 +97,7 @@ fun ContainerNameView( val containerTitleText = stringResource(R.string.container_title) val buttonName = stringResource(id = R.string.button_name) + val panelDescription = stringResource(R.string.panel) Card( modifier = @@ -184,6 +186,7 @@ fun ContainerNameView( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("containerNameMoreOptionsIcon"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/CryptoDataFileItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/CryptoDataFileItem.kt index 4327db715..541b45aa9 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/CryptoDataFileItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/CryptoDataFileItem.kt @@ -46,12 +46,12 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.testTag import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -75,8 +75,8 @@ fun CryptoDataFileItem( onClick: (File) -> Unit, onDataFileMoreOptionsActionButtonClick: (File) -> Unit, ) { - val context = LocalContext.current val fileDescription = stringResource(R.string.file) + val panelDescription = stringResource(R.string.panel) val buttonName = stringResource(id = R.string.button_name) @@ -161,6 +161,7 @@ fun CryptoDataFileItem( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("dataFileItemMoreOptionsIconButton"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DataFileItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DataFileItem.kt index 5b421ff23..b2925d16a 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DataFileItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DataFileItem.kt @@ -51,6 +51,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight @@ -76,6 +77,7 @@ fun DataFileItem( val fileDescription = stringResource(R.string.file) val buttonName = stringResource(id = R.string.button_name) + val panelDescription = stringResource(R.string.panel) Column { dataFiles.forEachIndexed { index, dataFile -> @@ -160,6 +162,7 @@ fun DataFileItem( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("dataFileItemMoreOptionsIconButton"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DynamicText.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DynamicText.kt index 28f5fdae5..b0d4dc339 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DynamicText.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/DynamicText.kt @@ -91,7 +91,7 @@ fun DynamicText( modifier .fillMaxWidth() .then(pressIndicator) - .semantics(mergeDescendants = true) { + .semantics { testTagsAsResourceId = true }.testTag("dynamicTextMessage") .let { diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/Recipient.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/Recipient.kt index ba4922ae5..42baf2578 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/Recipient.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/Recipient.kt @@ -54,6 +54,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.tooling.preview.Preview import ee.ria.DigiDoc.R @@ -81,9 +82,9 @@ fun Recipient( isMoreOptionsButtonShown: Boolean = true, onClick: (recipient: Addressee) -> Unit = {}, ) { - val context = LocalContext.current val recipientText = stringResource(id = R.string.crypto_recipient_title) val buttonName = stringResource(id = R.string.button_name) + val panelDescription = stringResource(R.string.panel) val nameText = if (PersonalCodeValidator.isPersonalCodeValid(recipient.identifier)) { @@ -195,6 +196,7 @@ fun Recipient( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("recipientItemMoreOptionsIconButton"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt index 18f3bc0dc..2c2d2b81f 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/shared/TopBar.kt @@ -59,6 +59,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.heading import androidx.compose.ui.semantics.isTraversalGroup +import androidx.compose.ui.semantics.popup import androidx.compose.ui.semantics.semantics import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.core.net.toUri @@ -95,12 +96,12 @@ fun TopBar( onExtraButtonClick: () -> Unit = {}, showExtraButton: Boolean = false, extraButtonItemCount: Int = 0, + isPanel: Boolean = false, sharedMenuViewModel: SharedMenuViewModel, ) { val context = LocalContext.current var onRightPrimaryButtonClick = onRightPrimaryButtonClick if (onRightPrimaryButtonClick == null) { - @Suppress("AssignedValueIsNeverRead") onRightPrimaryButtonClick = { val browserIntent = Intent( @@ -116,6 +117,8 @@ fun TopBar( val focusManager = LocalFocusManager.current var headingTextLoaded by remember { mutableStateOf(false) } + val panelDescription = stringResource(R.string.panel) + val isEstonianLanguageUsed = remember { mutableStateOf(false) } val isTtsInitialized by sharedMenuViewModel.isTtsInitialized.asFlow().collectAsState(false) @@ -142,7 +145,12 @@ fun TopBar( ), navigationIcon = { IconButton( - modifier = modifier.testTag("toolBarLeftButton"), + modifier = + modifier + .testTag("toolBarLeftButton") + .semantics { + popup() + }, onClick = { // Add debounce to prevent rapid navigation clicks debounceJob?.cancel() @@ -154,7 +162,12 @@ fun TopBar( ) { Icon( imageVector = ImageVector.vectorResource(id = leftIcon), - contentDescription = stringResource(id = leftIconContentDescription), + contentDescription = + if (isPanel) { + "${stringResource(id = leftIconContentDescription)}, $panelDescription" + } else { + stringResource(id = leftIconContentDescription) + }, tint = MaterialTheme.colorScheme.onSurface, modifier = modifier @@ -272,7 +285,11 @@ fun TopBar( ) } IconButton( - modifier = modifier.testTag("toolBarRightSecondaryButton"), + modifier = + modifier + .semantics { + popup() + }.testTag("toolBarRightSecondaryButton"), onClick = { // Add debounce to prevent rapid navigation clicks debounceJob?.cancel() @@ -284,7 +301,12 @@ fun TopBar( ) { Icon( imageVector = ImageVector.vectorResource(id = rightSecondaryIcon), - contentDescription = stringResource(id = rightSecondaryIconContentDescription), + contentDescription = + if (isPanel) { + "${stringResource(id = rightSecondaryIconContentDescription)}, $panelDescription" + } else { + stringResource(id = rightSecondaryIconContentDescription) + }, tint = MaterialTheme.colorScheme.onSurface, modifier = modifier diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureComponent.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureComponent.kt index 8f5bf1d94..d1f0f9e80 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureComponent.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SignatureComponent.kt @@ -54,6 +54,7 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.semantics.contentDescription import androidx.compose.ui.semantics.semantics +import androidx.compose.ui.semantics.stateDescription import androidx.compose.ui.semantics.testTagsAsResourceId import androidx.compose.ui.text.style.TextOverflow import ee.ria.DigiDoc.R @@ -86,10 +87,10 @@ fun SignatureComponent( onClick: (SignatureInterface) -> Unit, onClickMore: (SignatureInterface) -> Unit, ) { - val context = LocalContext.current val signatureText = stringResource(R.string.signature_details_signer_details_title) val buttonName = stringResource(id = R.string.button_name) + val panelDescription = stringResource(R.string.panel) if (showSignaturesLoadingIndicator) { Box( @@ -255,6 +256,7 @@ fun SignatureComponent( modifier = modifier .semantics { + stateDescription = panelDescription testTagsAsResourceId = true }.testTag("signatureComponentMoreOptionsIconButton"), imageVector = ImageVector.vectorResource(R.drawable.ic_more_vert), diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt index 8f2599884..407a0076b 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/SigningNavigation.kt @@ -116,7 +116,6 @@ import ee.ria.DigiDoc.ui.component.signing.bottombar.SigningBottomBar import ee.ria.DigiDoc.ui.component.signing.bottomsheet.ContainerBottomSheet import ee.ria.DigiDoc.ui.component.signing.bottomsheet.DataFileBottomSheet import ee.ria.DigiDoc.ui.component.signing.bottomsheet.SignatureBottomSheet -import ee.ria.DigiDoc.ui.component.signing.bottomsheet.SignedContainerBottomSheet import ee.ria.DigiDoc.ui.theme.Dimensions.MPadding import ee.ria.DigiDoc.ui.theme.Dimensions.SPadding import ee.ria.DigiDoc.ui.theme.Dimensions.XSPadding @@ -292,7 +291,6 @@ fun SigningNavigation( val nestedFile = rememberSaveable { mutableStateOf(null) } val showContainerBottomSheet = remember { mutableStateOf(false) } - val showSignedContainerBottomSheet = remember { mutableStateOf(false) } val showDataFileBottomSheet = remember { mutableStateOf(false) } val showSignatureBottomSheet = remember { mutableStateOf(false) } @@ -1229,21 +1227,6 @@ fun SigningNavigation( onSignatureRemove = { actionSignature = it }, ) - SignedContainerBottomSheet( - modifier = modifier, - showSheet = showSignedContainerBottomSheet, - signedContainer = signedContainer, - isNestedContainer = isNestedContainer, - isXadesContainer = isXadesContainer, - isCadesContainer = isCadesContainer, - signingViewModel = signingViewModel, - navController = navController, - onEncryptClick = onEncryptActionClick, - onExtendSignatureClick = { - // TODO: Implement extend signature click - }, - ) - if (showLoadingScreen.value) { LoadingScreen(modifier = modifier) } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignatureDataItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignatureDataItem.kt index fe5067501..886b53f71 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignatureDataItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignatureDataItem.kt @@ -110,9 +110,9 @@ fun SignatureDataItem( .indication(interactionSource, LocalIndication.current) .semantics(mergeDescendants = true) { if (isLink) { - this.contentDescription = "$contentDescriptionText, $linkName" + this.contentDescription = "$contentDescriptionText $linkName" } else if (isWithCertificate) { - this.contentDescription = "$contentDescriptionText, $buttonName" + this.contentDescription = "$contentDescriptionText $buttonName" } else { this.contentDescription = contentDescriptionText } diff --git a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignerDetailItem.kt b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignerDetailItem.kt index 7515d77ec..a3b783028 100644 --- a/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignerDetailItem.kt +++ b/app/src/main/kotlin/ee/ria/DigiDoc/ui/component/signing/certificate/SignerDetailItem.kt @@ -101,7 +101,7 @@ data class SignerDetailItem( if (value != null) { "${stringResource( id = R.string.signature_method_label, - )}, $value" + )}, link $value" } else { "" }, diff --git a/app/src/main/res/values-et/strings.xml b/app/src/main/res/values-et/strings.xml index 0164a1153..7b960c442 100644 --- a/app/src/main/res/values-et/strings.xml +++ b/app/src/main/res/values-et/strings.xml @@ -388,6 +388,7 @@ Kontrollkoodi laadimine Konteineri failide laadimine Konteineri failid laaditud + Paneel Allkiri diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 37d811938..fc0a60842 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -388,6 +388,7 @@ Control code loading Container files loading Container files loaded + Panel Signature