session-android/app/src/main/java/org/thoughtcrime/securesms/loki/activities/HomeAdapter.kt

46 lines
1.9 KiB
Kotlin
Raw Normal View History

2020-05-11 08:19:26 +02:00
package org.thoughtcrime.securesms.loki.activities
2019-12-17 14:27:59 +01:00
import android.content.Context
import android.database.Cursor
import androidx.recyclerview.widget.RecyclerView
2019-12-17 14:27:59 +01:00
import android.view.ViewGroup
import org.thoughtcrime.securesms.database.CursorRecyclerViewAdapter
import org.thoughtcrime.securesms.database.DatabaseFactory
import org.thoughtcrime.securesms.database.model.ThreadRecord
2020-05-11 08:19:26 +02:00
import org.thoughtcrime.securesms.loki.views.ConversationView
2019-12-19 11:15:58 +01:00
import org.thoughtcrime.securesms.mms.GlideRequests
2019-12-17 14:27:59 +01:00
class HomeAdapter(context: Context, cursor: Cursor) : CursorRecyclerViewAdapter<HomeAdapter.ViewHolder>(context, cursor) {
2019-12-17 14:27:59 +01:00
private val threadDatabase = DatabaseFactory.getThreadDatabase(context)
2019-12-19 11:15:58 +01:00
lateinit var glide: GlideRequests
var typingThreadIDs = setOf<Long>()
set(value) { field = value; notifyDataSetChanged() }
2019-12-17 14:27:59 +01:00
var conversationClickListener: ConversationClickListener? = null
class ViewHolder(val view: ConversationView) : RecyclerView.ViewHolder(view)
override fun onCreateItemViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
2019-12-17 16:24:42 +01:00
val view = ConversationView(context)
2019-12-17 14:27:59 +01:00
view.setOnClickListener { conversationClickListener?.onConversationClick(view) }
view.setOnLongClickListener {
conversationClickListener?.onLongConversationClick(view)
true
}
return ViewHolder(view)
}
override fun onBindItemViewHolder(viewHolder: ViewHolder, cursor: Cursor) {
2019-12-19 11:15:58 +01:00
val thread = getThread(cursor)!!
val isTyping = typingThreadIDs.contains(thread.threadId)
viewHolder.view.bind(thread, isTyping, glide)
2019-12-17 14:27:59 +01:00
}
private fun getThread(cursor: Cursor): ThreadRecord? {
return threadDatabase.readerFor(cursor).current
2019-12-17 14:27:59 +01:00
}
}
interface ConversationClickListener {
fun onConversationClick(view: ConversationView)
fun onLongConversationClick(view: ConversationView)
}