GeneralSettingsPage.kt 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. package eu.kanade.presentation.reader.settings
  2. import androidx.compose.foundation.layout.ColumnScope
  3. import androidx.compose.runtime.Composable
  4. import androidx.compose.runtime.getValue
  5. import androidx.compose.ui.res.stringResource
  6. import eu.kanade.presentation.util.collectAsState
  7. import eu.kanade.tachiyomi.R
  8. import eu.kanade.tachiyomi.ui.reader.setting.ReaderPreferences
  9. import eu.kanade.tachiyomi.ui.reader.setting.ReaderSettingsScreenModel
  10. import tachiyomi.presentation.core.components.CheckboxItem
  11. import tachiyomi.presentation.core.components.HeadingItem
  12. import tachiyomi.presentation.core.components.RadioItem
  13. @Composable
  14. internal fun ColumnScope.GeneralPage(screenModel: ReaderSettingsScreenModel) {
  15. // TODO: show this in a nicer way
  16. HeadingItem(stringResource(R.string.pref_reader_theme))
  17. val readerTheme by screenModel.preferences.readerTheme().collectAsState()
  18. listOf(
  19. R.string.black_background to 1,
  20. R.string.gray_background to 2,
  21. R.string.white_background to 0,
  22. R.string.automatic_background to 3,
  23. ).map { (titleRes, theme) ->
  24. RadioItem(
  25. label = stringResource(titleRes),
  26. selected = readerTheme == theme,
  27. onClick = { screenModel.preferences.readerTheme().set(theme) },
  28. )
  29. }
  30. val showPageNumber by screenModel.preferences.showPageNumber().collectAsState()
  31. CheckboxItem(
  32. label = stringResource(R.string.pref_show_page_number),
  33. checked = showPageNumber,
  34. onClick = {
  35. screenModel.togglePreference(ReaderPreferences::showPageNumber)
  36. },
  37. )
  38. val fullscreen by screenModel.preferences.fullscreen().collectAsState()
  39. CheckboxItem(
  40. label = stringResource(R.string.pref_fullscreen),
  41. checked = fullscreen,
  42. onClick = {
  43. screenModel.togglePreference(ReaderPreferences::fullscreen)
  44. },
  45. )
  46. // TODO: hide if there's no cutout
  47. val cutoutShort by screenModel.preferences.cutoutShort().collectAsState()
  48. CheckboxItem(
  49. label = stringResource(R.string.pref_cutout_short),
  50. checked = cutoutShort,
  51. onClick = {
  52. screenModel.togglePreference(ReaderPreferences::cutoutShort)
  53. },
  54. )
  55. val keepScreenOn by screenModel.preferences.keepScreenOn().collectAsState()
  56. CheckboxItem(
  57. label = stringResource(R.string.pref_keep_screen_on),
  58. checked = keepScreenOn,
  59. onClick = {
  60. screenModel.togglePreference(ReaderPreferences::keepScreenOn)
  61. },
  62. )
  63. val readWithLongTap by screenModel.preferences.readWithLongTap().collectAsState()
  64. CheckboxItem(
  65. label = stringResource(R.string.pref_read_with_long_tap),
  66. checked = readWithLongTap,
  67. onClick = {
  68. screenModel.togglePreference(ReaderPreferences::readWithLongTap)
  69. },
  70. )
  71. val alwaysShowChapterTransition by screenModel.preferences.alwaysShowChapterTransition().collectAsState()
  72. CheckboxItem(
  73. label = stringResource(R.string.pref_always_show_chapter_transition),
  74. checked = alwaysShowChapterTransition,
  75. onClick = {
  76. screenModel.togglePreference(ReaderPreferences::alwaysShowChapterTransition)
  77. },
  78. )
  79. val pageTransitions by screenModel.preferences.pageTransitions().collectAsState()
  80. CheckboxItem(
  81. label = stringResource(R.string.pref_page_transitions),
  82. checked = pageTransitions,
  83. onClick = {
  84. screenModel.togglePreference(ReaderPreferences::pageTransitions)
  85. },
  86. )
  87. }