From 195a76de67a281af6e8609ad71fdfb2996dff9de Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Mon, 20 Apr 2026 00:11:11 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/book/group/GroupEditSheet.kt | 6 +-- .../legado/app/ui/book/info/BookInfoScreen.kt | 45 +------------------ .../legado/app/ui/book/info/BookInfoSheets.kt | 11 +---- .../ui/book/info/edit/BookInfoEditScreen.kt | 4 +- .../legado/app/ui/main/bookshelf/BookItem.kt | 12 ++--- .../widget/components/cover/BookshelfCover.kt | 4 +- .../cover/{BookCover.kt => CoilBookCover.kt} | 4 +- 7 files changed, 16 insertions(+), 70 deletions(-) rename app/src/main/java/io/legado/app/ui/widget/components/cover/{BookCover.kt => CoilBookCover.kt} (99%) diff --git a/app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt b/app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt index 2239457e3..045ee4824 100644 --- a/app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt +++ b/app/src/main/java/io/legado/app/ui/book/group/GroupEditSheet.kt @@ -16,8 +16,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Delete import androidx.compose.material.icons.filled.Restore import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.Icon -import androidx.compose.material3.OutlinedIconButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf @@ -38,7 +36,7 @@ import io.legado.app.ui.widget.components.alert.AppAlertDialog import io.legado.app.ui.widget.components.button.ConfirmDismissButtonsRow import io.legado.app.ui.widget.components.button.MediumIconButton import io.legado.app.ui.widget.components.card.GlassCard -import io.legado.app.ui.widget.components.cover.BookCover +import io.legado.app.ui.widget.components.cover.CoilBookCover import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet import io.legado.app.ui.widget.components.settingItem.CompactDropdownSettingItem import io.legado.app.ui.widget.components.settingItem.CompactSwitchSettingItem @@ -144,7 +142,7 @@ fun GroupEditContent( verticalAlignment = Alignment.Top, horizontalArrangement = Arrangement.spacedBy(16.dp) ) { - BookCover( + CoilBookCover( name = null, author = null, sourceOrigin = group?.groupName, diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt index 9d932e2ce..1bfdaa04d 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoScreen.kt @@ -1,9 +1,6 @@ package io.legado.app.ui.book.info -import android.net.Uri import androidx.activity.compose.BackHandler -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background import androidx.compose.foundation.clickable import androidx.compose.foundation.combinedClickable @@ -18,36 +15,21 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow import androidx.compose.foundation.lazy.rememberLazyListState import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.lazy.grid.GridCells -import androidx.compose.foundation.lazy.grid.LazyVerticalGrid -import androidx.compose.foundation.lazy.grid.items -import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.outlined.FormatListBulleted -import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Book import androidx.compose.material.icons.filled.BookmarkAdd import androidx.compose.material.icons.filled.Code import androidx.compose.material.icons.filled.Edit import androidx.compose.material.icons.filled.MoreVert -import androidx.compose.material.icons.filled.Refresh import androidx.compose.material.icons.filled.Share -import androidx.compose.material.icons.filled.Star import androidx.compose.material.icons.filled.Timeline import androidx.compose.material.icons.outlined.Book -import androidx.compose.material.icons.outlined.CollectionsBookmark -import androidx.compose.material.icons.outlined.FolderZip -import androidx.compose.material.icons.outlined.Image -import androidx.compose.material.icons.outlined.Link -import androidx.compose.material.icons.outlined.Settings -import androidx.compose.material.icons.outlined.SwapHoriz import androidx.compose.material3.CardDefaults import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ElevatedCard @@ -55,8 +37,6 @@ import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExperimentalMaterial3ExpressiveApi import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.Icon -import androidx.compose.material3.IconButton -import androidx.compose.material3.LinearProgressIndicator import androidx.compose.material3.MediumFlexibleTopAppBar import androidx.compose.material3.Text import androidx.compose.material3.TopAppBarDefaults @@ -65,9 +45,7 @@ import androidx.compose.material3.pulltorefresh.PullToRefreshDefaults import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect -import androidx.compose.runtime.derivedStateOf import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable @@ -81,30 +59,18 @@ import androidx.compose.ui.graphics.lerp import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.input.nestedscroll.nestedScroll import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp -import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.ImageLoader import coil.compose.AsyncImage import io.legado.app.R import io.legado.app.constant.BookType -import io.legado.app.data.appDb import io.legado.app.data.entities.Book import io.legado.app.data.entities.BookChapter -import io.legado.app.data.entities.BookGroup -import io.legado.app.data.entities.BookSource -import io.legado.app.data.entities.SearchBook import io.legado.app.help.book.isLocal -import io.legado.app.help.config.AppConfig import io.legado.app.ui.about.AppLogSheet -import io.legado.app.ui.book.changecover.ChangeCoverViewModel -import io.legado.app.ui.book.changesource.ChangeBookSourceViewModel -import io.legado.app.ui.book.group.GroupEditSheet -import io.legado.app.ui.book.source.edit.BookSourceEditActivity -import io.legado.app.ui.book.source.manage.BookSourceActivity import io.legado.app.ui.config.coverConfig.CoverConfig import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.theme.LocalHazeState @@ -113,21 +79,18 @@ import io.legado.app.ui.theme.ThemeResolver import io.legado.app.ui.theme.ThemeOverrideState import io.legado.app.ui.theme.rememberImageSeedColor import io.legado.app.ui.theme.rememberThemeOverride -import io.legado.app.ui.theme.responsiveHazeEffect import io.legado.app.ui.theme.responsiveHazeEffectFixedStyle import io.legado.app.ui.widget.components.AppScaffold import io.legado.app.ui.widget.components.AppTextField import io.legado.app.ui.widget.components.alert.AppAlertDialog import io.legado.app.ui.widget.components.button.TopBarActionButton -import io.legado.app.ui.widget.components.button.TopBarButtonVariant import io.legado.app.ui.widget.components.button.TopBarNavigationButton import io.legado.app.ui.widget.components.card.GlassCard import io.legado.app.ui.widget.components.card.TextCard -import io.legado.app.ui.widget.components.cover.BookCover +import io.legado.app.ui.widget.components.cover.CoilBookCover import io.legado.app.ui.widget.components.icon.AppIcon import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenuItem -import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet import io.legado.app.ui.widget.components.cover.buildCoverImageRequest import io.legado.app.ui.widget.components.text.AnimatedTextLine import io.legado.app.ui.widget.components.text.AppText @@ -135,12 +98,8 @@ import io.legado.app.ui.widget.components.topbar.GlassTopAppBarScrollBehavior import io.legado.app.ui.widget.components.topbar.GlassTopAppBarDefaults import io.legado.app.ui.widget.components.topbar.M3GlassScrollBehavior import io.legado.app.ui.widget.components.topbar.MiuixGlassScrollBehavior -import io.legado.app.utils.StartActivityContract -import io.legado.app.utils.startActivity -import io.legado.app.utils.toastOnUi import kotlinx.coroutines.delay import org.koin.compose.koinInject -import org.koin.androidx.compose.koinViewModel import top.yukonga.miuix.kmp.basic.MiuixScrollBehavior import top.yukonga.miuix.kmp.basic.TopAppBar as MiuixTopAppBar @@ -668,7 +627,7 @@ private fun BookInfoHeader( .width(112.dp) .combinedClickable(onClick = onCoverClick, onLongClick = onCoverLongClick) ) { - BookCover( + CoilBookCover( name = book.name, author = book.author, path = book.getDisplayCover(), diff --git a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt index e10fd91b5..f2b561291 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/BookInfoSheets.kt @@ -24,19 +24,14 @@ import androidx.compose.material.icons.filled.MoreVert import androidx.compose.material.icons.filled.PauseCircleOutline import androidx.compose.material.icons.filled.PushPin import androidx.compose.material.icons.filled.Refresh -import androidx.compose.material.icons.filled.Star import androidx.compose.material.icons.outlined.FolderZip import androidx.compose.material.icons.outlined.Image import androidx.compose.material.icons.outlined.Settings import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.ElevatedCard import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LinearProgressIndicator -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Text -import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect @@ -50,7 +45,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.lifecycle.compose.collectAsStateWithLifecycle import io.legado.app.R @@ -72,11 +66,10 @@ import io.legado.app.ui.widget.components.alert.AppAlertDialog import io.legado.app.ui.widget.components.button.ConfirmDismissButtonsRow import io.legado.app.ui.widget.components.button.MediumIconButton import io.legado.app.ui.widget.components.button.SmallIconButton -import io.legado.app.ui.widget.components.button.TopBarButton import io.legado.app.ui.widget.components.card.GlassCard import io.legado.app.ui.widget.components.card.SelectionItemCard import io.legado.app.ui.widget.components.checkBox.AppCheckbox -import io.legado.app.ui.widget.components.cover.BookCover +import io.legado.app.ui.widget.components.cover.CoilBookCover import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenuItem import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet @@ -228,7 +221,7 @@ fun ChangeCoverSheet( items(items, key = { it.bookUrl + it.originName }) { item -> GlassCard(onClick = { onSelect(item.coverUrl.orEmpty()) }) { Column(modifier = Modifier.fillMaxWidth().padding(8.dp), verticalArrangement = Arrangement.spacedBy(8.dp)) { - BookCover(name = item.name, author = item.author, path = item.coverUrl, sourceOrigin = item.origin, modifier = Modifier.fillMaxWidth()) + CoilBookCover(name = item.name, author = item.author, path = item.coverUrl, sourceOrigin = item.origin, modifier = Modifier.fillMaxWidth()) AppText(text = item.originName, style = LegadoTheme.typography.bodySmall, maxLines = 2) } } diff --git a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt index a93f84c90..ace814ecd 100644 --- a/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt +++ b/app/src/main/java/io/legado/app/ui/book/info/edit/BookInfoEditScreen.kt @@ -47,7 +47,7 @@ import io.legado.app.ui.widget.components.AppTextField import io.legado.app.ui.widget.components.button.MediumOutlinedIconButton import io.legado.app.ui.widget.components.button.TopBarButtonVariant import io.legado.app.ui.widget.components.button.TopBarNavigationButton -import io.legado.app.ui.widget.components.cover.BookCover +import io.legado.app.ui.widget.components.cover.CoilBookCover import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenu import io.legado.app.ui.widget.components.menuItem.RoundDropdownMenuItem import io.legado.app.ui.widget.components.settingItem.SwitchSettingItem @@ -127,7 +127,7 @@ fun BookInfoEditContent( horizontalArrangement = Arrangement.spacedBy(16.dp), verticalAlignment = Alignment.CenterVertically ) { - BookCover( + CoilBookCover( name = uiState.name, author = uiState.author, path = uiState.coverUrl, diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt index 68bb09c73..3abde4956 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookItem.kt @@ -36,7 +36,7 @@ import io.legado.app.data.entities.BookGroup import io.legado.app.ui.config.bookshelfConfig.BookshelfConfig import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.card.TextCard -import io.legado.app.ui.widget.components.cover.BookCover +import io.legado.app.ui.widget.components.cover.CoilBookCover import io.legado.app.ui.widget.components.cover.BookshelfCover import io.legado.app.ui.widget.components.text.AppText import io.legado.app.utils.toTimeAgo @@ -213,7 +213,7 @@ fun BookGroupCover( .background(LegadoTheme.colorScheme.surfaceContainer) ) { if (!coverPath.isNullOrBlank()) { - BookCover( + CoilBookCover( name = null, author = null, path = coverPath, @@ -229,7 +229,7 @@ fun BookGroupCover( .padding(1.dp) ) { books.getOrNull(0)?.let { - BookCover( + CoilBookCover( name = it.name, author = it.author, path = it.getDisplayCover(), @@ -244,7 +244,7 @@ fun BookGroupCover( .padding(1.dp) ) { books.getOrNull(1)?.let { - BookCover( + CoilBookCover( name = it.name, author = it.author, path = it.getDisplayCover(), @@ -261,7 +261,7 @@ fun BookGroupCover( .padding(1.dp) ) { books.getOrNull(2)?.let { - BookCover( + CoilBookCover( name = it.name, author = it.author, path = it.getDisplayCover(), @@ -276,7 +276,7 @@ fun BookGroupCover( .padding(1.dp) ) { books.getOrNull(3)?.let { - BookCover( + CoilBookCover( name = it.name, author = it.author, path = it.getDisplayCover(), diff --git a/app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt b/app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt index 7506794a6..f44d89d03 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/cover/BookshelfCover.kt @@ -6,11 +6,9 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Update -import androidx.compose.material3.LinearProgressIndicator import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.StrokeCap import androidx.compose.ui.unit.dp import io.legado.app.ui.theme.LegadoTheme import io.legado.app.ui.widget.components.AppLinearProgressIndicator @@ -30,7 +28,7 @@ fun BookshelfCover( onLoadFinish: (() -> Unit)? = null ) { Box(modifier = modifier) { - BookCover( + CoilBookCover( name = name, author = author, path = path, diff --git a/app/src/main/java/io/legado/app/ui/widget/components/cover/BookCover.kt b/app/src/main/java/io/legado/app/ui/widget/components/cover/CoilBookCover.kt similarity index 99% rename from app/src/main/java/io/legado/app/ui/widget/components/cover/BookCover.kt rename to app/src/main/java/io/legado/app/ui/widget/components/cover/CoilBookCover.kt index 2baac8ff1..5532f4665 100644 --- a/app/src/main/java/io/legado/app/ui/widget/components/cover/BookCover.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/cover/CoilBookCover.kt @@ -27,7 +27,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.drawIntoCanvas @@ -41,13 +40,12 @@ import androidx.core.graphics.withSave import coil.compose.AsyncImage import io.legado.app.ui.config.coverConfig.CoverConfig import io.legado.app.ui.theme.LegadoTheme -import io.legado.app.ui.widget.components.card.GlassCard import io.legado.app.ui.widget.components.card.NormalCard import org.koin.compose.koinInject import io.legado.app.model.BookCover as BookCoverModel @Composable -fun BookCover( +fun CoilBookCover( name: String?, author: String?, path: String?,