diff --git a/app/src/main/java/sh/sar/isodroid/ui/screens/SettingsScreen.kt b/app/src/main/java/sh/sar/isodroid/ui/screens/SettingsScreen.kt index 2bda423..c01da9d 100644 --- a/app/src/main/java/sh/sar/isodroid/ui/screens/SettingsScreen.kt +++ b/app/src/main/java/sh/sar/isodroid/ui/screens/SettingsScreen.kt @@ -47,6 +47,7 @@ import androidx.compose.material.icons.filled.Folder import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.Notifications import androidx.compose.material.icons.filled.Security +import androidx.compose.material.icons.filled.Warning import androidx.compose.material3.AlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults @@ -58,6 +59,7 @@ import androidx.compose.material3.IconButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Scaffold +import androidx.compose.material3.Switch import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.material3.TopAppBar @@ -115,6 +117,10 @@ fun SettingsScreen( ) } + // USB warning preference + val prefs = remember { context.getSharedPreferences("iso_drive_prefs", android.content.Context.MODE_PRIVATE) } + var showUsbWarning by remember { mutableStateOf(!prefs.getBoolean("skip_usb_warning", false)) } + // Re-check permissions when returning to the app if (activity != null) { androidx.compose.runtime.DisposableEffect(activity) { @@ -246,6 +252,61 @@ fun SettingsScreen( HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp)) + // Warnings section + SectionHeader(title = "Warnings") + + Card( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + colors = CardDefaults.cardColors( + containerColor = MaterialTheme.colorScheme.surfaceVariant + ) + ) { + Row( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp), + horizontalArrangement = Arrangement.SpaceBetween, + verticalAlignment = Alignment.CenterVertically + ) { + Row( + verticalAlignment = Alignment.CenterVertically, + modifier = Modifier.weight(1f) + ) { + Icon( + imageVector = Icons.Default.Warning, + contentDescription = null, + tint = MaterialTheme.colorScheme.primary, + modifier = Modifier.size(24.dp) + ) + Spacer(modifier = Modifier.width(12.dp)) + Column { + Text( + text = "USB restart warning", + style = MaterialTheme.typography.titleSmall + ) + Spacer(modifier = Modifier.height(4.dp)) + Text( + text = "Show warning before mount/unmount about USB service interruption", + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant + ) + } + } + Spacer(modifier = Modifier.width(12.dp)) + Switch( + checked = showUsbWarning, + onCheckedChange = { enabled -> + showUsbWarning = enabled + prefs.edit().putBoolean("skip_usb_warning", !enabled).apply() + } + ) + } + } + + HorizontalDivider(modifier = Modifier.padding(horizontal = 16.dp)) + // About section SectionHeader(title = "About")