mirror of
https://github.com/null2264/yokai.git
synced 2025-06-21 10:44:42 +00:00
chore(library/compose): LibraryItem data classes
This commit is contained in:
parent
ad22250265
commit
f01ace94be
5 changed files with 49 additions and 22 deletions
|
@ -11,6 +11,7 @@ import androidx.core.view.isVisible
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
|
import eu.kanade.tachiyomi.databinding.LibraryControllerBinding
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
import eu.kanade.tachiyomi.ui.base.controller.BaseCoroutineController
|
||||||
|
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||||
import eu.kanade.tachiyomi.ui.main.BottomSheetController
|
import eu.kanade.tachiyomi.ui.main.BottomSheetController
|
||||||
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface
|
import eu.kanade.tachiyomi.ui.main.FloatingSearchInterface
|
||||||
import eu.kanade.tachiyomi.ui.main.RootSearchInterface
|
import eu.kanade.tachiyomi.ui.main.RootSearchInterface
|
||||||
|
@ -37,9 +38,11 @@ class LibraryComposeController(
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getSearchTitle(): String? {
|
override fun getSearchTitle(): String? {
|
||||||
|
val searchSuggestion by lazy { preferences.librarySearchSuggestion().get() }
|
||||||
|
|
||||||
return searchTitle(
|
return searchTitle(
|
||||||
if (preferences.showLibrarySearchSuggestions().get() && preferences.librarySearchSuggestion().get().isNotBlank()) {
|
if (preferences.showLibrarySearchSuggestions().get() && searchSuggestion.isNotBlank()) {
|
||||||
"\"${preferences.librarySearchSuggestion().get()}\""
|
"\"$searchSuggestion\""
|
||||||
} else {
|
} else {
|
||||||
view?.context?.getString(MR.strings.your_library)?.lowercase(Locale.ROOT)
|
view?.context?.getString(MR.strings.your_library)?.lowercase(Locale.ROOT)
|
||||||
},
|
},
|
||||||
|
@ -52,8 +55,10 @@ class LibraryComposeController(
|
||||||
|
|
||||||
override fun onViewCreated(view: View) {
|
override fun onViewCreated(view: View) {
|
||||||
super.onViewCreated(view)
|
super.onViewCreated(view)
|
||||||
|
|
||||||
binding.composeView.isVisible = true
|
binding.composeView.isVisible = true
|
||||||
binding.swipeRefresh.isGone = true
|
binding.swipeRefresh.isGone = true
|
||||||
|
binding.fastScroller.isGone = true
|
||||||
|
|
||||||
binding.composeView.setContent {
|
binding.composeView.setContent {
|
||||||
YokaiTheme {
|
YokaiTheme {
|
||||||
|
@ -66,6 +71,10 @@ class LibraryComposeController(
|
||||||
fun ScreenContent() {
|
fun ScreenContent() {
|
||||||
val state by presenter.state.collectAsState()
|
val state by presenter.state.collectAsState()
|
||||||
LibraryContent(
|
LibraryContent(
|
||||||
|
items = listOf(
|
||||||
|
LibraryItem.Blank(69),
|
||||||
|
LibraryItem.Blank(420),
|
||||||
|
),
|
||||||
columns = 3,
|
columns = 3,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,11 +1,16 @@
|
||||||
package eu.kanade.tachiyomi.ui.library.compose
|
package eu.kanade.tachiyomi.ui.library.compose
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.Category
|
||||||
import eu.kanade.tachiyomi.ui.base.presenter.StateCoroutinePresenter
|
import eu.kanade.tachiyomi.ui.base.presenter.StateCoroutinePresenter
|
||||||
|
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||||
|
|
||||||
|
typealias LibraryMap = Map<Category, List<LibraryItem>>
|
||||||
|
|
||||||
class LibraryComposePresenter :
|
class LibraryComposePresenter :
|
||||||
StateCoroutinePresenter<LibraryComposePresenter.State, LibraryComposeController>(State.Loading) {
|
StateCoroutinePresenter<LibraryComposePresenter.State, LibraryComposeController>(State()) {
|
||||||
|
|
||||||
sealed interface State {
|
data class State(
|
||||||
data object Loading : State
|
var isLoading: Boolean = true,
|
||||||
}
|
var library: LibraryMap = emptyMap()
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package eu.kanade.tachiyomi.ui.library.models
|
||||||
|
|
||||||
|
import eu.kanade.tachiyomi.data.database.models.LibraryManga
|
||||||
|
|
||||||
|
sealed interface LibraryItem {
|
||||||
|
data class Blank(val mangaCount: Int = 0) : LibraryItem
|
||||||
|
data class Hidden(val title: String, val hiddenItems: List<LibraryItem>) : LibraryItem
|
||||||
|
data class Manga(
|
||||||
|
val libraryManga: LibraryManga,
|
||||||
|
val isLocal: Boolean = false,
|
||||||
|
val downloadCount: Long = -1,
|
||||||
|
val unreadCount: Long = -1,
|
||||||
|
val language: String = "",
|
||||||
|
) : LibraryItem
|
||||||
|
}
|
|
@ -3,15 +3,16 @@ package yokai.presentation.library
|
||||||
import androidx.compose.foundation.lazy.grid.items
|
import androidx.compose.foundation.lazy.grid.items
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
|
import eu.kanade.tachiyomi.ui.library.models.LibraryItem
|
||||||
import yokai.presentation.AppBarType
|
import yokai.presentation.AppBarType
|
||||||
import yokai.presentation.YokaiScaffold
|
import yokai.presentation.YokaiScaffold
|
||||||
import yokai.presentation.library.components.LazyLibraryGrid
|
import yokai.presentation.library.components.LazyLibraryGrid
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun LibraryContent(
|
fun LibraryContent(
|
||||||
|
items: List<LibraryItem>,
|
||||||
columns: Int,
|
columns: Int,
|
||||||
) {
|
) {
|
||||||
val items = (0..100).toList()
|
|
||||||
YokaiScaffold(
|
YokaiScaffold(
|
||||||
onNavigationIconClicked = {},
|
onNavigationIconClicked = {},
|
||||||
appBarType = AppBarType.NONE,
|
appBarType = AppBarType.NONE,
|
||||||
|
@ -23,8 +24,18 @@ fun LibraryContent(
|
||||||
items(
|
items(
|
||||||
items = items,
|
items = items,
|
||||||
contentType = { "library_grid_item" }
|
contentType = { "library_grid_item" }
|
||||||
) {
|
) { item ->
|
||||||
Text("Hello world! ($it)")
|
when (item) {
|
||||||
|
is LibraryItem.Blank -> {
|
||||||
|
Text("Blank: ${item.mangaCount}")
|
||||||
|
}
|
||||||
|
is LibraryItem.Hidden -> {
|
||||||
|
Text("Hidden: ${item.title} - ${item.hiddenItems.size}")
|
||||||
|
}
|
||||||
|
is LibraryItem.Manga -> {
|
||||||
|
Text("Manga: ${item.libraryManga.manga.title}")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
package yokai.presentation.library
|
|
||||||
|
|
||||||
import androidx.compose.runtime.Composable
|
|
||||||
import yokai.util.Screen
|
|
||||||
|
|
||||||
class LibraryScreen : Screen() {
|
|
||||||
@Composable
|
|
||||||
override fun Content() {
|
|
||||||
LibraryContent(
|
|
||||||
columns = 3, // FIXME: Retrieve from preferences
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue