You've already forked Magisk
mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-09-06 06:36:58 +00:00
Reduce usage of ObservableField
This commit is contained in:
@@ -15,7 +15,8 @@ import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AppCompatDialog
|
||||
import androidx.core.view.ViewCompat
|
||||
import androidx.core.view.updatePadding
|
||||
import androidx.databinding.ObservableField
|
||||
import androidx.databinding.Bindable
|
||||
import androidx.databinding.PropertyChangeRegistry
|
||||
import androidx.databinding.ViewDataBinding
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
@@ -23,8 +24,9 @@ import com.topjohnwu.magisk.BR
|
||||
import com.topjohnwu.magisk.R
|
||||
import com.topjohnwu.magisk.databinding.ComparableRvItem
|
||||
import com.topjohnwu.magisk.databinding.DialogMagiskBaseBinding
|
||||
import com.topjohnwu.magisk.ktx.value
|
||||
import com.topjohnwu.magisk.ui.base.itemBindingOf
|
||||
import com.topjohnwu.magisk.utils.ObservableHost
|
||||
import com.topjohnwu.magisk.utils.set
|
||||
import me.tatarka.bindingcollectionadapter2.BindingRecyclerViewAdapters
|
||||
import me.tatarka.bindingcollectionadapter2.ItemBinding
|
||||
|
||||
@@ -71,11 +73,24 @@ class MagiskDialog(
|
||||
binding.dialogBaseOutsideContainer.setOnClickListener(listener)
|
||||
}
|
||||
|
||||
inner class Data {
|
||||
val icon = ObservableField(0)
|
||||
val iconRaw = ObservableField(null as Drawable?)
|
||||
val title = ObservableField<CharSequence>("")
|
||||
val message = ObservableField<CharSequence>("")
|
||||
inner class Data: ObservableHost {
|
||||
override var callbacks: PropertyChangeRegistry? = null
|
||||
|
||||
@get:Bindable
|
||||
var icon = 0
|
||||
set(value) = set(value, field, { field = it }, BR.icon)
|
||||
|
||||
@get:Bindable
|
||||
var iconRaw: Drawable? = null
|
||||
set(value) = set(value, field, { field = it }, BR.iconRaw)
|
||||
|
||||
@get:Bindable
|
||||
var title: CharSequence = ""
|
||||
set(value) = set(value, field, { field = it }, BR.title)
|
||||
|
||||
@get:Bindable
|
||||
var message : CharSequence = ""
|
||||
set(value) = set(value, field, { field = it }, BR.message)
|
||||
|
||||
val buttonPositive = Button()
|
||||
val buttonNeutral = Button()
|
||||
@@ -87,10 +102,20 @@ class MagiskDialog(
|
||||
POSITIVE, NEUTRAL, NEGATIVE, IDGAF
|
||||
}
|
||||
|
||||
inner class Button {
|
||||
val icon = ObservableField(0)
|
||||
val title = ObservableField<CharSequence>("")
|
||||
val isEnabled = ObservableField(true)
|
||||
inner class Button: ObservableHost {
|
||||
override var callbacks: PropertyChangeRegistry? = null
|
||||
|
||||
@get:Bindable
|
||||
var icon = 0
|
||||
set(value) = set(value, field, { field = it }, BR.icon)
|
||||
|
||||
@get:Bindable
|
||||
var title: CharSequence = ""
|
||||
set(value) = set(value, field, { field = it }, BR.title)
|
||||
|
||||
@get:Bindable
|
||||
var isEnabled = true
|
||||
set(value) = set(value, field, { field = it }, BR.enabled)
|
||||
|
||||
var onClickAction: OnDialogButtonClickListener = {}
|
||||
var preventDismiss = false
|
||||
@@ -117,24 +142,24 @@ class MagiskDialog(
|
||||
|
||||
inner class ButtonBuilder(private val button: Button) {
|
||||
var icon: Int
|
||||
get() = button.icon.value
|
||||
get() = button.icon
|
||||
set(value) {
|
||||
button.icon.value = value
|
||||
button.icon = value
|
||||
}
|
||||
var title: CharSequence
|
||||
get() = button.title.value
|
||||
get() = button.title
|
||||
set(value) {
|
||||
button.title.value = value
|
||||
button.title = value
|
||||
}
|
||||
var titleRes: Int
|
||||
get() = 0
|
||||
set(value) {
|
||||
button.title.value = context.getString(value)
|
||||
button.title = context.getString(value)
|
||||
}
|
||||
var isEnabled: Boolean
|
||||
get() = button.isEnabled.value
|
||||
get() = button.isEnabled
|
||||
set(value) {
|
||||
button.isEnabled.value = value
|
||||
button.isEnabled = value
|
||||
}
|
||||
var preventDismiss: Boolean
|
||||
get() = button.preventDismiss
|
||||
@@ -148,22 +173,22 @@ class MagiskDialog(
|
||||
}
|
||||
|
||||
fun applyTitle(@StringRes stringRes: Int) =
|
||||
apply { data.title.value = context.getString(stringRes) }
|
||||
apply { data.title = context.getString(stringRes) }
|
||||
|
||||
fun applyTitle(title: CharSequence) =
|
||||
apply { data.title.value = title }
|
||||
apply { data.title = title }
|
||||
|
||||
fun applyMessage(@StringRes stringRes: Int, vararg args: Any) =
|
||||
apply { data.message.value = context.getString(stringRes, *args) }
|
||||
apply { data.message = context.getString(stringRes, *args) }
|
||||
|
||||
fun applyMessage(message: CharSequence) =
|
||||
apply { data.message.value = message }
|
||||
apply { data.message = message }
|
||||
|
||||
fun applyIcon(@DrawableRes drawableRes: Int) =
|
||||
apply { data.icon.value = drawableRes }
|
||||
apply { data.icon = drawableRes }
|
||||
|
||||
fun applyIcon(drawable: Drawable) =
|
||||
apply { data.iconRaw.value = drawable }
|
||||
apply { data.iconRaw = drawable }
|
||||
|
||||
fun applyButton(buttonType: ButtonType, builder: ButtonBuilder.() -> Unit) = apply {
|
||||
val button = when (buttonType) {
|
||||
|
||||
Reference in New Issue
Block a user