From cd700a4ab99e40868b32e4ea9bd27e275241b272 Mon Sep 17 00:00:00 2001 From: michaelbel Date: Sun, 11 Feb 2024 19:00:29 +0300 Subject: [PATCH] Update project --- .../settings/ui/SettingsLanguageDialogTest.kt | 59 ------- .../settings/ui/SettingsLanguageDialog.kt | 162 ------------------ 2 files changed, 221 deletions(-) delete mode 100644 feature/settings-impl/src/androidTest/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialogTest.kt delete mode 100644 feature/settings-impl/src/main/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialog.kt diff --git a/feature/settings-impl/src/androidTest/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialogTest.kt b/feature/settings-impl/src/androidTest/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialogTest.kt deleted file mode 100644 index d29880a11..000000000 --- a/feature/settings-impl/src/androidTest/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialogTest.kt +++ /dev/null @@ -1,59 +0,0 @@ -package org.michaelbel.movies.settings.ui - -import androidx.compose.ui.test.assertHasClickAction -import androidx.compose.ui.test.assertHasNoClickAction -import androidx.compose.ui.test.assertIsDisplayed -import androidx.compose.ui.test.junit4.ComposeContentTestRule -import androidx.compose.ui.test.junit4.createComposeRule -import androidx.compose.ui.test.onNodeWithTag -import org.junit.Rule -import org.junit.Test -import org.michaelbel.movies.common.localization.model.AppLanguage -import org.michaelbel.movies.ui.theme.MoviesTheme - -internal class SettingsLanguageDialogTest { - - @get:Rule - val composeTestRule: ComposeContentTestRule = createComposeRule() - - @Test - fun testSettingsLanguageDialog() { - composeTestRule.setContent { - MoviesTheme { - SettingLanguageDialog( - currentLanguage = CURRENT_LANGUAGE, - onLanguageSelect = {}, - onDismissRequest = {} - ) - } - } - - composeTestRule - .onNodeWithTag(testTag = "ConfirmTextButton", useUnmergedTree = true) - .assertIsDisplayed() - .assertHasClickAction() - - composeTestRule - .onNodeWithTag(testTag = "ConfirmText", useUnmergedTree = true) - .assertIsDisplayed() - .assertHasNoClickAction() - - composeTestRule - .onNodeWithTag(testTag = "Icon", useUnmergedTree = true) - .assertIsDisplayed() - .assertHasNoClickAction() - - composeTestRule - .onNodeWithTag(testTag = "Title", useUnmergedTree = true) - .assertIsDisplayed() - .assertHasNoClickAction() - - composeTestRule - .onNodeWithTag(testTag = "Content", useUnmergedTree = true) - .assertIsDisplayed() - } - - private companion object { - private val CURRENT_LANGUAGE: AppLanguage = AppLanguage.English - } -} \ No newline at end of file diff --git a/feature/settings-impl/src/main/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialog.kt b/feature/settings-impl/src/main/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialog.kt deleted file mode 100644 index 5ddab1b20..000000000 --- a/feature/settings-impl/src/main/kotlin/org/michaelbel/movies/settings/ui/SettingsLanguageDialog.kt +++ /dev/null @@ -1,162 +0,0 @@ -package org.michaelbel.movies.settings.ui - -import androidx.compose.foundation.ScrollState -import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Text -import androidx.compose.material3.AlertDialog -import androidx.compose.material3.Icon -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.RadioButton -import androidx.compose.material3.RadioButtonDefaults -import androidx.compose.material3.TextButton -import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.testTag -import androidx.compose.ui.res.stringResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.tooling.preview.PreviewParameter -import androidx.compose.ui.unit.dp -import org.michaelbel.movies.common.localization.model.AppLanguage -import org.michaelbel.movies.common.theme.AppTheme -import org.michaelbel.movies.settings.ktx.languageText -import org.michaelbel.movies.settings_impl.R -import org.michaelbel.movies.ui.accessibility.MoviesContentDescription -import org.michaelbel.movies.ui.icons.MoviesIcons -import org.michaelbel.movies.ui.preview.DevicePreviews -import org.michaelbel.movies.ui.preview.provider.LanguagePreviewParameterProvider -import org.michaelbel.movies.ui.theme.MoviesTheme - -@Composable -fun SettingLanguageDialog( - currentLanguage: AppLanguage, - onLanguageSelect: (AppLanguage) -> Unit, - onDismissRequest: () -> Unit -) { - AlertDialog( - onDismissRequest = onDismissRequest, - confirmButton = { - TextButton( - onClick = onDismissRequest, - modifier = Modifier.testTag("ConfirmTextButton") - ) { - Text( - text = stringResource(R.string.settings_action_cancel), - modifier = Modifier.testTag("ConfirmText"), - style = MaterialTheme.typography.labelLarge.copy( - color = MaterialTheme.colorScheme.primary - ) - ) - } - }, - icon = { - Icon( - imageVector = MoviesIcons.Language, - contentDescription = stringResource(MoviesContentDescription.LanguageIcon), - modifier = Modifier.testTag("Icon") - ) - }, - title = { - Text( - text = stringResource(R.string.settings_language), - modifier = Modifier.testTag("Title"), - style = MaterialTheme.typography.headlineSmall.copy( - color = MaterialTheme.colorScheme.onSurface - ) - ) - }, - text = { - SettingLanguageDialogContent( - currentLanguage = currentLanguage, - onLanguageSelect = { language -> - onLanguageSelect(language) - onDismissRequest() - }, - modifier = Modifier.testTag("Content") - ) - }, - shape = RoundedCornerShape(28.dp), - containerColor = MaterialTheme.colorScheme.surface, - iconContentColor = MaterialTheme.colorScheme.secondary, - titleContentColor = MaterialTheme.colorScheme.onSurface - ) -} - -@Composable -private fun SettingLanguageDialogContent( - currentLanguage: AppLanguage, - onLanguageSelect: (AppLanguage) -> Unit, - modifier: Modifier = Modifier -) { - val scrollState: ScrollState = rememberScrollState() - - Column( - modifier = modifier.verticalScroll(scrollState) - ) { - AppLanguage.VALUES.forEach { language: AppLanguage -> - Row( - modifier = Modifier - .fillMaxWidth() - .height(52.dp) - .clickable { onLanguageSelect(language) }, - verticalAlignment = Alignment.CenterVertically - ) { - RadioButton( - selected = currentLanguage == language, - onClick = null, - colors = RadioButtonDefaults.colors( - selectedColor = MaterialTheme.colorScheme.primary, - unselectedColor = MaterialTheme.colorScheme.onPrimaryContainer.copy(alpha = 0.6F) - ), - modifier = Modifier.padding(start = 16.dp) - ) - - Text( - text = language.languageText, - modifier = Modifier.padding(start = 8.dp), - style = MaterialTheme.typography.bodyLarge.copy( - color = MaterialTheme.colorScheme.onPrimaryContainer - ) - ) - } - } - } -} - -@Composable -@DevicePreviews -private fun SettingLanguageDialogPreview( - @PreviewParameter(LanguagePreviewParameterProvider::class) language: AppLanguage -) { - MoviesTheme { - SettingLanguageDialog( - currentLanguage = language, - onLanguageSelect = {}, - onDismissRequest = {} - ) - } -} - -@Composable -@Preview -private fun SettingLanguageDialogAmoledPreview( - @PreviewParameter(LanguagePreviewParameterProvider::class) language: AppLanguage -) { - MoviesTheme( - theme = AppTheme.Amoled - ) { - SettingLanguageDialog( - currentLanguage = language, - onLanguageSelect = {}, - onDismissRequest = {} - ) - } -} \ No newline at end of file