From 2b2b39335a44bafedbc9cbfedd178325ce715d87 Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Mon, 30 Mar 2026 13:00:34 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=88=97=E6=95=B0=E5=B0=81=E9=9D=A2=E7=AD=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle.kts | 1 - .../java/io/legado/app/constant/PreferKey.kt | 2 ++ .../config/bookshelfConfig/BookshelfConfig.kt | 10 +++++++ .../coverConfig/CoverRuleConfigSheet.kt | 3 ++ .../ui/main/bookshelf/BookshelfConfigSheet.kt | 28 +++++++++++++++++++ .../app/ui/main/bookshelf/BookshelfScreen.kt | 7 ++++- .../ui/widget/components/cover/BookCover.kt | 5 +++- app/version.properties | 2 +- modules/book/build.gradle | 1 - modules/rhino/build.gradle | 1 - 10 files changed, 54 insertions(+), 6 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index cb9419239..c71e72e7e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -35,7 +35,6 @@ android { kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(21)) - vendor.set(JvmVendorSpec.ADOPTIUM) } } diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index bccea64ad..daa874e6c 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -231,6 +231,8 @@ object PreferKey { const val sharedElementEnterTransitionEnable = "sharedElementEnterTransitionEnable" const val bookshelfLayoutGridLandscape = "bookshelfLayoutGridLandscape" const val bookshelfLayoutGridPortrait = "bookshelfLayoutGridPortrait" + const val bookshelfLayoutListLandscape = "bookshelfLayoutListLandscape" + const val bookshelfLayoutListPortrait = "bookshelfLayoutListPortrait" const val bookshelfTitleSmallFont = "bookshelfTitleSmallFont" const val bookshelfTitleCenter = "bookshelfTitleCenter" const val bookshelfTitleMaxLines = "bookshelfTitleMaxLines" diff --git a/app/src/main/java/io/legado/app/ui/config/bookshelfConfig/BookshelfConfig.kt b/app/src/main/java/io/legado/app/ui/config/bookshelfConfig/BookshelfConfig.kt index 47b1051b4..72b99fa9e 100644 --- a/app/src/main/java/io/legado/app/ui/config/bookshelfConfig/BookshelfConfig.kt +++ b/app/src/main/java/io/legado/app/ui/config/bookshelfConfig/BookshelfConfig.kt @@ -88,6 +88,16 @@ object BookshelfConfig { */ var bookshelfLayoutGridLandscape by prefDelegate(PreferKey.bookshelfLayoutGridLandscape, 7) + /** + * 竖屏书架列表列数 + */ + var bookshelfLayoutListPortrait by prefDelegate(PreferKey.bookshelfLayoutListPortrait, 1) + + /** + * 横屏书架列表列数 + */ + var bookshelfLayoutListLandscape by prefDelegate(PreferKey.bookshelfLayoutListLandscape, 1) + /** * 网格模式布局样式: 0:标准, 1:紧凑, 2:仅封面 */ diff --git a/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverRuleConfigSheet.kt b/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverRuleConfigSheet.kt index 974f3f42f..e8a79316e 100644 --- a/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverRuleConfigSheet.kt +++ b/app/src/main/java/io/legado/app/ui/config/coverConfig/CoverRuleConfigSheet.kt @@ -6,6 +6,8 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Checkbox import androidx.compose.material3.ExperimentalMaterial3Api @@ -57,6 +59,7 @@ fun CoverRuleConfigSheet( modifier = Modifier .fillMaxWidth() .padding(16.dp) + .verticalScroll(rememberScrollState()) ) { Text( text = stringResource(R.string.cover_rule), diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt index b9195137f..6229b63f5 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfConfigSheet.kt @@ -127,6 +127,20 @@ fun BookshelfConfigSheet( onValueChange = { BookshelfConfig.bookshelfGridLayout = it.toInt() } ) + val gridCount = + if (isLandscape) BookshelfConfig.bookshelfLayoutGridLandscape else BookshelfConfig.bookshelfLayoutGridPortrait + CompactSliderSettingItem( + title = stringResource(R.string.number_rows_columns), + value = gridCount.toFloat(), + valueRange = 1f..15f, + steps = 14, + onValueChange = { + if (isLandscape) BookshelfConfig.bookshelfLayoutGridLandscape = + it.toInt() + else BookshelfConfig.bookshelfLayoutGridPortrait = it.toInt() + } + ) + CompactSwitchSettingItem( title = "标题小字体", checked = BookshelfConfig.bookshelfTitleSmallFont, @@ -165,6 +179,20 @@ fun BookshelfConfigSheet( color = MaterialTheme.colorScheme.surface, onCheckedChange = { BookshelfConfig.bookshelfShowDivider = it } ) + + val listColCount = + if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape else BookshelfConfig.bookshelfLayoutListPortrait + CompactSliderSettingItem( + title = stringResource(R.string.number_rows_columns), + value = listColCount.toFloat(), + valueRange = 1f..5f, + steps = 4, + onValueChange = { + if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape = + it.toInt() + else BookshelfConfig.bookshelfLayoutListPortrait = it.toInt() + } + ) } } diff --git a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt index 98e872661..725167c76 100644 --- a/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt +++ b/app/src/main/java/io/legado/app/ui/main/bookshelf/BookshelfScreen.kt @@ -226,6 +226,8 @@ fun BookshelfScreen( if (isLandscape) BookshelfConfig.bookshelfLayoutModeLandscape else BookshelfConfig.bookshelfLayoutModePortrait val bookshelfLayoutGrid = if (isLandscape) BookshelfConfig.bookshelfLayoutGridLandscape else BookshelfConfig.bookshelfLayoutGridPortrait + val bookshelfLayoutList = + if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape else BookshelfConfig.bookshelfLayoutListPortrait ListScaffold( title = title, @@ -481,6 +483,7 @@ fun BookshelfScreen( uiState = uiState, bookshelfLayoutMode = bookshelfLayoutMode, bookshelfLayoutGrid = bookshelfLayoutGrid, + bookshelfLayoutList = bookshelfLayoutList, onBookClick = onBookClick, onBookLongClick = onBookLongClick ) @@ -584,11 +587,13 @@ fun BookshelfPage( uiState: BookshelfUiState, bookshelfLayoutMode: Int, bookshelfLayoutGrid: Int, + bookshelfLayoutList: Int, onBookClick: (BookShelfItem) -> Unit, onBookLongClick: (BookShelfItem) -> Unit ) { + val columns = if (bookshelfLayoutMode == 0) bookshelfLayoutList else bookshelfLayoutGrid FastScrollLazyVerticalGrid( - columns = GridCells.Fixed(bookshelfLayoutGrid.coerceAtLeast(1)), + columns = GridCells.Fixed(columns.coerceAtLeast(1)), modifier = Modifier.fillMaxSize(), contentPadding = PaddingValues( top = paddingValues.calculateTopPadding(), 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/BookCover.kt index 575c915b9..0ca60ed76 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/BookCover.kt @@ -74,8 +74,10 @@ fun BookCover( val hasCustomDefault = !randomPath.isNullOrBlank() var isOnlineCoverLoaded by remember(path) { mutableStateOf(false) } + var isFinalPathLoaded by remember(path) { mutableStateOf(false) } LaunchedEffect(finalPath) { isOnlineCoverLoaded = false + isFinalPathLoaded = false } BoxWithConstraints( @@ -98,7 +100,7 @@ fun BookCover( (minOf(maxWidth, maxHeight).toPx() / 3f).toDp() } - if (hasCustomDefault) { + if (hasCustomDefault && !isFinalPathLoaded) { AsyncImage( model = ImageRequest.Builder(context) .data(randomPath) @@ -125,6 +127,7 @@ fun BookCover( modifier = Modifier.fillMaxSize(), onSuccess = { isOnlineCoverLoaded = true + isFinalPathLoaded = true onLoadFinish?.invoke() }, onError = { diff --git a/app/version.properties b/app/version.properties index a5149387f..89f988b9e 100644 --- a/app/version.properties +++ b/app/version.properties @@ -1,5 +1,5 @@ VERSION_MAJOR=3 VERSION_MINOR=26 -VERSION_PATCH=9 +VERSION_PATCH=10 VERSION_SUFFIX=0 # 1 = Pre, 0 = Release \ No newline at end of file diff --git a/modules/book/build.gradle b/modules/book/build.gradle index a7651605d..2637857a9 100644 --- a/modules/book/build.gradle +++ b/modules/book/build.gradle @@ -9,7 +9,6 @@ android { kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(21)) - vendor.set(JvmVendorSpec.ADOPTIUM) } } defaultConfig { diff --git a/modules/rhino/build.gradle b/modules/rhino/build.gradle index e3a927d42..fa90d4313 100644 --- a/modules/rhino/build.gradle +++ b/modules/rhino/build.gradle @@ -11,7 +11,6 @@ android { kotlin { jvmToolchain { languageVersion.set(JavaLanguageVersion.of(21)) - vendor.set(JvmVendorSpec.ADOPTIUM) } } defaultConfig {