diff --git a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/MemoApplication.kt b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/MemoApplication.kt index 57b6e80..64c2b4e 100644 --- a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/MemoApplication.kt +++ b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/MemoApplication.kt @@ -7,7 +7,7 @@ import android.content.Context import android.os.Build import fr.uparis.diamantkennel.memorisationapplication.data.QuestionsDB -const val CHANNEL_ID = "MY_CHANNEL_ID" +const val CHANNEL_ID = "REMINDERS" class MemoApplication : Application() { val database: QuestionsDB by lazy { QuestionsDB.getDataBase(this) } diff --git a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/SettingsScreen.kt b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/SettingsScreen.kt index a5022ad..c206e6c 100644 --- a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/SettingsScreen.kt +++ b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/SettingsScreen.kt @@ -33,6 +33,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.colorResource +import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.window.Dialog @@ -77,10 +78,9 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel( CleanStatDialog(model::cleanStats) { cleanStatRequest = false } } - if (choiceTimeNotifRequest) - { + if (choiceTimeNotifRequest) { ChoiceTimeNotifDialog( - { (model::choiceTimeNotif)(state, context) }, + { model.choiceTimeNotif(state, context) }, { choiceTimeNotifRequest = false }, state ) @@ -96,35 +96,10 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel( Divider(color = Color.Gray) Spacer(modifier = Modifier.padding(top = 10.dp)) - Text(text = "Gestion", fontSize = 30.sp) + Text(text = context.getString(R.string.notification), fontSize = 30.sp) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceEvenly - ) { - Button( - onClick = { deletionDBRequest = true }, - colors = ButtonDefaults.buttonColors(containerColor = colorResource(id = R.color.red)) - ) { - Text(text = context.getString(R.string.main_button_deletebase)) - } - - Button( - onClick = { cleanStatRequest = true }, - colors = ButtonDefaults.buttonColors(containerColor = colorResource(id = R.color.red)) - ) { - Text(text = context.getString(R.string.clean_stat_button)) - } - } - - Spacer(modifier = Modifier.padding(top = 10.dp)) - Divider(color = Color.Gray) - Spacer(modifier = Modifier.padding(top = 10.dp)) - - Text(text = "Notifications", fontSize = 30.sp) - Column( - modifier = Modifier.fillMaxWidth(), - horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.SpaceEvenly ) { Button( enabled = !permissionNotif, @@ -143,6 +118,30 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel( Text(text = context.getString(R.string.time_notif_button)) } } + + Spacer(modifier = Modifier.padding(top = 10.dp)) + Divider(color = Color.Gray) + Spacer(modifier = Modifier.padding(top = 10.dp)) + + Text(text = context.getString(R.string.gestion), fontSize = 30.sp) + Row( + modifier = Modifier.fillMaxWidth(), + horizontalArrangement = Arrangement.SpaceEvenly + ) { + Button( + onClick = { deletionDBRequest = true }, + colors = ButtonDefaults.buttonColors(containerColor = colorResource(id = R.color.red)) + ) { + Text(text = context.getString(R.string.main_button_deletebase)) + } + + Button( + onClick = { cleanStatRequest = true }, + colors = ButtonDefaults.buttonColors(containerColor = colorResource(id = R.color.red)) + ) { + Text(text = context.getString(R.string.clean_stat_button)) + } + } } } @@ -197,7 +196,7 @@ fun CleanStatDialog(confirm: () -> Unit, dismiss: () -> Unit) = @OptIn(ExperimentalMaterial3Api::class) @Composable fun ChoiceTimeNotifDialog(confirm: () -> Unit, dismiss: () -> Unit, state: TimePickerState) { - Dialog(onDismissRequest = { dismiss() }) { + Dialog(onDismissRequest = dismiss) { Card( modifier = Modifier .padding(16.dp) @@ -209,23 +208,16 @@ fun ChoiceTimeNotifDialog(confirm: () -> Unit, dismiss: () -> Unit, state: TimeP modifier = Modifier.padding(16.dp), horizontalAlignment = Alignment.CenterHorizontally ) { - Text(text = LocalContext.current.getString(R.string.time_notif), fontSize = 30.sp) - Text(text = LocalContext.current.getString(R.string.time_notif_desc)) + Text( + text = LocalContext.current.getString(R.string.time_notif), + fontSize = 30.sp, + textAlign = TextAlign.Center + ) - Spacer(modifier = Modifier.padding(top = 10.dp)) TimePicker(state = state, layoutType = TimePickerLayoutType.Vertical) - Spacer(modifier = Modifier.padding(top = 10.dp)) - Row( - modifier = Modifier.fillMaxWidth(), - horizontalArrangement = Arrangement.SpaceEvenly - ) { - Button(onClick = dismiss) { - Text(text = LocalContext.current.getString(R.string.no)) - } - Button(onClick = confirm) { - Text(text = LocalContext.current.getString(R.string.yes)) - } + Button(onClick = confirm) { + Text(text = LocalContext.current.getString(R.string.confirm)) } } } diff --git a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/ui/SettingsViewModel.kt b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/ui/SettingsViewModel.kt index d0f4413..7aa6dfa 100644 --- a/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/ui/SettingsViewModel.kt +++ b/app/src/main/java/fr/uparis/diamantkennel/memorisationapplication/ui/SettingsViewModel.kt @@ -4,7 +4,6 @@ import android.app.Application import android.content.Context import android.content.pm.PackageManager import android.os.Build -import android.util.Log import androidx.activity.result.ActivityResultLauncher import androidx.annotation.RequiresApi import androidx.compose.material3.ExperimentalMaterial3Api @@ -49,6 +48,8 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application val statTotalGood = stats.data.map { it[statsKeyTotalGood] ?: 0 } val statTotalBad = stats.data.map { it[statsKeyTotalBad] ?: 0 } + var prefConfig = stats.data.map { TimeConfig(it[notifH] ?: 8, it[notifM] ?: 0) } + val deletionDB = mutableStateOf(false) val deletionStat = mutableStateOf(false) var notif = mutableStateOf(false) @@ -81,7 +82,6 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application state.hour, state.minute ) - Log.d("Periodic", "config=$newConfig") save(newConfig) schedule(newConfig, context) } @@ -105,7 +105,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application context.checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED } - fun save(config: TimeConfig) { + private fun save(config: TimeConfig) { viewModelScope.launch { stats.edit { it[notifH] = config.hour @@ -114,13 +114,6 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application } } - val prefConfig = stats.data.map { - TimeConfig( - it[notifH] ?: 8, - it[notifM] ?: 0 - ) - } - private fun schedule(config: TimeConfig, context: Context) { val wm = WorkManager.getInstance(context) wm.cancelAllWork() @@ -136,10 +129,9 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application if (target.before(now)) target.add(Calendar.DAY_OF_YEAR, 1) val delta = target.timeInMillis - now.timeInMillis - val request = PeriodicWorkRequest.Builder(RappelWorker::class.java, 1, TimeUnit.DAYS) + + return PeriodicWorkRequest.Builder(RappelWorker::class.java, 1, TimeUnit.DAYS) .setInitialDelay(delta, TimeUnit.MILLISECONDS) .build() - Log.d("Periodic", "request: $request") - return request } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 25f66b0..e1b0908 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -57,5 +57,7 @@ Il est temps de réviser ! Modifier heure de rappel Choix heure de rappel - Choisissez l\'heure à laquelle vous souhaitez être notifié + Gestion + Notifications + Confirmer