Consolidate Compose content/theme setting
This commit is contained in:
@@ -3,17 +3,11 @@ package eu.kanade.tachiyomi.ui.library
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.compose.foundation.layout.consumeWindowInsets
|
||||
import androidx.compose.material3.LocalContentColor
|
||||
import androidx.compose.material3.LocalTextStyle
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateListOf
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.input.nestedscroll.nestedScroll
|
||||
import androidx.compose.ui.platform.ComposeView
|
||||
import androidx.compose.ui.platform.ViewCompositionStrategy
|
||||
import androidx.compose.ui.platform.rememberNestedScrollInteropConnection
|
||||
import com.google.accompanist.swiperefresh.SwipeRefresh
|
||||
import com.google.accompanist.swiperefresh.rememberSwipeRefreshState
|
||||
@@ -23,7 +17,6 @@ import eu.kanade.presentation.library.components.LibraryComfortableGrid
|
||||
import eu.kanade.presentation.library.components.LibraryCompactGrid
|
||||
import eu.kanade.presentation.library.components.LibraryCoverOnlyGrid
|
||||
import eu.kanade.presentation.library.components.LibraryList
|
||||
import eu.kanade.presentation.theme.TachiyomiTheme
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
|
||||
@@ -31,6 +24,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.databinding.ComposeControllerBinding
|
||||
import eu.kanade.tachiyomi.ui.library.setting.DisplayModeSetting
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import eu.kanade.tachiyomi.util.view.setComposeContent
|
||||
import eu.kanade.tachiyomi.widget.RecyclerViewPagerAdapter
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
@@ -101,80 +95,74 @@ class LibraryAdapter(
|
||||
*/
|
||||
override fun bindView(view: View, position: Int) {
|
||||
(view as ComposeView).apply {
|
||||
consumeWindowInsets = false
|
||||
setViewCompositionStrategy(ViewCompositionStrategy.DisposeOnViewTreeLifecycleDestroyed)
|
||||
setContent {
|
||||
TachiyomiTheme {
|
||||
CompositionLocalProvider(LocalTextStyle provides MaterialTheme.typography.bodySmall, LocalContentColor provides MaterialTheme.colorScheme.onBackground) {
|
||||
val nestedScrollInterop = rememberNestedScrollInteropConnection()
|
||||
setComposeContent {
|
||||
val nestedScrollInterop = rememberNestedScrollInteropConnection()
|
||||
|
||||
val category = presenter.categories[position]
|
||||
val displayMode = presenter.getDisplayMode(index = position)
|
||||
val mangaList by presenter.getMangaForCategory(categoryId = category.id)
|
||||
val category = presenter.categories[position]
|
||||
val displayMode = presenter.getDisplayMode(index = position)
|
||||
val mangaList by presenter.getMangaForCategory(categoryId = category.id)
|
||||
|
||||
val onClickManga = { manga: LibraryManga ->
|
||||
if (presenter.hasSelection().not()) {
|
||||
onClickManga(manga)
|
||||
} else {
|
||||
presenter.toggleSelection(manga)
|
||||
}
|
||||
val onClickManga = { manga: LibraryManga ->
|
||||
if (presenter.hasSelection().not()) {
|
||||
onClickManga(manga)
|
||||
} else {
|
||||
presenter.toggleSelection(manga)
|
||||
}
|
||||
}
|
||||
val onLongClickManga = { manga: LibraryManga ->
|
||||
presenter.toggleSelection(manga)
|
||||
}
|
||||
|
||||
SwipeRefresh(
|
||||
modifier = Modifier.nestedScroll(nestedScrollInterop),
|
||||
state = rememberSwipeRefreshState(isRefreshing = false),
|
||||
onRefresh = {
|
||||
if (LibraryUpdateService.start(context, category)) {
|
||||
context.toast(R.string.updating_category)
|
||||
}
|
||||
val onLongClickManga = { manga: LibraryManga ->
|
||||
presenter.toggleSelection(manga)
|
||||
},
|
||||
indicator = { s, trigger ->
|
||||
SwipeRefreshIndicator(
|
||||
state = s,
|
||||
refreshTriggerDistance = trigger,
|
||||
)
|
||||
},
|
||||
) {
|
||||
when (displayMode) {
|
||||
DisplayModeSetting.LIST -> {
|
||||
LibraryList(
|
||||
items = mangaList,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
|
||||
SwipeRefresh(
|
||||
modifier = Modifier.nestedScroll(nestedScrollInterop),
|
||||
state = rememberSwipeRefreshState(isRefreshing = false),
|
||||
onRefresh = {
|
||||
if (LibraryUpdateService.start(context, category)) {
|
||||
context.toast(R.string.updating_category)
|
||||
}
|
||||
},
|
||||
indicator = { s, trigger ->
|
||||
SwipeRefreshIndicator(
|
||||
state = s,
|
||||
refreshTriggerDistance = trigger,
|
||||
)
|
||||
},
|
||||
) {
|
||||
when (displayMode) {
|
||||
DisplayModeSetting.LIST -> {
|
||||
LibraryList(
|
||||
items = mangaList,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
DisplayModeSetting.COMPACT_GRID -> {
|
||||
LibraryCompactGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
DisplayModeSetting.COMFORTABLE_GRID -> {
|
||||
LibraryComfortableGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
DisplayModeSetting.COVER_ONLY_GRID -> {
|
||||
LibraryCoverOnlyGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
}
|
||||
DisplayModeSetting.COMPACT_GRID -> {
|
||||
LibraryCompactGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
DisplayModeSetting.COMFORTABLE_GRID -> {
|
||||
LibraryComfortableGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
DisplayModeSetting.COVER_ONLY_GRID -> {
|
||||
LibraryCoverOnlyGrid(
|
||||
items = mangaList,
|
||||
columns = presenter.columns,
|
||||
selection = presenter.selection,
|
||||
onClick = onClickManga,
|
||||
onLongClick = onLongClickManga,
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user