This commit is contained in:
kunfei
2022-03-14 21:19:33 +08:00
parent 1019739ec2
commit 13ef2e8844
4 changed files with 212 additions and 19 deletions
@@ -20,8 +20,8 @@ import io.legado.app.ui.document.HandleFileContract
import io.legado.app.ui.login.SourceLoginActivity
import io.legado.app.ui.qrcode.QrCodeResult
import io.legado.app.ui.rss.source.debug.RssSourceDebugActivity
import io.legado.app.ui.widget.UrlOptionDialog
import io.legado.app.ui.widget.dialog.TextDialog
import io.legado.app.ui.widget.dialog.UrlOptionDialog
import io.legado.app.ui.widget.keyboard.KeyboardToolPop
import io.legado.app.utils.*
import io.legado.app.utils.viewbindingdelegate.viewBinding
@@ -254,7 +254,7 @@ class RssSourceEditActivity :
override fun onHelpActionSelect(action: String) {
when (action) {
"urlOption" -> urlOptionDialogState.value = true
"urlOption" -> UrlOptionDialog(this).show()
"ruleHelp" -> showHelp("ruleHelp")
"jsHelp" -> showHelp("jsHelp")
"regexHelp" -> showHelp("regexHelp")
@@ -1,9 +1,11 @@
package io.legado.app.ui.widget
package io.legado.app.ui.widget.dialog
import android.content.Context
import android.os.Bundle
import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.wrapContentSize
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.text.KeyboardOptions
import androidx.compose.foundation.verticalScroll
@@ -12,17 +14,37 @@ import androidx.compose.runtime.Composable
import androidx.compose.runtime.MutableState
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.tooling.preview.Preview
import io.legado.app.R
import io.legado.app.databinding.DialogUrlOptionEditBinding
import io.legado.app.model.analyzeRule.AnalyzeUrl
import io.legado.app.ui.theme.AppTheme
import io.legado.app.ui.widget.checkbox.LabelledCheckBox
import io.legado.app.utils.GSON
import io.legado.app.utils.setLayout
import splitties.init.appCtx
class UrlOptionDialog(context: Context) : AlertDialog(context) {
val binding = DialogUrlOptionEditBinding.inflate(layoutInflater)
override fun onStart() {
super.onStart()
setLayout(1f, ViewGroup.LayoutParams.WRAP_CONTENT)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(binding.root)
binding.tvOk.setOnClickListener {
dismiss()
}
}
}
@Composable
fun UrlOptionDialog(openState: MutableState<Boolean>, confirm: (String) -> Unit) {
@@ -50,12 +72,7 @@ fun UrlOptionDialog(openState: MutableState<Boolean>, confirm: (String) -> Unit)
Text(text = "url参数")
},
text = {
Surface(
modifier = Modifier
.fillMaxSize()
.wrapContentSize(align = Alignment.Center),
color = MaterialTheme.colors.background
) {
Surface() {
UrlOptionView(urlOption = urlOption)
}
}
@@ -1,11 +1,13 @@
package io.legado.app.utils
import android.app.Dialog
import android.view.WindowManager
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import io.legado.app.lib.theme.Selector
import io.legado.app.lib.theme.ThemeStore
import io.legado.app.lib.theme.filletBackground
import splitties.systemservices.windowManager
fun AlertDialog.applyTint(): AlertDialog {
window?.setBackgroundDrawable(context.filletBackground)
@@ -30,29 +32,45 @@ fun AlertDialog.requestInputMethod() {
}
fun DialogFragment.setLayout(widthMix: Float, heightMix: Float) {
val dm = requireActivity().windowManager.windowSize
dialog?.window?.setLayout(
dialog?.setLayout(widthMix, heightMix)
}
fun Dialog.setLayout(widthMix: Float, heightMix: Float) {
val dm = context.windowManager.windowSize
window?.setLayout(
(dm.widthPixels * widthMix).toInt(),
(dm.heightPixels * heightMix).toInt()
)
}
fun DialogFragment.setLayout(width: Int, heightMix: Float) {
val dm = requireActivity().windowManager.windowSize
dialog?.window?.setLayout(
dialog?.setLayout(width, heightMix)
}
fun Dialog.setLayout(width: Int, heightMix: Float) {
val dm = context.windowManager.windowSize
window?.setLayout(
width,
(dm.heightPixels * heightMix).toInt()
)
}
fun DialogFragment.setLayout(widthMix: Float, height: Int) {
val dm = requireActivity().windowManager.windowSize
dialog?.window?.setLayout(
dialog?.setLayout(widthMix, height)
}
fun Dialog.setLayout(widthMix: Float, height: Int) {
val dm = context.windowManager.windowSize
window?.setLayout(
(dm.widthPixels * widthMix).toInt(),
height
)
}
fun DialogFragment.setLayout(width: Int, height: Int) {
dialog?.window?.setLayout(width, height)
dialog?.setLayout(width, height)
}
fun Dialog.setLayout(width: Int, height: Int) {
window?.setLayout(width, height)
}