mirror of
https://github.com/mihonapp/mihon.git
synced 2025-11-12 12:08:56 +01:00
@@ -103,6 +103,10 @@ fun LibraryScreen(
|
||||
getDisplayModeForPage = { presenter.categories[it].display },
|
||||
getColumnsForOrientation = { presenter.getColumnsPreferenceForCurrentOrientation(it) },
|
||||
getLibraryForPage = { presenter.getMangaForCategory(page = it) },
|
||||
showDownloadBadges = presenter.showDownloadBadges,
|
||||
showUnreadBadges = presenter.showUnreadBadges,
|
||||
showLocalBadges = presenter.showLocalBadges,
|
||||
showLanguageBadges = presenter.showLanguageBadges,
|
||||
isIncognitoMode = presenter.isIncognitoMode,
|
||||
isDownloadOnly = presenter.isDownloadOnly,
|
||||
)
|
||||
|
||||
@@ -0,0 +1,53 @@
|
||||
package eu.kanade.presentation.library.components
|
||||
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import eu.kanade.presentation.components.Badge
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
|
||||
@Composable
|
||||
fun DownloadsBadge(
|
||||
enabled: Boolean,
|
||||
item: LibraryItem,
|
||||
) {
|
||||
if (enabled && item.downloadCount > 0) {
|
||||
Badge(
|
||||
text = "${item.downloadCount}",
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun UnreadBadge(
|
||||
enabled: Boolean,
|
||||
item: LibraryItem,
|
||||
) {
|
||||
if (enabled && item.unreadCount > 0) {
|
||||
Badge(text = "${item.unreadCount}")
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
fun LanguageBadge(
|
||||
showLanguage: Boolean,
|
||||
showLocal: Boolean,
|
||||
item: LibraryItem,
|
||||
) {
|
||||
if (showLocal && item.isLocal) {
|
||||
Badge(
|
||||
text = stringResource(R.string.local_source_badge),
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
} else if (showLanguage && item.sourceLanguage.isNotEmpty()) {
|
||||
Badge(
|
||||
text = item.sourceLanguage.uppercase(),
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -20,6 +20,10 @@ import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
@Composable
|
||||
fun LibraryComfortableGrid(
|
||||
items: List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
columns: Int,
|
||||
contentPadding: PaddingValues,
|
||||
selection: List<LibraryManga>,
|
||||
@@ -40,10 +44,14 @@ fun LibraryComfortableGrid(
|
||||
contentType = { "library_comfortable_grid_item" },
|
||||
) { libraryItem ->
|
||||
LibraryComfortableGridItem(
|
||||
libraryItem,
|
||||
libraryItem.libraryManga in selection,
|
||||
onClick,
|
||||
onLongClick,
|
||||
item = libraryItem,
|
||||
showDownloadBadge = showDownloadBadges,
|
||||
showUnreadBadge = showUnreadBadges,
|
||||
showLocalBadge = showLocalBadges,
|
||||
showLanguageBadge = showLanguageBadges,
|
||||
isSelected = libraryItem.libraryManga in selection,
|
||||
onClick = onClick,
|
||||
onLongClick = onLongClick,
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -52,6 +60,10 @@ fun LibraryComfortableGrid(
|
||||
@Composable
|
||||
fun LibraryComfortableGridItem(
|
||||
item: LibraryItem,
|
||||
showDownloadBadge: Boolean,
|
||||
showUnreadBadge: Boolean,
|
||||
showLocalBadge: Boolean,
|
||||
showLanguageBadge: Boolean,
|
||||
isSelected: Boolean,
|
||||
onClick: (LibraryManga) -> Unit,
|
||||
onLongClick: (LibraryManga) -> Unit,
|
||||
@@ -78,10 +90,11 @@ fun LibraryComfortableGridItem(
|
||||
manga.thumbnailUrl,
|
||||
manga.coverLastModified,
|
||||
),
|
||||
downloadCount = item.downloadCount,
|
||||
unreadCount = item.unreadCount,
|
||||
isLocal = item.isLocal,
|
||||
language = item.sourceLanguage,
|
||||
item = item,
|
||||
showDownloadBadge = showDownloadBadge,
|
||||
showUnreadBadge = showUnreadBadge,
|
||||
showLocalBadge = showLocalBadge,
|
||||
showLanguageBadge = showLanguageBadge,
|
||||
)
|
||||
MangaGridComfortableText(
|
||||
text = manga.title,
|
||||
|
||||
@@ -29,6 +29,10 @@ import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
@Composable
|
||||
fun LibraryCompactGrid(
|
||||
items: List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
columns: Int,
|
||||
contentPadding: PaddingValues,
|
||||
selection: List<LibraryManga>,
|
||||
@@ -50,6 +54,10 @@ fun LibraryCompactGrid(
|
||||
) { libraryItem ->
|
||||
LibraryCompactGridItem(
|
||||
item = libraryItem,
|
||||
showDownloadBadge = showDownloadBadges,
|
||||
showUnreadBadge = showUnreadBadges,
|
||||
showLocalBadge = showLocalBadges,
|
||||
showLanguageBadge = showLanguageBadges,
|
||||
isSelected = libraryItem.libraryManga in selection,
|
||||
onClick = onClick,
|
||||
onLongClick = onLongClick,
|
||||
@@ -61,6 +69,10 @@ fun LibraryCompactGrid(
|
||||
@Composable
|
||||
fun LibraryCompactGridItem(
|
||||
item: LibraryItem,
|
||||
showDownloadBadge: Boolean,
|
||||
showUnreadBadge: Boolean,
|
||||
showLocalBadge: Boolean,
|
||||
showLanguageBadge: Boolean,
|
||||
isSelected: Boolean,
|
||||
onClick: (LibraryManga) -> Unit,
|
||||
onLongClick: (LibraryManga) -> Unit,
|
||||
@@ -85,10 +97,11 @@ fun LibraryCompactGridItem(
|
||||
manga.thumbnailUrl,
|
||||
manga.coverLastModified,
|
||||
),
|
||||
downloadCount = item.downloadCount,
|
||||
unreadCount = item.unreadCount,
|
||||
isLocal = item.isLocal,
|
||||
language = item.sourceLanguage,
|
||||
item = item,
|
||||
showDownloadBadge = showDownloadBadge,
|
||||
showUnreadBadge = showUnreadBadge,
|
||||
showLocalBadge = showLocalBadge,
|
||||
showLanguageBadge = showLanguageBadge,
|
||||
) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
|
||||
@@ -22,7 +22,6 @@ import eu.kanade.domain.library.model.LibraryDisplayMode
|
||||
import eu.kanade.domain.library.model.LibraryManga
|
||||
import eu.kanade.presentation.components.SwipeRefresh
|
||||
import eu.kanade.presentation.library.LibraryState
|
||||
import eu.kanade.presentation.util.plus
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
import kotlinx.coroutines.delay
|
||||
import kotlinx.coroutines.launch
|
||||
@@ -33,8 +32,6 @@ fun LibraryContent(
|
||||
contentPadding: PaddingValues,
|
||||
currentPage: () -> Int,
|
||||
isLibraryEmpty: Boolean,
|
||||
isDownloadOnly: Boolean,
|
||||
isIncognitoMode: Boolean,
|
||||
showPageTabs: Boolean,
|
||||
showMangaCount: Boolean,
|
||||
onChangeCurrentPage: (Int) -> Unit,
|
||||
@@ -47,6 +44,12 @@ fun LibraryContent(
|
||||
getDisplayModeForPage: @Composable (Int) -> LibraryDisplayMode,
|
||||
getColumnsForOrientation: (Boolean) -> PreferenceMutableState<Int>,
|
||||
getLibraryForPage: @Composable (Int) -> List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
isDownloadOnly: Boolean,
|
||||
isIncognitoMode: Boolean,
|
||||
) {
|
||||
Column(
|
||||
modifier = Modifier.padding(
|
||||
@@ -106,6 +109,10 @@ fun LibraryContent(
|
||||
getDisplayModeForPage = getDisplayModeForPage,
|
||||
getColumnsForOrientation = getColumnsForOrientation,
|
||||
getLibraryForPage = getLibraryForPage,
|
||||
showDownloadBadges = showDownloadBadges,
|
||||
showUnreadBadges = showUnreadBadges,
|
||||
showLocalBadges = showLocalBadges,
|
||||
showLanguageBadges = showLanguageBadges,
|
||||
onClickManga = onClickManga,
|
||||
onLongClickManga = onLongClickManga,
|
||||
onGlobalSearchClicked = onGlobalSearchClicked,
|
||||
|
||||
@@ -12,6 +12,10 @@ import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
@Composable
|
||||
fun LibraryCoverOnlyGrid(
|
||||
items: List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
columns: Int,
|
||||
contentPadding: PaddingValues,
|
||||
selection: List<LibraryManga>,
|
||||
@@ -33,6 +37,10 @@ fun LibraryCoverOnlyGrid(
|
||||
) { libraryItem ->
|
||||
LibraryCoverOnlyGridItem(
|
||||
item = libraryItem,
|
||||
showDownloadBadge = showDownloadBadges,
|
||||
showUnreadBadge = showUnreadBadges,
|
||||
showLocalBadge = showLocalBadges,
|
||||
showLanguageBadge = showLanguageBadges,
|
||||
isSelected = libraryItem.libraryManga in selection,
|
||||
onClick = onClick,
|
||||
onLongClick = onLongClick,
|
||||
@@ -44,6 +52,10 @@ fun LibraryCoverOnlyGrid(
|
||||
@Composable
|
||||
fun LibraryCoverOnlyGridItem(
|
||||
item: LibraryItem,
|
||||
showDownloadBadge: Boolean,
|
||||
showUnreadBadge: Boolean,
|
||||
showLocalBadge: Boolean,
|
||||
showLanguageBadge: Boolean,
|
||||
isSelected: Boolean,
|
||||
onClick: (LibraryManga) -> Unit,
|
||||
onLongClick: (LibraryManga) -> Unit,
|
||||
@@ -68,9 +80,10 @@ fun LibraryCoverOnlyGridItem(
|
||||
manga.thumbnailUrl,
|
||||
manga.coverLastModified,
|
||||
),
|
||||
downloadCount = item.downloadCount,
|
||||
unreadCount = item.unreadCount,
|
||||
isLocal = item.isLocal,
|
||||
language = item.sourceLanguage,
|
||||
item = item,
|
||||
showDownloadBadge = showDownloadBadge,
|
||||
showUnreadBadge = showUnreadBadge,
|
||||
showLocalBadge = showLocalBadge,
|
||||
showLanguageBadge = showLanguageBadge,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -6,16 +6,13 @@ import androidx.compose.foundation.layout.RowScope
|
||||
import androidx.compose.foundation.layout.aspectRatio
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Alignment
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.unit.dp
|
||||
import eu.kanade.presentation.components.Badge
|
||||
import eu.kanade.presentation.components.BadgeGroup
|
||||
import eu.kanade.presentation.components.MangaCover
|
||||
import eu.kanade.tachiyomi.R
|
||||
import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
|
||||
@Composable
|
||||
fun MangaGridCover(
|
||||
@@ -56,10 +53,11 @@ fun MangaGridCover(
|
||||
fun LibraryGridCover(
|
||||
modifier: Modifier = Modifier,
|
||||
mangaCover: eu.kanade.domain.manga.model.MangaCover,
|
||||
downloadCount: Long,
|
||||
unreadCount: Long,
|
||||
isLocal: Boolean,
|
||||
language: String,
|
||||
item: LibraryItem,
|
||||
showDownloadBadge: Boolean,
|
||||
showUnreadBadge: Boolean,
|
||||
showLocalBadge: Boolean,
|
||||
showLanguageBadge: Boolean,
|
||||
content: @Composable BoxScope.() -> Unit = {},
|
||||
) {
|
||||
MangaGridCover(
|
||||
@@ -71,31 +69,11 @@ fun LibraryGridCover(
|
||||
)
|
||||
},
|
||||
badgesStart = {
|
||||
if (downloadCount > 0) {
|
||||
Badge(
|
||||
text = "$downloadCount",
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
if (unreadCount > 0) {
|
||||
Badge(text = "$unreadCount")
|
||||
}
|
||||
DownloadsBadge(enabled = showDownloadBadge, item = item)
|
||||
UnreadBadge(enabled = showUnreadBadge, item = item)
|
||||
},
|
||||
badgesEnd = {
|
||||
if (isLocal) {
|
||||
Badge(
|
||||
text = stringResource(R.string.local_source_badge),
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
} else if (language.isNotEmpty()) {
|
||||
Badge(
|
||||
text = language,
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
LanguageBadge(showLanguage = showLanguageBadge, showLocal = showLocalBadge, item = item)
|
||||
},
|
||||
content = content,
|
||||
)
|
||||
|
||||
@@ -21,7 +21,6 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.compose.ui.zIndex
|
||||
import eu.kanade.domain.library.model.LibraryManga
|
||||
import eu.kanade.domain.manga.model.MangaCover
|
||||
import eu.kanade.presentation.components.Badge
|
||||
import eu.kanade.presentation.components.BadgeGroup
|
||||
import eu.kanade.presentation.components.FastScrollLazyColumn
|
||||
import eu.kanade.presentation.components.MangaCover.Square
|
||||
@@ -35,6 +34,10 @@ import eu.kanade.tachiyomi.ui.library.LibraryItem
|
||||
@Composable
|
||||
fun LibraryList(
|
||||
items: List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
contentPadding: PaddingValues,
|
||||
selection: List<LibraryManga>,
|
||||
onClick: (LibraryManga) -> Unit,
|
||||
@@ -63,6 +66,10 @@ fun LibraryList(
|
||||
) { libraryItem ->
|
||||
LibraryListItem(
|
||||
item = libraryItem,
|
||||
showDownloadBadge = showDownloadBadges,
|
||||
showUnreadBadge = showUnreadBadges,
|
||||
showLocalBadge = showLocalBadges,
|
||||
showLanguageBadge = showLanguageBadges,
|
||||
isSelected = libraryItem.libraryManga in selection,
|
||||
onClick = onClick,
|
||||
onLongClick = onLongClick,
|
||||
@@ -74,6 +81,10 @@ fun LibraryList(
|
||||
@Composable
|
||||
fun LibraryListItem(
|
||||
item: LibraryItem,
|
||||
showDownloadBadge: Boolean,
|
||||
showUnreadBadge: Boolean,
|
||||
showLocalBadge: Boolean,
|
||||
showLanguageBadge: Boolean,
|
||||
isSelected: Boolean,
|
||||
onClick: (LibraryManga) -> Unit,
|
||||
onLongClick: (LibraryManga) -> Unit,
|
||||
@@ -93,30 +104,9 @@ fun LibraryListItem(
|
||||
onClick = { onClick(libraryManga) },
|
||||
onLongClick = { onLongClick(libraryManga) },
|
||||
) {
|
||||
if (item.downloadCount > 0) {
|
||||
Badge(
|
||||
text = "${item.downloadCount}",
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
if (item.unreadCount > 0) {
|
||||
Badge(text = "${item.unreadCount}")
|
||||
}
|
||||
if (item.isLocal) {
|
||||
Badge(
|
||||
text = stringResource(R.string.local_source_badge),
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
if (item.isLocal.not() && item.sourceLanguage.isNotEmpty()) {
|
||||
Badge(
|
||||
text = item.sourceLanguage,
|
||||
color = MaterialTheme.colorScheme.tertiary,
|
||||
textColor = MaterialTheme.colorScheme.onTertiary,
|
||||
)
|
||||
}
|
||||
DownloadsBadge(enabled = showDownloadBadge, item = item)
|
||||
UnreadBadge(enabled = showUnreadBadge, item = item)
|
||||
LanguageBadge(showLanguage = showLanguageBadge, showLocal = showLocalBadge, item = item)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,10 @@ fun LibraryPager(
|
||||
getDisplayModeForPage: @Composable (Int) -> LibraryDisplayMode,
|
||||
getColumnsForOrientation: (Boolean) -> PreferenceMutableState<Int>,
|
||||
getLibraryForPage: @Composable (Int) -> List<LibraryItem>,
|
||||
showDownloadBadges: Boolean,
|
||||
showUnreadBadges: Boolean,
|
||||
showLocalBadges: Boolean,
|
||||
showLanguageBadges: Boolean,
|
||||
onClickManga: (LibraryManga) -> Unit,
|
||||
onLongClickManga: (LibraryManga) -> Unit,
|
||||
) {
|
||||
@@ -56,6 +60,10 @@ fun LibraryPager(
|
||||
LibraryDisplayMode.List -> {
|
||||
LibraryList(
|
||||
items = library,
|
||||
showDownloadBadges = showDownloadBadges,
|
||||
showUnreadBadges = showUnreadBadges,
|
||||
showLocalBadges = showLocalBadges,
|
||||
showLanguageBadges = showLanguageBadges,
|
||||
contentPadding = contentPadding,
|
||||
selection = selectedManga,
|
||||
onClick = onClickManga,
|
||||
@@ -67,6 +75,10 @@ fun LibraryPager(
|
||||
LibraryDisplayMode.CompactGrid -> {
|
||||
LibraryCompactGrid(
|
||||
items = library,
|
||||
showDownloadBadges = showDownloadBadges,
|
||||
showUnreadBadges = showUnreadBadges,
|
||||
showLocalBadges = showLocalBadges,
|
||||
showLanguageBadges = showLanguageBadges,
|
||||
columns = columns,
|
||||
contentPadding = contentPadding,
|
||||
selection = selectedManga,
|
||||
@@ -79,6 +91,10 @@ fun LibraryPager(
|
||||
LibraryDisplayMode.ComfortableGrid -> {
|
||||
LibraryComfortableGrid(
|
||||
items = library,
|
||||
showDownloadBadges = showDownloadBadges,
|
||||
showUnreadBadges = showUnreadBadges,
|
||||
showLocalBadges = showLocalBadges,
|
||||
showLanguageBadges = showLanguageBadges,
|
||||
columns = columns,
|
||||
contentPadding = contentPadding,
|
||||
selection = selectedManga,
|
||||
@@ -91,6 +107,10 @@ fun LibraryPager(
|
||||
LibraryDisplayMode.CoverOnlyGrid -> {
|
||||
LibraryCoverOnlyGrid(
|
||||
items = library,
|
||||
showDownloadBadges = showDownloadBadges,
|
||||
showUnreadBadges = showUnreadBadges,
|
||||
showLocalBadges = showLocalBadges,
|
||||
showLanguageBadges = showLanguageBadges,
|
||||
columns = columns,
|
||||
contentPadding = contentPadding,
|
||||
selection = selectedManga,
|
||||
|
||||
Reference in New Issue
Block a user