mirror of
https://github.com/KitsunePie/AppErrorsTracking.git
synced 2025-09-04 02:05:16 +08:00
Added isDisableMaterial3 function in DialogBuilderFactory
This commit is contained in:
@@ -35,7 +35,6 @@ import android.widget.TextView
|
|||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.viewbinding.ViewBinding
|
import androidx.viewbinding.ViewBinding
|
||||||
import com.fankes.apperrorstracking.locale.LocaleString
|
import com.fankes.apperrorstracking.locale.LocaleString
|
||||||
import com.fankes.apperrorstracking.ui.activity.errors.AppErrorsDisplayActivity
|
|
||||||
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import com.google.android.material.shape.MaterialShapeDrawable
|
import com.google.android.material.shape.MaterialShapeDrawable
|
||||||
import com.highcapable.yukihookapi.YukiHookAPI
|
import com.highcapable.yukihookapi.YukiHookAPI
|
||||||
@@ -45,24 +44,32 @@ import com.highcapable.yukihookapi.hook.type.android.LayoutInflaterClass
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造 [VB] 自定义 View 对话框
|
* 构造 [VB] 自定义 View 对话框
|
||||||
|
* @param isDisableMaterial3 是否禁用 Material 3 风格对话框 - 默认否
|
||||||
* @param initiate 对话框方法体
|
* @param initiate 对话框方法体
|
||||||
*/
|
*/
|
||||||
@JvmName(name = "showDialog_Generics")
|
@JvmName(name = "showDialog_Generics")
|
||||||
inline fun <reified VB : ViewBinding> Context.showDialog(initiate: DialogBuilder<VB>.() -> Unit) =
|
inline fun <reified VB : ViewBinding> Context.showDialog(isDisableMaterial3: Boolean = false, initiate: DialogBuilder<VB>.() -> Unit) =
|
||||||
DialogBuilder<VB>(context = this, VB::class.java).apply(initiate).show()
|
DialogBuilder<VB>(context = this, isDisableMaterial3, VB::class.java).apply(initiate).show()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 构造对话框
|
* 构造对话框
|
||||||
* @param initiate 对话框方法体
|
* @param initiate 对话框方法体
|
||||||
|
* @param isDisableMaterial3 是否禁用 Material 3 风格对话框 - 默认否
|
||||||
*/
|
*/
|
||||||
inline fun Context.showDialog(initiate: DialogBuilder<*>.() -> Unit) = DialogBuilder<ViewBinding>(context = this).apply(initiate).show()
|
inline fun Context.showDialog(isDisableMaterial3: Boolean = false, initiate: DialogBuilder<*>.() -> Unit) =
|
||||||
|
DialogBuilder<ViewBinding>(context = this, isDisableMaterial3).apply(initiate).show()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 对话框构造器
|
* 对话框构造器
|
||||||
* @param context 实例
|
* @param context 实例
|
||||||
|
* @param isDisableMaterial3 是否禁用 Material 3 风格对话框 - 默认否
|
||||||
* @param bindingClass [ViewBinding] 的 [Class] 实例 or null
|
* @param bindingClass [ViewBinding] 的 [Class] 实例 or null
|
||||||
*/
|
*/
|
||||||
class DialogBuilder<VB : ViewBinding>(val context: Context, private val bindingClass: Class<*>? = null) {
|
class DialogBuilder<VB : ViewBinding>(
|
||||||
|
val context: Context,
|
||||||
|
private val isDisableMaterial3: Boolean = false,
|
||||||
|
private val bindingClass: Class<*>? = null
|
||||||
|
) {
|
||||||
|
|
||||||
/** 实例对象 */
|
/** 实例对象 */
|
||||||
private var instance: AlertDialog.Builder? = null
|
private var instance: AlertDialog.Builder? = null
|
||||||
@@ -92,8 +99,8 @@ class DialogBuilder<VB : ViewBinding>(val context: Context, private val bindingC
|
|||||||
init {
|
init {
|
||||||
if (YukiHookAPI.Status.isXposedEnvironment) error("This dialog is not allowed to created in Xposed environment")
|
if (YukiHookAPI.Status.isXposedEnvironment) error("This dialog is not allowed to created in Xposed environment")
|
||||||
instance = MaterialAlertDialogBuilder(context).also { builder ->
|
instance = MaterialAlertDialogBuilder(context).also { builder ->
|
||||||
if (context is AppErrorsDisplayActivity)
|
if (isDisableMaterial3)
|
||||||
builder.background = (builder.background as MaterialShapeDrawable).apply { setCornerSize(15.dpFloat(context)) }
|
builder.background = (builder.background as? MaterialShapeDrawable)?.apply { setCornerSize(15.dpFloat(context)) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user