minor changes
This commit is contained in:
parent
7ca1044a96
commit
cb9a063e68
4 changed files with 45 additions and 59 deletions
|
@ -7,7 +7,7 @@ import android.content.Context
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import fr.uparis.diamantkennel.memorisationapplication.data.QuestionsDB
|
import fr.uparis.diamantkennel.memorisationapplication.data.QuestionsDB
|
||||||
|
|
||||||
const val CHANNEL_ID = "MY_CHANNEL_ID"
|
const val CHANNEL_ID = "REMINDERS"
|
||||||
|
|
||||||
class MemoApplication : Application() {
|
class MemoApplication : Application() {
|
||||||
val database: QuestionsDB by lazy { QuestionsDB.getDataBase(this) }
|
val database: QuestionsDB by lazy { QuestionsDB.getDataBase(this) }
|
||||||
|
|
|
@ -33,6 +33,7 @@ import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.res.colorResource
|
import androidx.compose.ui.res.colorResource
|
||||||
|
import androidx.compose.ui.text.style.TextAlign
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.unit.sp
|
import androidx.compose.ui.unit.sp
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
|
@ -77,10 +78,9 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel(
|
||||||
CleanStatDialog(model::cleanStats) { cleanStatRequest = false }
|
CleanStatDialog(model::cleanStats) { cleanStatRequest = false }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (choiceTimeNotifRequest)
|
if (choiceTimeNotifRequest) {
|
||||||
{
|
|
||||||
ChoiceTimeNotifDialog(
|
ChoiceTimeNotifDialog(
|
||||||
{ (model::choiceTimeNotif)(state, context) },
|
{ model.choiceTimeNotif(state, context) },
|
||||||
{ choiceTimeNotifRequest = false },
|
{ choiceTimeNotifRequest = false },
|
||||||
state
|
state
|
||||||
)
|
)
|
||||||
|
@ -96,35 +96,10 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel(
|
||||||
Divider(color = Color.Gray)
|
Divider(color = Color.Gray)
|
||||||
Spacer(modifier = Modifier.padding(top = 10.dp))
|
Spacer(modifier = Modifier.padding(top = 10.dp))
|
||||||
|
|
||||||
Text(text = "Gestion", fontSize = 30.sp)
|
Text(text = context.getString(R.string.notification), fontSize = 30.sp)
|
||||||
Row(
|
Row(
|
||||||
modifier = Modifier.fillMaxWidth(),
|
modifier = Modifier.fillMaxWidth(),
|
||||||
horizontalArrangement = Arrangement.SpaceEvenly
|
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(
|
Button(
|
||||||
enabled = !permissionNotif,
|
enabled = !permissionNotif,
|
||||||
|
@ -143,6 +118,30 @@ fun SettingsScreen(padding: PaddingValues, model: SettingsViewModel = viewModel(
|
||||||
Text(text = context.getString(R.string.time_notif_button))
|
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)
|
@OptIn(ExperimentalMaterial3Api::class)
|
||||||
@Composable
|
@Composable
|
||||||
fun ChoiceTimeNotifDialog(confirm: () -> Unit, dismiss: () -> Unit, state: TimePickerState) {
|
fun ChoiceTimeNotifDialog(confirm: () -> Unit, dismiss: () -> Unit, state: TimePickerState) {
|
||||||
Dialog(onDismissRequest = { dismiss() }) {
|
Dialog(onDismissRequest = dismiss) {
|
||||||
Card(
|
Card(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.padding(16.dp)
|
.padding(16.dp)
|
||||||
|
@ -209,23 +208,16 @@ fun ChoiceTimeNotifDialog(confirm: () -> Unit, dismiss: () -> Unit, state: TimeP
|
||||||
modifier = Modifier.padding(16.dp),
|
modifier = Modifier.padding(16.dp),
|
||||||
horizontalAlignment = Alignment.CenterHorizontally
|
horizontalAlignment = Alignment.CenterHorizontally
|
||||||
) {
|
) {
|
||||||
Text(text = LocalContext.current.getString(R.string.time_notif), fontSize = 30.sp)
|
Text(
|
||||||
Text(text = LocalContext.current.getString(R.string.time_notif_desc))
|
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)
|
TimePicker(state = state, layoutType = TimePickerLayoutType.Vertical)
|
||||||
Spacer(modifier = Modifier.padding(top = 10.dp))
|
|
||||||
|
|
||||||
Row(
|
Button(onClick = confirm) {
|
||||||
modifier = Modifier.fillMaxWidth(),
|
Text(text = LocalContext.current.getString(R.string.confirm))
|
||||||
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))
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import android.app.Application
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
import android.util.Log
|
|
||||||
import androidx.activity.result.ActivityResultLauncher
|
import androidx.activity.result.ActivityResultLauncher
|
||||||
import androidx.annotation.RequiresApi
|
import androidx.annotation.RequiresApi
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
|
@ -49,6 +48,8 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||||
val statTotalGood = stats.data.map { it[statsKeyTotalGood] ?: 0 }
|
val statTotalGood = stats.data.map { it[statsKeyTotalGood] ?: 0 }
|
||||||
val statTotalBad = stats.data.map { it[statsKeyTotalBad] ?: 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 deletionDB = mutableStateOf(false)
|
||||||
val deletionStat = mutableStateOf(false)
|
val deletionStat = mutableStateOf(false)
|
||||||
var notif = mutableStateOf(false)
|
var notif = mutableStateOf(false)
|
||||||
|
@ -81,7 +82,6 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||||
state.hour,
|
state.hour,
|
||||||
state.minute
|
state.minute
|
||||||
)
|
)
|
||||||
Log.d("Periodic", "config=$newConfig")
|
|
||||||
save(newConfig)
|
save(newConfig)
|
||||||
schedule(newConfig, context)
|
schedule(newConfig, context)
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||||
context.checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
|
context.checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
|
||||||
}
|
}
|
||||||
|
|
||||||
fun save(config: TimeConfig) {
|
private fun save(config: TimeConfig) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch {
|
||||||
stats.edit {
|
stats.edit {
|
||||||
it[notifH] = config.hour
|
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) {
|
private fun schedule(config: TimeConfig, context: Context) {
|
||||||
val wm = WorkManager.getInstance(context)
|
val wm = WorkManager.getInstance(context)
|
||||||
wm.cancelAllWork()
|
wm.cancelAllWork()
|
||||||
|
@ -136,10 +129,9 @@ class SettingsViewModel(application: Application) : AndroidViewModel(application
|
||||||
if (target.before(now))
|
if (target.before(now))
|
||||||
target.add(Calendar.DAY_OF_YEAR, 1)
|
target.add(Calendar.DAY_OF_YEAR, 1)
|
||||||
val delta = target.timeInMillis - now.timeInMillis
|
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)
|
.setInitialDelay(delta, TimeUnit.MILLISECONDS)
|
||||||
.build()
|
.build()
|
||||||
Log.d("Periodic", "request: $request")
|
|
||||||
return request
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,5 +57,7 @@
|
||||||
<string name="notif_reminder_content">Il est temps de réviser !</string>
|
<string name="notif_reminder_content">Il est temps de réviser !</string>
|
||||||
<string name="time_notif_button">Modifier heure de rappel</string>
|
<string name="time_notif_button">Modifier heure de rappel</string>
|
||||||
<string name="time_notif">Choix heure de rappel</string>
|
<string name="time_notif">Choix heure de rappel</string>
|
||||||
<string name="time_notif_desc">Choisissez l\'heure à laquelle vous souhaitez être notifié</string>
|
<string name="gestion">Gestion</string>
|
||||||
|
<string name="notification">Notifications</string>
|
||||||
|
<string name="confirm">Confirmer</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Reference in a new issue