文件夹样式可与书架样式分开设置
This commit is contained in:
@@ -259,6 +259,12 @@ object PreferKey {
|
|||||||
const val bookshelfLayoutGridPortrait = "bookshelfLayoutGridPortrait"
|
const val bookshelfLayoutGridPortrait = "bookshelfLayoutGridPortrait"
|
||||||
const val bookshelfLayoutListLandscape = "bookshelfLayoutListLandscape"
|
const val bookshelfLayoutListLandscape = "bookshelfLayoutListLandscape"
|
||||||
const val bookshelfLayoutListPortrait = "bookshelfLayoutListPortrait"
|
const val bookshelfLayoutListPortrait = "bookshelfLayoutListPortrait"
|
||||||
|
const val bookshelfFolderLayoutModePortrait = "bookshelfFolderLayoutModePortrait"
|
||||||
|
const val bookshelfFolderLayoutModeLandscape = "bookshelfFolderLayoutModeLandscape"
|
||||||
|
const val bookshelfFolderLayoutGridPortrait = "bookshelfFolderLayoutGridPortrait"
|
||||||
|
const val bookshelfFolderLayoutGridLandscape = "bookshelfFolderLayoutGridLandscape"
|
||||||
|
const val bookshelfFolderLayoutListPortrait = "bookshelfFolderLayoutListPortrait"
|
||||||
|
const val bookshelfFolderLayoutListLandscape = "bookshelfFolderLayoutListLandscape"
|
||||||
const val bookshelfTitleSmallFont = "bookshelfTitleSmallFont"
|
const val bookshelfTitleSmallFont = "bookshelfTitleSmallFont"
|
||||||
const val bookshelfTitleCenter = "bookshelfTitleCenter"
|
const val bookshelfTitleCenter = "bookshelfTitleCenter"
|
||||||
const val bookshelfTitleMaxLines = "bookshelfTitleMaxLines"
|
const val bookshelfTitleMaxLines = "bookshelfTitleMaxLines"
|
||||||
|
|||||||
@@ -123,6 +123,36 @@ object BookshelfConfig {
|
|||||||
*/
|
*/
|
||||||
var bookshelfLayoutListLandscape by prefDelegate(PreferKey.bookshelfLayoutListLandscape, 1)
|
var bookshelfLayoutListLandscape by prefDelegate(PreferKey.bookshelfLayoutListLandscape, 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹竖屏布局模式: 0:列表, 1:网格
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutModePortrait by prefDelegate(PreferKey.bookshelfFolderLayoutModePortrait, 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹竖屏网格列数
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutGridPortrait by prefDelegate(PreferKey.bookshelfFolderLayoutGridPortrait, 3)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹横屏布局模式: 0:列表, 1:网格
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutModeLandscape by prefDelegate(PreferKey.bookshelfFolderLayoutModeLandscape, 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹横屏网格列数
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutGridLandscape by prefDelegate(PreferKey.bookshelfFolderLayoutGridLandscape, 7)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹竖屏列表列数
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutListPortrait by prefDelegate(PreferKey.bookshelfFolderLayoutListPortrait, 1)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件夹横屏列表列数
|
||||||
|
*/
|
||||||
|
var bookshelfFolderLayoutListLandscape by prefDelegate(PreferKey.bookshelfFolderLayoutListLandscape, 1)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 网格模式布局样式: 0:标准, 1:紧凑, 2:仅封面
|
* 网格模式布局样式: 0:标准, 1:紧凑, 2:仅封面
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -91,10 +91,13 @@ fun BookshelfConfigSheet(
|
|||||||
onValueChange = { BookshelfConfig.bookshelfSortOrder = it.toInt() }
|
onValueChange = { BookshelfConfig.bookshelfSortOrder = it.toInt() }
|
||||||
)
|
)
|
||||||
|
|
||||||
// Layout Mode
|
// Layout Mode (non-folder)
|
||||||
val layoutMode =
|
val layoutMode =
|
||||||
if (isLandscape) BookshelfConfig.bookshelfLayoutModeLandscape
|
if (isLandscape) BookshelfConfig.bookshelfLayoutModeLandscape
|
||||||
else BookshelfConfig.bookshelfLayoutModePortrait
|
else BookshelfConfig.bookshelfLayoutModePortrait
|
||||||
|
val folderLayoutMode =
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutModeLandscape
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutModePortrait
|
||||||
|
|
||||||
CompactDropdownSettingItem(
|
CompactDropdownSettingItem(
|
||||||
title = stringResource(R.string.layout_mode),
|
title = stringResource(R.string.layout_mode),
|
||||||
@@ -108,8 +111,57 @@ fun BookshelfConfigSheet(
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Folder Layout Mode
|
||||||
|
AnimatedVisibility(visible = BookshelfConfig.bookGroupStyle == 2) {
|
||||||
|
Column(verticalArrangement = Arrangement.spacedBy(8.dp)) {
|
||||||
|
CompactDropdownSettingItem(
|
||||||
|
title = "文件夹布局模式",
|
||||||
|
description = stringResource(if (isLandscape) R.string.screen_landscape else R.string.screen_portrait),
|
||||||
|
selectedValue = folderLayoutMode.toString(),
|
||||||
|
displayEntries = arrayOf(stringResource(R.string.layout_mode_list), stringResource(R.string.layout_mode_grid)),
|
||||||
|
entryValues = arrayOf("0", "1"),
|
||||||
|
onValueChange = {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutModeLandscape = it.toInt()
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutModePortrait = it.toInt()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
AnimatedVisibility(visible = folderLayoutMode == 1) {
|
||||||
|
val folderGridCount =
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutGridLandscape
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutGridPortrait
|
||||||
|
CompactSliderSettingItem(
|
||||||
|
title = stringResource(R.string.number_rows_columns),
|
||||||
|
value = folderGridCount.toFloat(),
|
||||||
|
valueRange = 1f..15f,
|
||||||
|
steps = 14,
|
||||||
|
onValueChange = {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutGridLandscape = it.toInt()
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutGridPortrait = it.toInt()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
AnimatedVisibility(visible = folderLayoutMode != 1) {
|
||||||
|
val folderListCount =
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutListLandscape
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutListPortrait
|
||||||
|
CompactSliderSettingItem(
|
||||||
|
title = stringResource(R.string.number_rows_columns),
|
||||||
|
value = folderListCount.toFloat(),
|
||||||
|
valueRange = 1f..5f,
|
||||||
|
steps = 4,
|
||||||
|
onValueChange = {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutListLandscape = it.toInt()
|
||||||
|
else BookshelfConfig.bookshelfFolderLayoutListPortrait = it.toInt()
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
AnimatedVisibility(
|
AnimatedVisibility(
|
||||||
visible = BookshelfConfig.bookGroupStyle == 2 && layoutMode == 0
|
visible = BookshelfConfig.bookGroupStyle == 2 && folderLayoutMode == 0
|
||||||
) {
|
) {
|
||||||
Column(
|
Column(
|
||||||
verticalArrangement = Arrangement.spacedBy(8.dp)
|
verticalArrangement = Arrangement.spacedBy(8.dp)
|
||||||
|
|||||||
@@ -333,6 +333,21 @@ fun BookshelfScreen(
|
|||||||
if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape else BookshelfConfig.bookshelfLayoutListPortrait
|
if (isLandscape) BookshelfConfig.bookshelfLayoutListLandscape else BookshelfConfig.bookshelfLayoutListPortrait
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
val bookshelfFolderLayoutMode by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutModeLandscape else BookshelfConfig.bookshelfFolderLayoutModePortrait
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val bookshelfFolderLayoutGrid by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutGridLandscape else BookshelfConfig.bookshelfFolderLayoutGridPortrait
|
||||||
|
}
|
||||||
|
}
|
||||||
|
val bookshelfFolderLayoutList by remember {
|
||||||
|
derivedStateOf {
|
||||||
|
if (isLandscape) BookshelfConfig.bookshelfFolderLayoutListLandscape else BookshelfConfig.bookshelfFolderLayoutListPortrait
|
||||||
|
}
|
||||||
|
}
|
||||||
val currentMenuGroupId by remember {
|
val currentMenuGroupId by remember {
|
||||||
derivedStateOf { if (uiState.isSearch) uiState.selectedGroupId else currentTabGroupId }
|
derivedStateOf { if (uiState.isSearch) uiState.selectedGroupId else currentTabGroupId }
|
||||||
}
|
}
|
||||||
@@ -682,8 +697,8 @@ fun BookshelfScreen(
|
|||||||
) { isRoot ->
|
) { isRoot ->
|
||||||
if (bookGroupStyle == 2 && isRoot && !isUsingStandaloneSearchGroup) {
|
if (bookGroupStyle == 2 && isRoot && !isUsingStandaloneSearchGroup) {
|
||||||
val folderColumns =
|
val folderColumns =
|
||||||
if (bookshelfLayoutMode == 0) bookshelfLayoutList else bookshelfLayoutGrid
|
if (bookshelfFolderLayoutMode == 0) bookshelfFolderLayoutList else bookshelfFolderLayoutGrid
|
||||||
val isGridMode = bookshelfLayoutMode != 0
|
val isGridMode = bookshelfFolderLayoutMode != 0
|
||||||
FastScrollLazyVerticalGrid(
|
FastScrollLazyVerticalGrid(
|
||||||
columns = GridCells.Fixed(folderColumns.coerceAtLeast(1)),
|
columns = GridCells.Fixed(folderColumns.coerceAtLeast(1)),
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
@@ -712,7 +727,7 @@ fun BookshelfScreen(
|
|||||||
} else {
|
} else {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
if (bookshelfLayoutMode == 0) {
|
if (bookshelfFolderLayoutMode == 0) {
|
||||||
BookGroupItemList(
|
BookGroupItemList(
|
||||||
group = group,
|
group = group,
|
||||||
previewBooks = uiState.groupPreviews[group.groupId]
|
previewBooks = uiState.groupPreviews[group.groupId]
|
||||||
|
|||||||
Reference in New Issue
Block a user