ModeSelectionDialog.kt 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package eu.kanade.presentation.reader.components
  2. import androidx.compose.foundation.layout.Arrangement
  3. import androidx.compose.foundation.layout.Box
  4. import androidx.compose.foundation.layout.Column
  5. import androidx.compose.foundation.layout.Row
  6. import androidx.compose.foundation.layout.Spacer
  7. import androidx.compose.foundation.layout.padding
  8. import androidx.compose.material.icons.Icons
  9. import androidx.compose.material.icons.outlined.Check
  10. import androidx.compose.material3.FilledTonalButton
  11. import androidx.compose.material3.Icon
  12. import androidx.compose.material3.MaterialTheme
  13. import androidx.compose.material3.OutlinedButton
  14. import androidx.compose.material3.Surface
  15. import androidx.compose.material3.Text
  16. import androidx.compose.runtime.Composable
  17. import androidx.compose.ui.Alignment
  18. import androidx.compose.ui.Modifier
  19. import androidx.compose.ui.tooling.preview.PreviewLightDark
  20. import androidx.compose.ui.unit.dp
  21. import eu.kanade.presentation.theme.TachiyomiPreviewTheme
  22. import tachiyomi.i18n.MR
  23. import tachiyomi.presentation.core.components.SettingsItemsPaddings
  24. import tachiyomi.presentation.core.components.material.padding
  25. import tachiyomi.presentation.core.i18n.stringResource
  26. @Composable
  27. fun ModeSelectionDialog(
  28. onApply: () -> Unit,
  29. onUseDefault: (() -> Unit)? = null,
  30. content: @Composable () -> Unit,
  31. ) {
  32. Box(modifier = Modifier.padding(vertical = 16.dp)) {
  33. Column {
  34. content()
  35. Row(
  36. modifier = Modifier.padding(
  37. horizontal = SettingsItemsPaddings.Horizontal,
  38. ),
  39. ) {
  40. onUseDefault?.let {
  41. OutlinedButton(onClick = it) {
  42. Text(text = stringResource(MR.strings.action_revert_to_default))
  43. }
  44. }
  45. Spacer(modifier = Modifier.weight(1f))
  46. FilledTonalButton(
  47. onClick = onApply,
  48. ) {
  49. Row(
  50. horizontalArrangement = Arrangement.spacedBy(MaterialTheme.padding.small),
  51. verticalAlignment = Alignment.CenterVertically,
  52. ) {
  53. Icon(
  54. imageVector = Icons.Outlined.Check,
  55. contentDescription = null,
  56. )
  57. Text(text = stringResource(MR.strings.action_apply))
  58. }
  59. }
  60. }
  61. }
  62. }
  63. }
  64. @PreviewLightDark
  65. @Composable
  66. private fun Preview() {
  67. TachiyomiPreviewTheme {
  68. Surface {
  69. Column {
  70. ModeSelectionDialog(
  71. onApply = {},
  72. onUseDefault = {},
  73. ) {
  74. Text("Dummy content")
  75. }
  76. ModeSelectionDialog(
  77. onApply = {},
  78. ) {
  79. Text("Dummy content without default")
  80. }
  81. }
  82. }
  83. }
  84. }