Signal-Android/app/src/main/java/org/thoughtcrime/securesms/components/settings/app/notifications/profiles/models/NotificationProfileNamePres...

43 wiersze
1.6 KiB
Kotlin

package org.thoughtcrime.securesms.components.settings.app.notifications.profiles.models
import android.view.View
import android.widget.ImageView
import android.widget.TextView
import androidx.annotation.StringRes
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.components.emoji.EmojiUtil
import org.thoughtcrime.securesms.util.MappingAdapter
import org.thoughtcrime.securesms.util.MappingModel
import org.thoughtcrime.securesms.util.MappingViewHolder
/**
* DSL custom preference for showing default emoji/name combos for create/edit profile.
*/
object NotificationProfileNamePreset {
fun register(adapter: MappingAdapter) {
adapter.registerFactory(Model::class.java, MappingAdapter.LayoutFactory({ ViewHolder(it) }, R.layout.about_preset_item))
}
class Model(val emoji: String, @StringRes val bodyResource: Int, val onClick: (Model) -> Unit) : MappingModel<Model> {
override fun areItemsTheSame(newItem: Model): Boolean {
return bodyResource == newItem.bodyResource
}
override fun areContentsTheSame(newItem: Model): Boolean {
return areItemsTheSame(newItem) && emoji == newItem.emoji
}
}
class ViewHolder(itemView: View) : MappingViewHolder<Model>(itemView) {
val emoji: ImageView = findViewById(R.id.about_preset_emoji)
val body: TextView = findViewById(R.id.about_preset_body)
override fun bind(model: Model) {
itemView.setOnClickListener { model.onClick(model) }
emoji.setImageDrawable(EmojiUtil.convertToDrawable(context, model.emoji))
body.setText(model.bodyResource)
}
}
}