fix: 书签界面

This commit is contained in:
HapeLee committed 2026-06-30 09:02:49 +08:00
1 parent 92eaff19ae
commit 3b65bd66b2
1 file changed
+58 -62
@@ -1,8 +1,6 @@
package io.legado.app.ui.widget.components.bookmark package io.legado.app.ui.widget.components.bookmark
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.height
@@ -13,14 +11,13 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.dp
import io.legado.app.data.entities.Bookmark import io.legado.app.data.entities.Bookmark
import io.legado.app.ui.widget.components.AppTextFieldSurface import io.legado.app.ui.widget.components.AppTextFieldSurface
import io.legado.app.ui.widget.components.alert.AppAlertDialog import io.legado.app.ui.widget.components.alert.AppAlertDialog
import io.legado.app.ui.widget.components.button.PrimaryButton import io.legado.app.ui.widget.components.button.series.SmallTonalButton
import io.legado.app.ui.widget.components.button.SecondaryButton import io.legado.app.ui.widget.components.icon.AppIcons
import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet import io.legado.app.ui.widget.components.modalBottomSheet.AppModalBottomSheet
@OptIn(ExperimentalMaterial3Api::class) @OptIn(ExperimentalMaterial3Api::class)
@@ -31,67 +28,24 @@ fun BookmarkEditSheet(
onDismiss: () -> Unit, onDismiss: () -> Unit,
onSave: (Bookmark) -> Unit, onSave: (Bookmark) -> Unit,
onDelete: (Bookmark) -> Unit onDelete: (Bookmark) -> Unit
) {
AppModalBottomSheet(
show = show,
onDismissRequest = onDismiss,
title = bookmark.chapterName,
) {
BookmarkEditContent(
bookmark = bookmark,
onSave = onSave,
onDelete = onDelete,
)
}
}
@Composable
fun BookmarkEditContent(
bookmark: Bookmark,
onSave: (Bookmark) -> Unit,
onDelete: (Bookmark) -> Unit
) { ) {
var showDeleteConfirmDialog by remember { mutableStateOf(false) } var showDeleteConfirmDialog by remember { mutableStateOf(false) }
var bookText by remember(bookmark) { mutableStateOf(bookmark.bookText) } var bookText by remember(bookmark) { mutableStateOf(bookmark.bookText) }
var content by remember(bookmark) { mutableStateOf(bookmark.content) } var content by remember(bookmark) { mutableStateOf(bookmark.content) }
Column( AppModalBottomSheet(
modifier = Modifier show = show,
.fillMaxWidth() onDismissRequest = onDismiss,
.navigationBarsPadding() title = bookmark.chapterName,
) { startAction = {
AppTextFieldSurface( SmallTonalButton(
value = bookText,
onValueChange = { bookText = it },
label = "原文",
modifier = Modifier.fillMaxWidth(),
maxLines = 10
)
Spacer(modifier = Modifier.height(12.dp))
AppTextFieldSurface(
value = content,
onValueChange = { content = it },
label = "摘要/笔记",
modifier = Modifier.fillMaxWidth(),
maxLines = 5
)
Spacer(modifier = Modifier.height(24.dp))
Row(
modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(12.dp),
verticalAlignment = Alignment.CenterVertically
) {
SecondaryButton(
onClick = { showDeleteConfirmDialog = true }, onClick = { showDeleteConfirmDialog = true },
modifier = Modifier.weight(1f), icon = AppIcons.Delete,
text = "删除" contentDescription = "删除"
) )
},
PrimaryButton( endAction = {
SmallTonalButton(
onClick = { onClick = {
val newBookmark = bookmark.apply { val newBookmark = bookmark.apply {
this.bookText = bookText this.bookText = bookText
@@ -99,11 +53,18 @@ fun BookmarkEditContent(
} }
onSave(newBookmark) onSave(newBookmark)
}, },
modifier = Modifier.weight(1f), icon = AppIcons.Check,
text = "保存" contentDescription = "保存"
) )
} }
Spacer(modifier = Modifier.height(16.dp)) ) {
BookmarkEditContent(
bookmark = bookmark,
bookText = bookText,
onBookTextChange = { bookText = it },
content = content,
onContentChange = { content = it },
)
} }
AppAlertDialog( AppAlertDialog(
@@ -120,3 +81,38 @@ fun BookmarkEditContent(
onDismiss = { showDeleteConfirmDialog = false } onDismiss = { showDeleteConfirmDialog = false }
) )
} }
@Composable
fun BookmarkEditContent(
bookmark: Bookmark,
bookText: String,
onBookTextChange: (String) -> Unit,
content: String,
onContentChange: (String) -> Unit,
) {
Column(
modifier = Modifier
.fillMaxWidth()
.navigationBarsPadding()
) {
AppTextFieldSurface(
value = bookText,
onValueChange = onBookTextChange,
label = "原文",
modifier = Modifier.fillMaxWidth(),
maxLines = 10
)
Spacer(modifier = Modifier.height(12.dp))
AppTextFieldSurface(
value = content,
onValueChange = onContentChange,
label = "摘要/笔记",
modifier = Modifier.fillMaxWidth(),
maxLines = 5
)
Spacer(modifier = Modifier.height(16.dp))
}
}