diff --git a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/AcitivtyExtensions.kt b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/AcitivtyExtensions.kt index 029f09854..39084a47c 100644 --- a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/AcitivtyExtensions.kt +++ b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/AcitivtyExtensions.kt @@ -99,3 +99,12 @@ fun Context.fakeVersionCheck( } } } + +fun ComponentActivity.appOnSdCardCheckCompose( + showConfirmationDialog: () -> Unit +) { + if (!baseConfig.wasAppOnSDShown && isAppInstalledOnSDCard()) { + baseConfig.wasAppOnSDShown = true + showConfirmationDialog() + } +} diff --git a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/ComposeActivityExtensions.kt b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/ComposeActivityExtensions.kt index 8f5bbf2ac..a11004bca 100644 --- a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/ComposeActivityExtensions.kt +++ b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/extensions/ComposeActivityExtensions.kt @@ -27,3 +27,21 @@ fun FakeVersionCheck() { context.fakeVersionCheck(confirmationDialogAlertDialogState::show) } } + +@Composable +fun CheckAppOnSdCard() { + val context = LocalContext.current.getComponentActivity() + val confirmationDialogAlertDialogState = rememberAlertDialogState().apply { + DialogMember { + ConfirmationAlertDialog( + alertDialogState = this, + positive = R.string.ok, + negative = null, + messageId = R.string.app_on_sd_card + ) {} + } + } + LaunchedEffect(Unit) { + context.appOnSdCardCheckCompose(confirmationDialogAlertDialogState::show) + } +} diff --git a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/theme/AppTheme.kt b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/theme/AppTheme.kt index 39378636f..1c224182a 100644 --- a/commons/src/main/kotlin/com/simplemobiletools/commons/compose/theme/AppTheme.kt +++ b/commons/src/main/kotlin/com/simplemobiletools/commons/compose/theme/AppTheme.kt @@ -14,8 +14,7 @@ import com.simplemobiletools.commons.compose.theme.model.Theme import com.simplemobiletools.commons.compose.theme.model.Theme.Companion.systemDefaultMaterialYou @Composable -fun AppThemeSurface( - modifier: Modifier = Modifier, +fun AppTheme( content: @Composable () -> Unit, ) { val view = LocalView.current @@ -37,9 +36,19 @@ fun AppThemeSurface( } TransparentSystemBars() Theme(theme = currentTheme) { + content() + OnContentDisplayed() + } +} + +@Composable +fun AppThemeSurface( + modifier: Modifier = Modifier, + content: @Composable () -> Unit, +) { + AppTheme { Surface(modifier = modifier.fillMaxSize()) { content() - OnContentDisplayed() } } } diff --git a/commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FeatureLockedDialog.kt b/commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FeatureLockedDialog.kt index 4bc69a1b9..03c524adb 100644 --- a/commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FeatureLockedDialog.kt +++ b/commons/src/main/kotlin/com/simplemobiletools/commons/dialogs/FeatureLockedDialog.kt @@ -69,7 +69,7 @@ class FeatureLockedDialog(val activity: Activity, val callback: () -> Unit) { fun FeatureLockedAlertDialog( alertDialogState: AlertDialogState, modifier: Modifier = Modifier, - callback: () -> Unit + cancelCallback: () -> Unit ) { val localContext = LocalContext.current.getActivity() val donateIntent = { @@ -80,12 +80,12 @@ fun FeatureLockedAlertDialog( modifier = modifier .dialogBorder, properties = DialogProperties(dismissOnClickOutside = false, dismissOnBackPress = false), - onDismissRequest = {}, + onDismissRequest = cancelCallback, shape = dialogShape, tonalElevation = dialogElevation, dismissButton = { TextButton(onClick = { - callback() + cancelCallback() alertDialogState.hide() }) { Text(text = stringResource(id = R.string.later)) @@ -94,7 +94,6 @@ fun FeatureLockedAlertDialog( confirmButton = { TextButton(onClick = { donateIntent() - alertDialogState.hide() }) { Text(text = stringResource(id = R.string.purchase)) } @@ -114,7 +113,6 @@ fun FeatureLockedAlertDialog( interactionSource = rememberMutableInteractionSource(), onClick = { donateIntent() - alertDialogState.hide() } ), colorFilter = ColorFilter.tint(dialogTextColor) diff --git a/commons/src/main/res/values-fr/strings.xml b/commons/src/main/res/values-fr/strings.xml index fcf041b0f..b2d3e03ad 100644 --- a/commons/src/main/res/values-fr/strings.xml +++ b/commons/src/main/res/values-fr/strings.xml @@ -1,6 +1,6 @@ - Approuver + OK Annuler Fermer Retour @@ -221,7 +221,7 @@ Nom de fichier (sans .txt) Nom de fichier (sans .json) Nom de fichier (sans .zip) - À partir d\'Android 11, il n\'est plus possible de masquer les fichiers et dossiers de cette manière + À partir d\'Android 11, il n\'est plus possible de cacher les fichiers et dossiers de cette manière Copier Déplacer @@ -396,12 +396,12 @@ Redimensionner Tout sélectionner Sélectionner le texte - Masquer + Cacher Afficher - Masquer le dossier + Cacher le dossier Afficher le dossier - Afficher temporairement les fichiers cachés - Ne plus afficher les fichiers cachés + Afficher les fichiers cachés + Cacher les fichiers cachés Autoriser l\'accès à plus de médias Vous ne pouvez pas partager autant de contenu à la fois Vider et désactiver la corbeille @@ -428,7 +428,7 @@ Ajouter un contact Fonds d\'écran Afficher les numéros de ligne - Masquer les numéros de ligne + Cacher les numéros de ligne Minuteur de veille Débloquer @@ -514,7 +514,7 @@ Aujourd\'hui Demain Tous les jours - Masquer l\'année + Cacher l\'année secondes minutes heures @@ -757,8 +757,8 @@ Gérer les dossiers exclus Tout enlever Voulez-vous vraiment enlever tous les dossiers de la liste d\'exclusions \? Ceci ne supprimera pas les dossiers, ni leur contenu. - Afficher temporairement les dossiers exclus - Masquer les dossiers exclus + Afficher les dossiers exclus + Cacher les dossiers exclus Gérer les onglets affichés Onglet à ouvrir au démarrage de l\'application @@ -779,7 +779,7 @@ La corbeille est vide Le déplacement des éléments de la corbeille est désactivé. Veuillez utiliser la fonction de restauration Afficher la corbeille - Masquer la corbeille + Cacher la corbeille Ouvrir la corbeille Ne pas utiliser la corbeille, supprimer directement les fichiers @@ -930,7 +930,7 @@ Envoyez vos commentaires ou suggestions à Passer à la version « Pro » Plus d\'applications - Plus d\'applications du même développeur + Plus d\'applications Inviter des amis Salut, viens voir %1$s sur %2$s Inviter via @@ -1195,4 +1195,4 @@ N\'oubliez pas que si vous désinstallez une application payante dans les deux heures qui suivent son achat, le remboursement sera automatique. À tout moment, si vous souhaitez un remboursement, contactez-nous à l\'adresse électronique suivante : hello@simplemobiletools.com et vous l\'obtiendrez dans les plus brefs délais. Cela facilite l\'essai de nos applications :) Une suite d\'applications Android simples, à code source ouvert, comprenant des widgets personnalisables, sans publicités ni permissions inutiles. - \ No newline at end of file + diff --git a/samples/src/main/kotlin/com/simplemobiletools/commons/samples/activities/TestDialogActivity.kt b/samples/src/main/kotlin/com/simplemobiletools/commons/samples/activities/TestDialogActivity.kt index 5f1266533..0c48e64f8 100644 --- a/samples/src/main/kotlin/com/simplemobiletools/commons/samples/activities/TestDialogActivity.kt +++ b/samples/src/main/kotlin/com/simplemobiletools/commons/samples/activities/TestDialogActivity.kt @@ -195,7 +195,7 @@ class TestDialogActivity : ComponentActivity() { @Composable private fun getFeatureLockedAlertDialogState() = rememberAlertDialogState().apply { DialogMember { - FeatureLockedAlertDialog(alertDialogState = this, callback = {}) + FeatureLockedAlertDialog(alertDialogState = this, cancelCallback = {}) } }