57 lines
2.1 KiB
Kotlin
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
|
|
}
|
|
}
|