输入url参数对话框

pull/1705/head
kunfei 3 years ago
parent 347d6a1ecc
commit 9f47450767
  1. 5
      app/src/main/java/io/legado/app/help/ContentProcessor.kt
  2. 2
      app/src/main/java/io/legado/app/ui/rss/source/edit/RssSourceEditActivity.kt
  3. 45
      app/src/main/java/io/legado/app/ui/widget/UrlOptionDialog.kt
  4. 48
      app/src/main/java/io/legado/app/ui/widget/checkbox/LabelledCheckBox.kt

@ -107,7 +107,10 @@ class ContentProcessor private constructor(
} }
if (includeTitle) { if (includeTitle) {
//重新添加标题 //重新添加标题
mContent = chapter.getDisplayTitle(getTitleReplaceRules()) + "\n" + mContent mContent = chapter.getDisplayTitle(
getTitleReplaceRules(),
useReplace = useReplace && book.getUseReplaceRule()
) + "\n" + mContent
} }
val contents = arrayListOf<String>() val contents = arrayListOf<String>()
mContent.split("\n").forEach { str -> mContent.split("\n").forEach { str ->

@ -152,7 +152,7 @@ class RssSourceEditActivity :
binding.recyclerView.adapter = adapter binding.recyclerView.adapter = adapter
binding.composeView.setContent { binding.composeView.setContent {
UrlOptionDialog(openState = urlOptionDialogState) { UrlOptionDialog(openState = urlOptionDialogState) {
sendText(it)
} }
} }
} }

@ -4,15 +4,20 @@ import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.material.AlertDialog import androidx.compose.material.AlertDialog
import androidx.compose.material.Checkbox
import androidx.compose.material.Text import androidx.compose.material.Text
import androidx.compose.material.TextButton import androidx.compose.material.TextButton
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
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.R
import io.legado.app.model.analyzeRule.AnalyzeUrl import io.legado.app.model.analyzeRule.AnalyzeUrl
import io.legado.app.ui.theme.AppTheme import io.legado.app.ui.theme.AppTheme
import io.legado.app.ui.widget.checkbox.LabelledCheckBox
import io.legado.app.utils.GSON
import splitties.init.appCtx
@Composable @Composable
@ -26,32 +31,44 @@ fun UrlOptionDialog(openState: MutableState<Boolean>, confirm: (String) -> Unit)
}, },
confirmButton = { confirmButton = {
TextButton(onClick = { TextButton(onClick = {
confirm.invoke("") openState.value = false
confirm.invoke(GSON.toJson(urlOption))
}) { }) {
Text(text = "OK") Text(text = appCtx.getString(R.string.ok))
} }
}, },
dismissButton = { dismissButton = {
TextButton(onClick = { TextButton(onClick = {
openState.value = false openState.value = false
}) { Text(text = "Cancel") } }) { Text(text = appCtx.getString(R.string.cancel)) }
}, },
title = { title = {
Text(text = "url参数") Text(text = "url参数")
}, },
text = { text = {
Column(Modifier.padding(12.dp)) { UrlOptionView(urlOption = urlOption)
Row(Modifier.padding(3.dp)) {
Checkbox(
checked = urlOption.useWebView(),
onCheckedChange = {
urlOption.webView = it
}
)
}
}
} }
) )
} }
} }
}
@Composable
fun UrlOptionView(urlOption: AnalyzeUrl.UrlOption) {
val useWebView = remember {
mutableStateOf(urlOption.useWebView())
}
urlOption.webView = useWebView.value
Column(Modifier.padding(6.dp)) {
Row(Modifier.padding(3.dp)) {
LabelledCheckBox(
checked = useWebView.value,
onCheckedChange = {
useWebView.value = it
},
label = "useWebView"
)
}
}
} }

@ -0,0 +1,48 @@
package io.legado.app.ui.widget.checkbox
import androidx.compose.foundation.clickable
import androidx.compose.foundation.interaction.MutableInteractionSource
import androidx.compose.foundation.layout.*
import androidx.compose.material.ButtonDefaults
import androidx.compose.material.Checkbox
import androidx.compose.material.MaterialTheme
import androidx.compose.material.Text
import androidx.compose.material.ripple.rememberRipple
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.unit.dp
@Composable
fun LabelledCheckBox(
checked: Boolean,
onCheckedChange: ((Boolean) -> Unit),
label: String,
modifier: Modifier = Modifier
) {
Row(
verticalAlignment = Alignment.CenterVertically,
modifier = modifier
.clip(MaterialTheme.shapes.small)
.clickable(
indication = rememberRipple(color = MaterialTheme.colors.primary),
interactionSource = remember { MutableInteractionSource() },
onClick = { onCheckedChange(!checked) }
)
.requiredHeight(ButtonDefaults.MinHeight)
.padding(4.dp)
) {
Checkbox(
checked = checked,
onCheckedChange = null
)
Spacer(Modifier.size(6.dp))
Text(
text = label,
)
}
}
Loading…
Cancel
Save