2020-10-09 13:53:58 +00:00
|
|
|
package oppen.ariane.ui.bookmarks
|
2020-09-10 21:20:24 +00:00
|
|
|
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import android.view.View
|
|
|
|
import android.view.ViewGroup
|
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
2020-09-11 19:49:30 +00:00
|
|
|
import kotlinx.android.synthetic.main.bookmark.view.*
|
2020-10-09 13:53:58 +00:00
|
|
|
import oppen.ariane.R
|
2020-11-16 14:02:56 +00:00
|
|
|
import oppen.ariane.io.database.bookmarks.BookmarkEntry
|
2020-09-12 20:10:30 +00:00
|
|
|
import oppen.visible
|
2020-09-10 21:20:24 +00:00
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
class BookmarksAdapter(val onBookmark: (bookmarkEntry: BookmarkEntry) -> Unit, val onOverflow: (view: View, bookmarkEntry: BookmarkEntry, isFirst: Boolean, isLast: Boolean) -> Unit): RecyclerView.Adapter<BookmarksAdapter.ViewHolder>() {
|
2020-09-10 21:20:24 +00:00
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
val bookmarks = mutableListOf<BookmarkEntry>()
|
2020-09-10 21:20:24 +00:00
|
|
|
|
|
|
|
class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)
|
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
fun update(bookmarkEntries: List<BookmarkEntry>){
|
2020-09-11 21:02:54 +00:00
|
|
|
this.bookmarks.clear()
|
2020-11-16 14:02:56 +00:00
|
|
|
this.bookmarks.addAll(bookmarkEntries)
|
2020-09-10 21:20:24 +00:00
|
|
|
notifyDataSetChanged()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
|
|
|
|
return ViewHolder(
|
|
|
|
LayoutInflater.from(parent.context).inflate(R.layout.bookmark, parent, false)
|
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
|
|
|
|
val bookmark = bookmarks[position]
|
2020-09-11 19:49:30 +00:00
|
|
|
|
2020-09-12 20:10:30 +00:00
|
|
|
if(bookmark.visible) {
|
|
|
|
holder.itemView.visible(true)
|
|
|
|
holder.itemView.bookmark_name.text = bookmark.label
|
|
|
|
holder.itemView.bookmark_uri.text = bookmark.uri.toString()
|
2020-09-11 19:49:30 +00:00
|
|
|
|
2020-09-12 20:10:30 +00:00
|
|
|
holder.itemView.bookmark_layout.setOnClickListener {
|
|
|
|
onBookmark(bookmarks[holder.adapterPosition])
|
|
|
|
}
|
2020-09-11 19:49:30 +00:00
|
|
|
|
2020-09-12 20:10:30 +00:00
|
|
|
holder.itemView.bookmark_overflow.setOnClickListener { view ->
|
|
|
|
val isFirst = (holder.adapterPosition == 0)
|
|
|
|
val isLast = (holder.adapterPosition == bookmarks.size - 1)
|
|
|
|
onOverflow(view, bookmarks[holder.adapterPosition], isFirst, isLast)
|
|
|
|
}
|
|
|
|
}else{
|
|
|
|
holder.itemView.visible(false)
|
2020-09-11 19:49:30 +00:00
|
|
|
}
|
2020-09-10 21:20:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
override fun getItemCount(): Int = bookmarks.size
|
2020-09-12 20:10:30 +00:00
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
fun hide(bookmarkEntry: BookmarkEntry) {
|
|
|
|
bookmarkEntry.visible = false
|
|
|
|
notifyItemChanged(bookmarks.indexOf(bookmarkEntry))
|
2020-09-12 20:10:30 +00:00
|
|
|
}
|
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
fun show(bookmarkEntry: BookmarkEntry) {
|
|
|
|
bookmarkEntry.visible = true
|
|
|
|
notifyItemChanged(bookmarks.indexOf(bookmarkEntry))
|
2020-09-12 20:10:30 +00:00
|
|
|
}
|
|
|
|
|
2020-11-16 14:02:56 +00:00
|
|
|
fun remove(bookmarkEntry: BookmarkEntry){
|
|
|
|
val index = bookmarks.indexOf(bookmarkEntry)
|
|
|
|
bookmarks.remove(bookmarkEntry)
|
2020-09-12 20:10:30 +00:00
|
|
|
notifyItemRemoved(index)
|
|
|
|
}
|
2020-09-10 21:20:24 +00:00
|
|
|
}
|