@@ -0,0 +1,62 @@
|
||||
package io.legado.app.base
|
||||
|
||||
import android.app.Dialog
|
||||
import android.content.DialogInterface
|
||||
import android.os.Bundle
|
||||
import android.view.View
|
||||
import androidx.annotation.LayoutRes
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.fragment.app.FragmentManager
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import io.legado.app.constant.AppLog
|
||||
import io.legado.app.help.coroutine.Coroutine
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
abstract class BaseOverlayDialogFragment(
|
||||
@LayoutRes layoutID: Int
|
||||
) : DialogFragment(layoutID) {
|
||||
|
||||
private var onDismissListener: DialogInterface.OnDismissListener? = null
|
||||
|
||||
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
||||
return Dialog(requireContext(), theme)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
onFragmentCreated(view, savedInstanceState)
|
||||
observeLiveBus()
|
||||
}
|
||||
|
||||
abstract fun onFragmentCreated(view: View, savedInstanceState: Bundle?)
|
||||
|
||||
open fun observeLiveBus() {
|
||||
}
|
||||
|
||||
fun setOnDismissListener(onDismissListener: DialogInterface.OnDismissListener?) {
|
||||
this.onDismissListener = onDismissListener
|
||||
}
|
||||
|
||||
override fun onDismiss(dialog: DialogInterface) {
|
||||
super.onDismiss(dialog)
|
||||
onDismissListener?.onDismiss(dialog)
|
||||
}
|
||||
|
||||
override fun show(manager: FragmentManager, tag: String?) {
|
||||
if (isAdded) return
|
||||
kotlin.runCatching {
|
||||
manager.beginTransaction().remove(this).commitAllowingStateLoss()
|
||||
super.show(manager, tag)
|
||||
}.onFailure {
|
||||
AppLog.put("显示对话框失败 tag:$tag", it)
|
||||
}
|
||||
}
|
||||
|
||||
fun <T> execute(
|
||||
scope: CoroutineScope = lifecycleScope,
|
||||
context: CoroutineContext = Dispatchers.IO,
|
||||
block: suspend CoroutineScope.() -> T
|
||||
) = Coroutine.async(scope, context) { block() }
|
||||
}
|
||||
+2
-3
@@ -6,7 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.BaseOverlayDialogFragment
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.DialogClickActionConfigBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
@@ -15,7 +15,7 @@ import io.legado.app.utils.getCompatColor
|
||||
import io.legado.app.utils.putPrefInt
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
|
||||
class MangaClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_config) {
|
||||
class MangaClickActionConfigDialog : BaseOverlayDialogFragment(R.layout.dialog_click_action_config) {
|
||||
private val binding by viewBinding(DialogClickActionConfigBinding::bind)
|
||||
|
||||
private val actions by lazy {
|
||||
@@ -142,4 +142,3 @@ class MangaClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_ac
|
||||
AppConfig.detectMangaClickArea()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.TextView
|
||||
import io.legado.app.R
|
||||
import io.legado.app.base.BaseDialogFragment
|
||||
import io.legado.app.base.BaseOverlayDialogFragment
|
||||
import io.legado.app.constant.PreferKey
|
||||
import io.legado.app.databinding.DialogClickActionConfigBinding
|
||||
import io.legado.app.help.config.AppConfig
|
||||
@@ -19,7 +19,7 @@ import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
/**
|
||||
* 点击区域设置
|
||||
*/
|
||||
class ClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_config) {
|
||||
class ClickActionConfigDialog : BaseOverlayDialogFragment(R.layout.dialog_click_action_config) {
|
||||
private val binding by viewBinding(DialogClickActionConfigBinding::bind)
|
||||
private val actions by lazy {
|
||||
linkedMapOf(
|
||||
@@ -147,4 +147,4 @@ class ClickActionConfigDialog : BaseDialogFragment(R.layout.dialog_click_action_
|
||||
AppConfig.detectClickArea()
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user