From 3b8c25e98321124121b96be855ffea2f5bb3f05d Mon Sep 17 00:00:00 2001 From: HapeLee <1321903405@qq.com> Date: Thu, 27 Nov 2025 00:33:47 +0800 Subject: [PATCH] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E4=B8=80=E4=BA=9B=E5=8F=AF?= =?UTF-8?q?=E5=A4=8D=E7=94=A8=E7=BB=84=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/about/AboutScreen.kt | 6 +- .../{compose => components}/AnimatedText.kt | 2 +- .../legado/app/ui/widget/components/Cover.kt | 47 ++++++++++++++ .../EmptyMessageView.kt | 2 +- .../ui/widget/components/SearchBarSection.kt | 62 +++++++++++++++++++ .../{compose => components}/SettingItem.kt | 4 +- .../SplicedColumnGroup.kt | 2 +- .../{compose => components}/TextCard.kt | 2 +- 8 files changed, 117 insertions(+), 10 deletions(-) rename app/src/main/java/io/legado/app/ui/widget/{compose => components}/AnimatedText.kt (99%) create mode 100644 app/src/main/java/io/legado/app/ui/widget/components/Cover.kt rename app/src/main/java/io/legado/app/ui/widget/{compose => components}/EmptyMessageView.kt (98%) create mode 100644 app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt rename app/src/main/java/io/legado/app/ui/widget/{compose => components}/SettingItem.kt (97%) rename app/src/main/java/io/legado/app/ui/widget/{compose => components}/SplicedColumnGroup.kt (98%) rename app/src/main/java/io/legado/app/ui/widget/{compose => components}/TextCard.kt (97%) diff --git a/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt b/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt index 91868a092..b5df46b87 100644 --- a/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt +++ b/app/src/main/java/io/legado/app/ui/about/AboutScreen.kt @@ -39,9 +39,9 @@ import androidx.compose.ui.unit.sp import io.legado.app.R import io.legado.app.base.AppTheme import io.legado.app.constant.AppConst.appInfo -import io.legado.app.ui.widget.compose.SettingItem -import io.legado.app.ui.widget.compose.SplicedColumnGroup -import io.legado.app.ui.widget.compose.TextCard +import io.legado.app.ui.widget.components.SettingItem +import io.legado.app.ui.widget.components.SplicedColumnGroup +import io.legado.app.ui.widget.components.TextCard @Preview(showBackground = true, name = "Light Mode") @Preview(showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, name = "Dark Mode") diff --git a/app/src/main/java/io/legado/app/ui/widget/compose/AnimatedText.kt b/app/src/main/java/io/legado/app/ui/widget/components/AnimatedText.kt similarity index 99% rename from app/src/main/java/io/legado/app/ui/widget/compose/AnimatedText.kt rename to app/src/main/java/io/legado/app/ui/widget/components/AnimatedText.kt index 315f64ada..968434933 100644 --- a/app/src/main/java/io/legado/app/ui/widget/compose/AnimatedText.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/AnimatedText.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.compose +package io.legado.app.ui.widget.components import androidx.compose.animation.AnimatedContent import androidx.compose.animation.slideInVertically diff --git a/app/src/main/java/io/legado/app/ui/widget/components/Cover.kt b/app/src/main/java/io/legado/app/ui/widget/components/Cover.kt new file mode 100644 index 000000000..a2d7c165a --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/components/Cover.kt @@ -0,0 +1,47 @@ +package io.legado.app.ui.widget.components + +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Book +import androidx.compose.material3.Icon +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage +import coil.request.ImageRequest + +@Composable +fun Cover(path: String?) { + Box( + modifier = Modifier + .width(48.dp) + .height(68.dp) + .clip(RoundedCornerShape(4.dp)) + .background(Color(0xFFEEEEEE)), // 灰色背景 + contentAlignment = Alignment.Center + ) { + if (path == null) { + Icon(Icons.Default.Book, null, tint = Color.Gray) + } else { + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .data(path) + .crossfade(true) + .build(), + contentDescription = null, + contentScale = ContentScale.Crop, + modifier = Modifier.fillMaxSize() + ) + } + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/compose/EmptyMessageView.kt b/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessageView.kt similarity index 98% rename from app/src/main/java/io/legado/app/ui/widget/compose/EmptyMessageView.kt rename to app/src/main/java/io/legado/app/ui/widget/components/EmptyMessageView.kt index 5cbe4d7ae..bccdc24a9 100644 --- a/app/src/main/java/io/legado/app/ui/widget/compose/EmptyMessageView.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/EmptyMessageView.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.compose +package io.legado.app.ui.widget.components import androidx.annotation.StringRes import androidx.compose.foundation.clickable diff --git a/app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt b/app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt new file mode 100644 index 000000000..1bbef2630 --- /dev/null +++ b/app/src/main/java/io/legado/app/ui/widget/components/SearchBarSection.kt @@ -0,0 +1,62 @@ +package io.legado.app.ui.widget.components + +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Clear +import androidx.compose.material.icons.filled.Search +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.material3.TextField +import androidx.compose.material3.TextFieldDefaults +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.unit.dp + +@OptIn(ExperimentalMaterial3Api::class) +@Composable +fun SearchBarSection( + query: String, + onQueryChange: (String) -> Unit +) { + Surface( + modifier = Modifier + .fillMaxWidth() + .padding(horizontal = 16.dp, vertical = 8.dp), + shape = RoundedCornerShape(32.dp), + color = MaterialTheme.colorScheme.surfaceContainerLow + ) { + + TextField( + value = query, + onValueChange = onQueryChange, + placeholder = { Text("搜索书名…") }, + leadingIcon = { Icon(Icons.Default.Search, null) }, + trailingIcon = { + Row(verticalAlignment = Alignment.CenterVertically) { + if (query.isNotEmpty()) { + IconButton(onClick = { onQueryChange("") }) { + Icon(Icons.Default.Clear, contentDescription = null) + } + } + } + }, + singleLine = true, + colors = TextFieldDefaults.colors( + focusedContainerColor = Color.Transparent, + unfocusedContainerColor = Color.Transparent, + disabledContainerColor = Color.Transparent, + focusedIndicatorColor = Color.Transparent, + unfocusedIndicatorColor = Color.Transparent, + ) + ) + } +} \ No newline at end of file diff --git a/app/src/main/java/io/legado/app/ui/widget/compose/SettingItem.kt b/app/src/main/java/io/legado/app/ui/widget/components/SettingItem.kt similarity index 97% rename from app/src/main/java/io/legado/app/ui/widget/compose/SettingItem.kt rename to app/src/main/java/io/legado/app/ui/widget/components/SettingItem.kt index f8662d75f..51aec907b 100644 --- a/app/src/main/java/io/legado/app/ui/widget/compose/SettingItem.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/SettingItem.kt @@ -1,11 +1,10 @@ -package io.legado.app.ui.widget.compose +package io.legado.app.ui.widget.components import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding @@ -25,7 +24,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.graphics.vector.ImageVector -import androidx.compose.ui.res.painterResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview diff --git a/app/src/main/java/io/legado/app/ui/widget/compose/SplicedColumnGroup.kt b/app/src/main/java/io/legado/app/ui/widget/components/SplicedColumnGroup.kt similarity index 98% rename from app/src/main/java/io/legado/app/ui/widget/compose/SplicedColumnGroup.kt rename to app/src/main/java/io/legado/app/ui/widget/components/SplicedColumnGroup.kt index f41c86c57..cb5f34c8e 100644 --- a/app/src/main/java/io/legado/app/ui/widget/compose/SplicedColumnGroup.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/SplicedColumnGroup.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.compose +package io.legado.app.ui.widget.components import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement diff --git a/app/src/main/java/io/legado/app/ui/widget/compose/TextCard.kt b/app/src/main/java/io/legado/app/ui/widget/components/TextCard.kt similarity index 97% rename from app/src/main/java/io/legado/app/ui/widget/compose/TextCard.kt rename to app/src/main/java/io/legado/app/ui/widget/components/TextCard.kt index c67d9a7bc..22c4330df 100644 --- a/app/src/main/java/io/legado/app/ui/widget/compose/TextCard.kt +++ b/app/src/main/java/io/legado/app/ui/widget/components/TextCard.kt @@ -1,4 +1,4 @@ -package io.legado.app.ui.widget.compose +package io.legado.app.ui.widget.components import androidx.compose.ui.graphics.Color import androidx.compose.foundation.clickable