MangaDialogs.kt 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package eu.kanade.presentation.manga.components
  2. import androidx.compose.foundation.layout.BoxWithConstraints
  3. import androidx.compose.foundation.layout.fillMaxWidth
  4. import androidx.compose.material3.AlertDialog
  5. import androidx.compose.material3.Text
  6. import androidx.compose.material3.TextButton
  7. import androidx.compose.runtime.Composable
  8. import androidx.compose.runtime.getValue
  9. import androidx.compose.runtime.mutableIntStateOf
  10. import androidx.compose.runtime.saveable.rememberSaveable
  11. import androidx.compose.runtime.setValue
  12. import androidx.compose.ui.Alignment
  13. import androidx.compose.ui.Modifier
  14. import androidx.compose.ui.unit.DpSize
  15. import androidx.compose.ui.unit.dp
  16. import kotlinx.collections.immutable.toImmutableList
  17. import tachiyomi.domain.manga.interactor.FetchInterval
  18. import tachiyomi.i18n.MR
  19. import tachiyomi.presentation.core.components.WheelTextPicker
  20. import tachiyomi.presentation.core.i18n.localize
  21. @Composable
  22. fun DeleteChaptersDialog(
  23. onDismissRequest: () -> Unit,
  24. onConfirm: () -> Unit,
  25. ) {
  26. AlertDialog(
  27. onDismissRequest = onDismissRequest,
  28. dismissButton = {
  29. TextButton(onClick = onDismissRequest) {
  30. Text(text = localize(MR.strings.action_cancel))
  31. }
  32. },
  33. confirmButton = {
  34. TextButton(
  35. onClick = {
  36. onDismissRequest()
  37. onConfirm()
  38. },
  39. ) {
  40. Text(text = localize(MR.strings.action_ok))
  41. }
  42. },
  43. title = {
  44. Text(text = localize(MR.strings.are_you_sure))
  45. },
  46. text = {
  47. Text(text = localize(MR.strings.confirm_delete_chapters))
  48. },
  49. )
  50. }
  51. @Composable
  52. fun SetIntervalDialog(
  53. interval: Int,
  54. onDismissRequest: () -> Unit,
  55. onValueChanged: (Int) -> Unit,
  56. ) {
  57. var selectedInterval by rememberSaveable { mutableIntStateOf(if (interval < 0) -interval else 0) }
  58. AlertDialog(
  59. onDismissRequest = onDismissRequest,
  60. title = { Text(text = localize(MR.strings.manga_modify_calculated_interval_title)) },
  61. text = {
  62. BoxWithConstraints(
  63. modifier = Modifier.fillMaxWidth(),
  64. contentAlignment = Alignment.Center,
  65. ) {
  66. val size = DpSize(width = maxWidth / 2, height = 128.dp)
  67. val items = (0..FetchInterval.MAX_INTERVAL)
  68. .map {
  69. if (it == 0) {
  70. localize(MR.strings.label_default)
  71. } else {
  72. it.toString()
  73. }
  74. }
  75. .toImmutableList()
  76. WheelTextPicker(
  77. items = items,
  78. size = size,
  79. startIndex = selectedInterval,
  80. onSelectionChanged = { selectedInterval = it },
  81. )
  82. }
  83. },
  84. dismissButton = {
  85. TextButton(onClick = onDismissRequest) {
  86. Text(text = localize(MR.strings.action_cancel))
  87. }
  88. },
  89. confirmButton = {
  90. TextButton(onClick = {
  91. onValueChanged(selectedInterval)
  92. onDismissRequest()
  93. }) {
  94. Text(text = localize(MR.strings.action_ok))
  95. }
  96. },
  97. )
  98. }