ChapterHeader.kt 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package eu.kanade.presentation.manga.components
  2. import androidx.compose.foundation.clickable
  3. import androidx.compose.foundation.layout.Row
  4. import androidx.compose.foundation.layout.fillMaxWidth
  5. import androidx.compose.foundation.layout.padding
  6. import androidx.compose.material3.AssistChip
  7. import androidx.compose.material3.AssistChipDefaults.assistChipColors
  8. import androidx.compose.material3.AssistChipDefaults.assistChipElevation
  9. import androidx.compose.material3.MaterialTheme
  10. import androidx.compose.material3.Text
  11. import androidx.compose.runtime.Composable
  12. import androidx.compose.ui.Alignment
  13. import androidx.compose.ui.Modifier
  14. import androidx.compose.ui.res.pluralStringResource
  15. import androidx.compose.ui.res.stringResource
  16. import androidx.compose.ui.text.style.TextOverflow
  17. import androidx.compose.ui.unit.dp
  18. import eu.kanade.tachiyomi.R
  19. @Composable
  20. fun ChapterHeader(
  21. enabled: Boolean,
  22. chapterCount: Int?,
  23. missingChapters: Int?,
  24. onClick: () -> Unit,
  25. ) {
  26. Row(
  27. modifier = Modifier
  28. .fillMaxWidth()
  29. .clickable(
  30. enabled = enabled,
  31. onClick = onClick,
  32. )
  33. .padding(horizontal = 16.dp, vertical = 4.dp),
  34. verticalAlignment = Alignment.CenterVertically,
  35. ) {
  36. Text(
  37. text = if (chapterCount == null) {
  38. stringResource(R.string.chapters)
  39. } else {
  40. pluralStringResource(id = R.plurals.manga_num_chapters, count = chapterCount, chapterCount)
  41. },
  42. style = MaterialTheme.typography.titleMedium,
  43. modifier = Modifier.weight(1f),
  44. color = MaterialTheme.colorScheme.onBackground,
  45. )
  46. // Missing chapters
  47. if (missingChapters == null) {
  48. DrawWarning(
  49. text = stringResource(R.string.missing_chapters_unknown),
  50. )
  51. } else if (missingChapters > 0) {
  52. DrawWarning(
  53. text = pluralStringResource(
  54. id = R.plurals.missing_chapters,
  55. count = missingChapters,
  56. missingChapters,
  57. ),
  58. )
  59. }
  60. }
  61. }
  62. @Composable
  63. private fun DrawWarning(text: String) {
  64. AssistChip(
  65. onClick = {
  66. // TODO Show missing chapters
  67. },
  68. label = {
  69. Text(
  70. text = text,
  71. overflow = TextOverflow.Ellipsis,
  72. color = MaterialTheme.colorScheme.primary,
  73. )
  74. },
  75. shape = MaterialTheme.shapes.small,
  76. border = null,
  77. colors = assistChipColors(
  78. containerColor = MaterialTheme.colorScheme.surface,
  79. ),
  80. elevation = assistChipElevation(1.dp),
  81. )
  82. }