Skip to content

Commit

Permalink
add restart dialog for edge to edge setting
Browse files Browse the repository at this point in the history
  • Loading branch information
UrAvgCode committed Feb 16, 2025
1 parent 01c3a3f commit 6bff0be
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,10 @@ import androidx.compose.runtime.mutableLongStateOf
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import com.uravgcode.chooser.composables.settings.RestartDialog
import com.uravgcode.chooser.composables.settings.SettingsRowPercentSlider
import com.uravgcode.chooser.composables.settings.SettingsRowSwitch
import com.uravgcode.chooser.composables.settings.SettingsRowTimeSlider
Expand All @@ -49,13 +51,22 @@ import com.uravgcode.chooser.utilities.SettingsManager
@Composable
@OptIn(ExperimentalMaterial3Api::class)
fun SettingsScreen(onNavigateBack: () -> Unit) {
val context = LocalContext.current
val showRestartDialog = remember { mutableStateOf(false) }

val isSoundEnabled = remember { mutableStateOf(SettingsManager.soundEnabled) }
val isVibrationEnabled = remember { mutableStateOf(SettingsManager.vibrationEnabled) }
val isEdgeToEdgeEnabled = remember { mutableStateOf(SettingsManager.edgeToEdgeEnabled) }
val circleSizeFactor = remember { mutableFloatStateOf(SettingsManager.circleSizeFactor) }
val circleLifetime = remember { mutableLongStateOf(SettingsManager.circleLifetime) }
val orderCircleLifetime = remember { mutableLongStateOf(SettingsManager.orderCircleLifetime) }

RestartDialog(
showRestartDialog = showRestartDialog.value,
onDismiss = { showRestartDialog.value = false },
context = context
)

Scaffold(
topBar = {
TopAppBar(
Expand Down Expand Up @@ -111,6 +122,7 @@ fun SettingsScreen(onNavigateBack: () -> Unit) {
onCheckedChange = { isChecked ->
isEdgeToEdgeEnabled.value = isChecked
SettingsManager.edgeToEdgeEnabled = isChecked
showRestartDialog.value = true
}
)

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/*
* Copyright (C) 2025 UrAvgCode
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*
* @author UrAvgCode
* @description RestartDialog shows a restart dialog if a setting requires a restart to take effect.
*/

package com.uravgcode.chooser.composables.settings

import android.app.Activity
import android.content.Context
import android.content.Intent
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import com.uravgcode.chooser.MainActivity

@Composable
fun RestartDialog(
showRestartDialog: Boolean,
onDismiss: () -> Unit,
context: Context
) {
if (showRestartDialog) {
AlertDialog(
onDismissRequest = { onDismiss() },
title = { Text(text = "Restart Required") },
text = { Text(text = "Changes will take effect after restart. Do you want to restart now?") },
confirmButton = {
Button(onClick = {
onDismiss()
val intent = Intent(context, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
context.startActivity(intent)
if (context is Activity) {
context.finish()
}
}) {
Text("Restart")
}
},
dismissButton = {
Button(onClick = { onDismiss() }) {
Text("Cancel")
}
}
)
}
}

0 comments on commit 6bff0be

Please sign in to comment.