kopia lustrzana https://github.com/ryukoposting/Signal-Android
48 wiersze
1.8 KiB
Kotlin
48 wiersze
1.8 KiB
Kotlin
package org.thoughtcrime.securesms.components.settings.app.notifications.profiles.models
|
|
|
|
import android.view.View
|
|
import com.airbnb.lottie.SimpleColorFilter
|
|
import com.google.android.material.switchmaterial.SwitchMaterial
|
|
import org.thoughtcrime.securesms.R
|
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsIcon
|
|
import org.thoughtcrime.securesms.components.settings.DSLSettingsText
|
|
import org.thoughtcrime.securesms.components.settings.PreferenceModel
|
|
import org.thoughtcrime.securesms.components.settings.PreferenceViewHolder
|
|
import org.thoughtcrime.securesms.conversation.colors.AvatarColor
|
|
import org.thoughtcrime.securesms.util.MappingAdapter
|
|
import org.thoughtcrime.securesms.util.visible
|
|
|
|
/**
|
|
* DSL custom preference for showing Notification Profile rows.
|
|
*/
|
|
object NotificationProfilePreference {
|
|
|
|
fun register(adapter: MappingAdapter) {
|
|
adapter.registerFactory(Model::class.java, MappingAdapter.LayoutFactory(::ViewHolder, R.layout.notification_profile_preference_item))
|
|
}
|
|
|
|
class Model(
|
|
override val title: DSLSettingsText,
|
|
override val summary: DSLSettingsText?,
|
|
override val icon: DSLSettingsIcon?,
|
|
val color: AvatarColor,
|
|
val isOn: Boolean = false,
|
|
val showSwitch: Boolean = false,
|
|
val onClick: () -> Unit
|
|
) : PreferenceModel<Model>()
|
|
|
|
private class ViewHolder(itemView: View) : PreferenceViewHolder<Model>(itemView) {
|
|
|
|
private val switchWidget: SwitchMaterial = itemView.findViewById(R.id.switch_widget)
|
|
|
|
override fun bind(model: Model) {
|
|
super.bind(model)
|
|
itemView.setOnClickListener { model.onClick() }
|
|
switchWidget.visible = model.showSwitch
|
|
switchWidget.isEnabled = model.isEnabled
|
|
switchWidget.isChecked = model.isOn
|
|
iconView.background.colorFilter = SimpleColorFilter(model.color.colorInt())
|
|
}
|
|
}
|
|
}
|