diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1a28ecb..319085e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -23,8 +23,8 @@ android { applicationId = "fr.benju.tasks" minSdk = 26 targetSdk = 36 - versionCode = 1 - versionName = "1.0.0" + versionCode = 2 + versionName = "1.0.1" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/feature/settings/src/main/java/fr/benju/tasks/feature/settings/SettingsScreen.kt b/feature/settings/src/main/java/fr/benju/tasks/feature/settings/SettingsScreen.kt index aae1f4b..3af4e43 100644 --- a/feature/settings/src/main/java/fr/benju/tasks/feature/settings/SettingsScreen.kt +++ b/feature/settings/src/main/java/fr/benju/tasks/feature/settings/SettingsScreen.kt @@ -2,6 +2,9 @@ package fr.benju.tasks.feature.settings +import android.content.Intent +import android.net.Uri +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row @@ -22,6 +25,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp @@ -34,6 +38,7 @@ fun SettingsScreen( onBack: () -> Unit = {} ) { val isDarkMode by viewModel.darkModeFlow.collectAsStateWithLifecycle() + val context = LocalContext.current Scaffold( topBar = { @@ -77,10 +82,91 @@ fun SettingsScreen( ) Text( - text = stringResource(R.string.settings_version), - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant + text = stringResource(R.string.settings_about), + style = MaterialTheme.typography.titleMedium, + modifier = Modifier.padding(bottom = 8.dp) ) + + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { + val intent = Intent(Intent.ACTION_SENDTO).apply { + data = Uri.parse("mailto:begonin@gmail.com") + } + runCatching { context.startActivity(intent) } + } + .padding(vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(R.string.settings_contact_support), + style = MaterialTheme.typography.bodyMedium + ) + } + + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { + val intent = Intent(Intent.ACTION_VIEW, Uri.parse("https://benju.fr/support.html")) + runCatching { context.startActivity(intent) } + } + .padding(vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(R.string.settings_support_me), + style = MaterialTheme.typography.bodyMedium + ) + } + + Row( + modifier = Modifier + .fillMaxWidth() + .clickable { + val intent = Intent( + Intent.ACTION_VIEW, + Uri.parse("market://details?id=${context.packageName}") + ).apply { + addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_DOCUMENT or Intent.FLAG_ACTIVITY_MULTIPLE_TASK) + } + val fallback = Intent( + Intent.ACTION_VIEW, + Uri.parse("https://play.google.com/store/apps/details?id=${context.packageName}") + ) + runCatching { context.startActivity(intent) } + .onFailure { runCatching { context.startActivity(fallback) } } + } + .padding(vertical = 12.dp), + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(R.string.settings_rate_app), + style = MaterialTheme.typography.bodyMedium + ) + } + + Row( + modifier = Modifier + .fillMaxWidth() + .padding(vertical = 12.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Text( + text = stringResource(R.string.settings_version), + style = MaterialTheme.typography.bodyMedium + ) + val versionName = runCatching { + context.packageManager.getPackageInfo(context.packageName, 0).versionName.orEmpty() + }.getOrDefault("") + Text( + text = versionName, + style = MaterialTheme.typography.bodyMedium, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } } } } diff --git a/feature/settings/src/main/res/values-de/strings.xml b/feature/settings/src/main/res/values-de/strings.xml index f06be5e..4ea9b0a 100644 --- a/feature/settings/src/main/res/values-de/strings.xml +++ b/feature/settings/src/main/res/values-de/strings.xml @@ -2,7 +2,11 @@ Einstellungen Dunkelmodus - Version 1.0.0 + Über + Support kontaktieren + Unterstütze mich + App bewerten + Version Zurück diff --git a/feature/settings/src/main/res/values-es/strings.xml b/feature/settings/src/main/res/values-es/strings.xml index 4ea8125..1ec7ffd 100644 --- a/feature/settings/src/main/res/values-es/strings.xml +++ b/feature/settings/src/main/res/values-es/strings.xml @@ -2,7 +2,11 @@ Ajustes Modo oscuro - Versión 1.0.0 + Acerca de + Contactar soporte + Apóyame + Valorar la aplicación + Versión Atrás diff --git a/feature/settings/src/main/res/values-fr/strings.xml b/feature/settings/src/main/res/values-fr/strings.xml index af24c3f..836346d 100644 --- a/feature/settings/src/main/res/values-fr/strings.xml +++ b/feature/settings/src/main/res/values-fr/strings.xml @@ -2,7 +2,11 @@ Paramètres Mode sombre - Version 1.0.0 + À propos + Contacter le support + Me soutenir + Noter l\'application + Version Retour diff --git a/feature/settings/src/main/res/values-it/strings.xml b/feature/settings/src/main/res/values-it/strings.xml index aca6372..f38dbd5 100644 --- a/feature/settings/src/main/res/values-it/strings.xml +++ b/feature/settings/src/main/res/values-it/strings.xml @@ -2,7 +2,11 @@ Impostazioni Modalità scura - Versione 1.0.0 + Informazioni + Contatta supporto + Supportami + Valuta l\'app + Versione Indietro diff --git a/feature/settings/src/main/res/values/strings.xml b/feature/settings/src/main/res/values/strings.xml index cb79452..ea284cc 100644 --- a/feature/settings/src/main/res/values/strings.xml +++ b/feature/settings/src/main/res/values/strings.xml @@ -3,7 +3,13 @@ Settings Dark Mode - Version 1.0.0 + + + About + Contact Support + Support me + Rate the app + Version Back