android/app/src/main/java/io/annaclemens/xivchat/ui/targeting/TargetingListAdapter.kt

57 lines
2.1 KiB
Kotlin

package io.annaclemens.xivchat.ui.targeting
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import io.annaclemens.xivchat.R
import io.annaclemens.xivchat.databinding.TargetingListElementBinding
import java.text.DateFormat
import java.text.SimpleDateFormat
import java.time.Instant
import java.util.*
class TargetingListAdapter(private val context: Context) : RecyclerView.Adapter<TargetingListAdapter.ViewHolder>() {
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
private val binding = TargetingListElementBinding.bind(itemView)
val name = this.binding.targetingName
val timestamp = this.binding.targetingTime
}
private val inflater = LayoutInflater.from(this.context)
private var playerList: List<TargetingPlayer> = emptyList()
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val itemView = this.inflater.inflate(R.layout.targeting_list_element, parent, false)
return this.ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val targeting = this.playerList[position]
// TODO: add send tell context menu?
holder.name.text = targeting.player.name ?: this.context.getString(R.string.friend_list_could_not_retrieve)
holder.timestamp.text = if (targeting.current) {
this.context.getString(R.string.targeting_now)
} else {
if (Instant.now().epochSecond - targeting.timestamp.toInstant().epochSecond > 24 * 60 * 60) {
SimpleDateFormat("dd/MM", Locale.getDefault()).format(targeting.timestamp)
} else {
DateFormat.getTimeInstance(DateFormat.SHORT).format(targeting.timestamp)
}
}
holder.name.isEnabled = targeting.current
holder.timestamp.isEnabled = targeting.current
}
override fun getItemCount() = this.playerList.size
fun setTargetingList(list: List<TargetingPlayer>) {
this.playerList = list
}
}