移除了边框设置(因为MIUIX主题暂不生效,在考虑搞个更通用的)
This commit is contained in:
@@ -150,11 +150,6 @@ object ThemeImportExport {
|
||||
|
||||
// 容器设置
|
||||
containerOpacity = ThemeConfig.containerOpacity,
|
||||
enableContainerBorder = ThemeConfig.enableContainerBorder,
|
||||
containerBorderWidth = ThemeConfig.containerBorderWidth,
|
||||
containerBorderStyle = ThemeConfig.containerBorderStyle,
|
||||
containerBorderColor = ThemeConfig.containerBorderColor,
|
||||
containerBorderDashWidth = ThemeConfig.containerBorderDashWidth,
|
||||
|
||||
// 分割线设置
|
||||
enableItemDivider = ThemeConfig.enableItemDivider,
|
||||
@@ -238,11 +233,6 @@ object ThemeImportExport {
|
||||
|
||||
// 容器设置
|
||||
ThemeConfig.containerOpacity = data.containerOpacity
|
||||
ThemeConfig.enableContainerBorder = data.enableContainerBorder
|
||||
ThemeConfig.containerBorderWidth = data.containerBorderWidth
|
||||
ThemeConfig.containerBorderStyle = data.containerBorderStyle
|
||||
ThemeConfig.containerBorderColor = data.containerBorderColor
|
||||
ThemeConfig.containerBorderDashWidth = data.containerBorderDashWidth
|
||||
|
||||
// 分割线设置
|
||||
ThemeConfig.enableItemDivider = data.enableItemDivider
|
||||
@@ -379,11 +369,6 @@ data class ThemeExportData(
|
||||
|
||||
// 容器设置
|
||||
val containerOpacity: Int = 100,
|
||||
val enableContainerBorder: Boolean = false,
|
||||
val containerBorderWidth: Float = 1f,
|
||||
val containerBorderStyle: String = "solid",
|
||||
val containerBorderColor: Int = 0,
|
||||
val containerBorderDashWidth: Float = 4f,
|
||||
|
||||
// 分割线设置
|
||||
val enableItemDivider: Boolean = false,
|
||||
|
||||
@@ -98,16 +98,6 @@ object ThemeConfig {
|
||||
|
||||
var labelContainerColor by prefDelegate(PreferKey.labelContainerColor, 0)
|
||||
|
||||
var enableContainerBorder by prefDelegate(PreferKey.enableContainerBorder, false)
|
||||
|
||||
var containerBorderWidth by prefDelegate(PreferKey.containerBorderWidth, 1f)
|
||||
|
||||
var containerBorderStyle by prefDelegate(PreferKey.containerBorderStyle, "solid")
|
||||
|
||||
var containerBorderColor by prefDelegate(PreferKey.containerBorderColor, 0)
|
||||
|
||||
var containerBorderDashWidth by prefDelegate(PreferKey.containerBorderDashWidth, 4f)
|
||||
|
||||
var enableItemDivider by prefDelegate(PreferKey.enableItemDivider, false)
|
||||
|
||||
var itemDividerWidth by prefDelegate(PreferKey.itemDividerWidth, 1f)
|
||||
|
||||
@@ -136,7 +136,6 @@ fun ThemeConfigScreen(
|
||||
var showRestartDialog by remember { mutableStateOf(false) }
|
||||
var showLauncherIconPicker by remember { mutableStateOf(false) }
|
||||
var showBorderColorPicker by remember { mutableStateOf(false) }
|
||||
var currentBorderColorKey by remember { mutableStateOf("containerBorderColor") }
|
||||
var showNavIconSheet by remember { mutableStateOf(false) }
|
||||
var showFontSheet by remember { mutableStateOf(false) }
|
||||
var fontItems by remember { mutableStateOf<List<FileDoc>>(emptyList()) }
|
||||
@@ -609,62 +608,9 @@ fun ThemeConfigScreen(
|
||||
}
|
||||
}
|
||||
|
||||
// Border settings
|
||||
// Container settings
|
||||
item {
|
||||
SplicedColumnGroup(title = "容器设置") {
|
||||
SwitchSettingItem(
|
||||
title = "显示容器边框",
|
||||
checked = ThemeConfig.enableContainerBorder,
|
||||
onCheckedChange = { ThemeConfig.enableContainerBorder = it }
|
||||
)
|
||||
if (ThemeConfig.enableContainerBorder) {
|
||||
SliderSettingItem(
|
||||
title = "边框粗细",
|
||||
description = "${ThemeConfig.containerBorderWidth}dp",
|
||||
value = ThemeConfig.containerBorderWidth,
|
||||
defaultValue = 1f,
|
||||
valueRange = 0f..5f,
|
||||
steps = 49,
|
||||
onValueChange = { ThemeConfig.containerBorderWidth = it }
|
||||
)
|
||||
DropdownListSettingItem(
|
||||
title = "边框样式",
|
||||
selectedValue = ThemeConfig.containerBorderStyle,
|
||||
displayEntries = arrayOf("实线", "虚线"),
|
||||
entryValues = arrayOf("solid", "dashed"),
|
||||
onValueChange = { ThemeConfig.containerBorderStyle = it }
|
||||
)
|
||||
if (ThemeConfig.containerBorderStyle == "dashed") {
|
||||
SliderSettingItem(
|
||||
title = "虚线间隔",
|
||||
description = "${ThemeConfig.containerBorderDashWidth}dp",
|
||||
value = ThemeConfig.containerBorderDashWidth,
|
||||
defaultValue = 4f,
|
||||
valueRange = 1f..10f,
|
||||
steps = 89,
|
||||
onValueChange = { ThemeConfig.containerBorderDashWidth = it }
|
||||
)
|
||||
}
|
||||
ClickableSettingItem(
|
||||
title = "边框颜色",
|
||||
option = if (ThemeConfig.containerBorderColor != 0) "#${Integer.toHexString(ThemeConfig.containerBorderColor).uppercase()}" else stringResource(R.string.click_to_select),
|
||||
onClick = {
|
||||
currentBorderColorKey = "containerBorderColor"
|
||||
showBorderColorPicker = true
|
||||
},
|
||||
trailingContent = {
|
||||
if (ThemeConfig.containerBorderColor != 0) {
|
||||
Box(
|
||||
modifier = Modifier
|
||||
.size(28.dp)
|
||||
.clip(CircleShape)
|
||||
.background(Color(ThemeConfig.containerBorderColor))
|
||||
.border(1.dp, MaterialTheme.colorScheme.outlineVariant, CircleShape)
|
||||
)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
SwitchSettingItem(
|
||||
title = "显示分割线",
|
||||
checked = ThemeConfig.enableItemDivider,
|
||||
@@ -693,7 +639,6 @@ fun ThemeConfigScreen(
|
||||
title = "分割线颜色",
|
||||
option = if (ThemeConfig.itemDividerColor != 0) "#${Integer.toHexString(ThemeConfig.itemDividerColor).uppercase()}" else stringResource(R.string.click_to_select),
|
||||
onClick = {
|
||||
currentBorderColorKey = "itemDividerColor"
|
||||
showBorderColorPicker = true
|
||||
},
|
||||
trailingContent = {
|
||||
@@ -790,17 +735,11 @@ fun ThemeConfigScreen(
|
||||
|
||||
ColorPickerSheet(
|
||||
show = showBorderColorPicker,
|
||||
initialColor = when (currentBorderColorKey) {
|
||||
"containerBorderColor" -> ThemeConfig.containerBorderColor
|
||||
"itemDividerColor" -> ThemeConfig.itemDividerColor
|
||||
else -> 0
|
||||
},
|
||||
initialColor = ThemeConfig.itemDividerColor,
|
||||
onDismissRequest = { showBorderColorPicker = false },
|
||||
onColorSelected = {
|
||||
when (currentBorderColorKey) {
|
||||
"containerBorderColor" -> ThemeConfig.containerBorderColor = it
|
||||
"itemDividerColor" -> ThemeConfig.itemDividerColor = it
|
||||
}
|
||||
ThemeConfig.itemDividerColor = it
|
||||
showBorderColorPicker = false
|
||||
}
|
||||
)
|
||||
|
||||
@@ -813,10 +752,7 @@ fun ThemeConfigScreen(
|
||||
imageVector = Icons.Default.Delete,
|
||||
contentDescription = "清除",
|
||||
onClick = {
|
||||
fontFolderUri = null
|
||||
context.putPrefString(PreferKey.fontFolder, "")
|
||||
ThemeConfig.appFontPath = null
|
||||
fontItems = emptyList()
|
||||
showFontSheet = false
|
||||
}
|
||||
)
|
||||
|
||||
@@ -5,7 +5,6 @@ import androidx.compose.animation.ExperimentalSharedTransitionApi
|
||||
import androidx.compose.animation.SharedTransitionScope
|
||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.combinedClickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -29,16 +28,10 @@ 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.draw.drawWithContent
|
||||
import androidx.compose.ui.draw.shadow
|
||||
import androidx.compose.ui.geometry.CornerRadius
|
||||
import androidx.compose.ui.geometry.Offset
|
||||
import androidx.compose.ui.geometry.Size
|
||||
import androidx.compose.ui.graphics.Brush
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.graphics.PathEffect
|
||||
import androidx.compose.ui.graphics.Shadow
|
||||
import androidx.compose.ui.graphics.drawscope.Stroke
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.font.FontWeight
|
||||
import androidx.compose.ui.text.style.TextAlign
|
||||
@@ -101,41 +94,6 @@ fun BookshelfItem(
|
||||
LegadoTheme.colorScheme.cardContainer
|
||||
}
|
||||
|
||||
val borderWidth = ThemeConfig.containerBorderWidth.dp
|
||||
val borderColor = if (ThemeConfig.containerBorderColor != 0) {
|
||||
Color(ThemeConfig.containerBorderColor)
|
||||
} else {
|
||||
LegadoTheme.colorScheme.outline
|
||||
}
|
||||
val borderStyle = ThemeConfig.containerBorderStyle
|
||||
val enableBorder = ThemeConfig.enableDeepPersonalization && ThemeConfig.enableContainerBorder
|
||||
|
||||
val borderModifier = if (enableBorder && borderStyle == "solid") {
|
||||
Modifier.border(borderWidth, borderColor, MaterialTheme.shapes.small)
|
||||
} else if (enableBorder) {
|
||||
val dashWidth = ThemeConfig.containerBorderDashWidth
|
||||
val pathEffect = when (borderStyle) {
|
||||
"dashed" -> PathEffect.dashPathEffect(floatArrayOf(dashWidth, dashWidth))
|
||||
"dotted" -> PathEffect.dashPathEffect(floatArrayOf(dashWidth / 2, dashWidth))
|
||||
else -> null
|
||||
}
|
||||
Modifier.drawWithContent {
|
||||
drawContent()
|
||||
val cornerRadius = CornerRadius(8.dp.toPx(), 8.dp.toPx())
|
||||
val halfStroke = borderWidth.toPx() / 2
|
||||
drawRoundRect(
|
||||
color = borderColor,
|
||||
topLeft = Offset(halfStroke, halfStroke),
|
||||
size = Size(size.width - borderWidth.toPx(), size.height - borderWidth.toPx()),
|
||||
cornerRadius = cornerRadius,
|
||||
style = Stroke(width = borderWidth.toPx(), pathEffect = pathEffect)
|
||||
)
|
||||
}
|
||||
} else {
|
||||
LegadoTheme.colorScheme.surface.copy(alpha = 0f)
|
||||
Modifier
|
||||
}
|
||||
|
||||
if (isGrid) {
|
||||
Box(
|
||||
modifier = modifier
|
||||
@@ -209,8 +167,7 @@ fun BookshelfItem(
|
||||
NormalCard(
|
||||
modifier = modifier
|
||||
.fillMaxWidth()
|
||||
.padding(all = 4.dp)
|
||||
.then(borderModifier),
|
||||
.padding(all = 4.dp),
|
||||
cornerRadius = 8.dp,
|
||||
containerColor = if (isSelected) {
|
||||
LegadoTheme.colorScheme.secondaryContainer
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package io.legado.app.ui.rss.article
|
||||
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.clickable
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Box
|
||||
@@ -67,7 +66,6 @@ import io.legado.app.ui.widget.components.cover.buildCoverImageRequest
|
||||
import io.legado.app.utils.toastOnUi
|
||||
import io.legado.app.ui.config.themeConfig.ThemeConfig
|
||||
import androidx.compose.ui.graphics.Color
|
||||
import androidx.compose.ui.unit.Dp
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.flow.catch
|
||||
import kotlinx.coroutines.flow.flowOn
|
||||
@@ -356,22 +354,11 @@ private fun RssArticleItem(
|
||||
RssArticleLayout.Waterfall -> 3
|
||||
}
|
||||
|
||||
// 边框设置
|
||||
val borderModifier = if (ThemeConfig.enableContainerBorder) {
|
||||
Modifier.border(
|
||||
width = Dp(ThemeConfig.containerBorderWidth),
|
||||
color = Color(ThemeConfig.containerBorderColor),
|
||||
shape = RoundedCornerShape(12.dp)
|
||||
)
|
||||
} else {
|
||||
Modifier
|
||||
}
|
||||
|
||||
GlassCard(
|
||||
onClick = { onClick(article) },
|
||||
cornerRadius = 12.dp,
|
||||
containerColor = containerColor,
|
||||
modifier = Modifier.fillMaxWidth().then(borderModifier)
|
||||
modifier = Modifier.fillMaxWidth()
|
||||
) {
|
||||
when (layout) {
|
||||
RssArticleLayout.List -> {
|
||||
|
||||
@@ -1,14 +1,12 @@
|
||||
package io.legado.app.ui.widget.components
|
||||
|
||||
import androidx.compose.animation.animateContentSize
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.layout.Arrangement
|
||||
import androidx.compose.foundation.layout.Column
|
||||
import androidx.compose.foundation.layout.ColumnScope
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
import androidx.compose.foundation.shape.RoundedCornerShape
|
||||
import androidx.compose.material3.MaterialTheme
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.runtime.CompositionLocalProvider
|
||||
import androidx.compose.runtime.compositionLocalOf
|
||||
@@ -44,13 +42,6 @@ fun SplicedColumnGroup(
|
||||
items: @Composable ColumnScope.() -> Unit,
|
||||
) {
|
||||
val composeEngine = LegadoTheme.composeEngine
|
||||
val enableBorder = ThemeConfig.enableContainerBorder
|
||||
val borderWidth = ThemeConfig.containerBorderWidth.dp
|
||||
val borderColor = if (ThemeConfig.containerBorderColor != 0) {
|
||||
Color(ThemeConfig.containerBorderColor)
|
||||
} else {
|
||||
MaterialTheme.colorScheme.outline
|
||||
}
|
||||
val enableItemDivider = ThemeConfig.enableItemDivider
|
||||
val currentIndex = remember { mutableIntStateOf(0) }
|
||||
|
||||
@@ -88,23 +79,8 @@ fun SplicedColumnGroup(
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.animateContentSize()
|
||||
.clip(RoundedCornerShape(16.dp))
|
||||
.then(
|
||||
if (enableBorder) {
|
||||
Modifier.border(
|
||||
width = borderWidth,
|
||||
color = borderColor,
|
||||
shape = RoundedCornerShape(16.dp)
|
||||
)
|
||||
} else {
|
||||
Modifier
|
||||
}
|
||||
),
|
||||
verticalArrangement = if (enableBorder) {
|
||||
Arrangement.spacedBy(0.dp)
|
||||
} else {
|
||||
Arrangement.spacedBy(2.dp)
|
||||
}
|
||||
.clip(RoundedCornerShape(16.dp)),
|
||||
verticalArrangement = Arrangement.spacedBy(2.dp)
|
||||
) {
|
||||
currentIndex.intValue = 0
|
||||
items()
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package io.legado.app.ui.widget.components.explore
|
||||
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.padding
|
||||
@@ -40,14 +39,6 @@ fun ExploreKindItem(
|
||||
|
||||
val cornerRadius = 12.dp
|
||||
|
||||
val enableBorder = ThemeConfig.enableDeepPersonalization && ThemeConfig.enableContainerBorder
|
||||
val borderWidth = (ThemeConfig.containerBorderWidth - 0.8f).coerceAtLeast(0.1f).dp
|
||||
val borderColor = if (ThemeConfig.containerBorderColor != 0) {
|
||||
androidx.compose.ui.graphics.Color(ThemeConfig.containerBorderColor)
|
||||
} else {
|
||||
LegadoTheme.colorScheme.outline
|
||||
}
|
||||
|
||||
if (isClickable) {
|
||||
GlassCard(
|
||||
onClick = onClick,
|
||||
@@ -55,9 +46,6 @@ fun ExploreKindItem(
|
||||
containerColor = backgroundColor,
|
||||
contentColor = LegadoTheme.colorScheme.onSurface,
|
||||
modifier = modifier,
|
||||
border = if (enableBorder) {
|
||||
BorderStroke(borderWidth, borderColor)
|
||||
} else null
|
||||
) {
|
||||
KindText(
|
||||
text = displayText,
|
||||
@@ -71,9 +59,6 @@ fun ExploreKindItem(
|
||||
containerColor = backgroundColor,
|
||||
contentColor = LegadoTheme.colorScheme.primary,
|
||||
modifier = modifier,
|
||||
border = if (enableBorder) {
|
||||
BorderStroke(borderWidth, borderColor)
|
||||
} else BorderStroke(1.dp, LegadoTheme.colorScheme.outlineVariant)
|
||||
) {
|
||||
KindText(
|
||||
text = displayText,
|
||||
|
||||
+1
-14
@@ -2,9 +2,7 @@ package io.legado.app.ui.widget.components.explore
|
||||
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.foundation.background
|
||||
import androidx.compose.foundation.border
|
||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||
import androidx.compose.foundation.interaction.collectIsFocusedAsState
|
||||
import androidx.compose.foundation.layout.Box
|
||||
import androidx.compose.foundation.layout.fillMaxWidth
|
||||
import androidx.compose.foundation.layout.height
|
||||
@@ -320,17 +318,7 @@ private fun ExploreKindCompactTextField(
|
||||
isMiuix: Boolean
|
||||
) {
|
||||
val interactionSource = remember { MutableInteractionSource() }
|
||||
val isFocused by interactionSource.collectIsFocusedAsState()
|
||||
val shape = RoundedCornerShape(10.dp)
|
||||
val enableBorder = ThemeConfig.enableDeepPersonalization && ThemeConfig.enableContainerBorder
|
||||
val borderWidth = ThemeConfig.containerBorderWidth.dp
|
||||
val borderColor = if (ThemeConfig.containerBorderColor != 0) {
|
||||
Color(ThemeConfig.containerBorderColor)
|
||||
} else if (isFocused) {
|
||||
LegadoTheme.colorScheme.primary
|
||||
} else {
|
||||
Color.Transparent
|
||||
}
|
||||
|
||||
BasicTextField(
|
||||
value = value,
|
||||
@@ -342,8 +330,7 @@ private fun ExploreKindCompactTextField(
|
||||
modifier = modifier
|
||||
.height(34.dp)
|
||||
.clip(shape)
|
||||
.background(backgroundColor)
|
||||
.border(width = borderWidth, color = borderColor, shape = shape),
|
||||
.background(backgroundColor),
|
||||
decorationBox = { innerTextField ->
|
||||
Box(
|
||||
modifier = Modifier
|
||||
|
||||
Reference in New Issue
Block a user