[优化] 书架界面优化
This commit is contained in:
@@ -66,6 +66,8 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import io.legado.app.R
|
import io.legado.app.R
|
||||||
import io.legado.app.base.BaseRuleEvent
|
import io.legado.app.base.BaseRuleEvent
|
||||||
|
import io.legado.app.data.appDb
|
||||||
|
import io.legado.app.data.entities.BookGroup
|
||||||
import io.legado.app.ui.about.AppLogSheet
|
import io.legado.app.ui.about.AppLogSheet
|
||||||
import io.legado.app.ui.book.cache.CacheActivity
|
import io.legado.app.ui.book.cache.CacheActivity
|
||||||
import io.legado.app.ui.book.info.GroupSelectSheet
|
import io.legado.app.ui.book.info.GroupSelectSheet
|
||||||
@@ -94,6 +96,7 @@ import io.legado.app.utils.startActivity
|
|||||||
import io.legado.app.utils.toastOnUi
|
import io.legado.app.utils.toastOnUi
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.distinctUntilChanged
|
import kotlinx.coroutines.flow.distinctUntilChanged
|
||||||
|
import kotlinx.coroutines.flow.map
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import org.koin.androidx.compose.koinViewModel
|
import org.koin.androidx.compose.koinViewModel
|
||||||
|
|
||||||
@@ -205,6 +208,17 @@ fun BookshelfScreen(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val currentGroupId =
|
||||||
|
uiState.groups.getOrNull(pagerState.currentPage)?.groupId ?: BookGroup.IdAll
|
||||||
|
val currentGroupBookCountFlow = remember(currentGroupId) {
|
||||||
|
appDb.bookDao.flowBookShelfByGroup(currentGroupId).map { it.size }
|
||||||
|
}
|
||||||
|
val currentGroupBookCount by currentGroupBookCountFlow.collectAsState(initial = 0)
|
||||||
|
val allGroupsBookCountFlow = remember {
|
||||||
|
appDb.bookDao.flowBookShelfByGroup(BookGroup.IdAll).map { it.size }
|
||||||
|
}
|
||||||
|
val allGroupsBookCount by allGroupsBookCountFlow.collectAsState(initial = 0)
|
||||||
|
|
||||||
val bookGroupStyle = BookshelfConfig.bookGroupStyle
|
val bookGroupStyle = BookshelfConfig.bookGroupStyle
|
||||||
// 控制是否处于“文件夹列表”根视图,还是“文件夹内部”书籍视图
|
// 控制是否处于“文件夹列表”根视图,还是“文件夹内部”书籍视图
|
||||||
var isInFolderRoot by remember(bookGroupStyle) { mutableStateOf(bookGroupStyle == 2) }
|
var isInFolderRoot by remember(bookGroupStyle) { mutableStateOf(bookGroupStyle == 2) }
|
||||||
@@ -265,11 +279,18 @@ fun BookshelfScreen(
|
|||||||
|
|
||||||
else -> stringResource(R.string.bookshelf)
|
else -> stringResource(R.string.bookshelf)
|
||||||
}
|
}
|
||||||
val title = if (uiState.upBooksCount > 0) {
|
val title = if (isEditMode) {
|
||||||
|
"$baseTitle • ${selectedBookUrls.size} / $currentGroupBookCount"
|
||||||
|
} else if (uiState.upBooksCount > 0) {
|
||||||
"$baseTitle (${uiState.upBooksCount})"
|
"$baseTitle (${uiState.upBooksCount})"
|
||||||
} else {
|
} else {
|
||||||
baseTitle
|
baseTitle
|
||||||
}
|
}
|
||||||
|
val subtitle = if (isEditMode) {
|
||||||
|
"${stringResource(R.string.all)} • ${stringResource(R.string.book_count, allGroupsBookCount)}"
|
||||||
|
} else {
|
||||||
|
null
|
||||||
|
}
|
||||||
|
|
||||||
if (bookGroupStyle == 2 && !isInFolderRoot && !isEditMode) {
|
if (bookGroupStyle == 2 && !isInFolderRoot && !isEditMode) {
|
||||||
BackHandler {
|
BackHandler {
|
||||||
@@ -292,6 +313,7 @@ fun BookshelfScreen(
|
|||||||
|
|
||||||
ListScaffold(
|
ListScaffold(
|
||||||
title = title,
|
title = title,
|
||||||
|
subtitle = subtitle,
|
||||||
state = uiState,
|
state = uiState,
|
||||||
onBackClick = if (isEditMode) exitEditMode else null,
|
onBackClick = if (isEditMode) exitEditMode else null,
|
||||||
backNavigationIcon = if (isEditMode) AppIcons.Close else AppIcons.Back,
|
backNavigationIcon = if (isEditMode) AppIcons.Close else AppIcons.Back,
|
||||||
|
|||||||
Reference in New Issue
Block a user