Initial commit

This commit is contained in:
Finnley Somdahl 2023-10-17 18:42:43 -05:00
commit 21bfbfb139
520 changed files with 47819 additions and 0 deletions

View file

@ -0,0 +1,67 @@
package ani.dantotsu.others.imagesearch
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import ani.dantotsu.R
import ani.dantotsu.databinding.ItemSearchByImageBinding
import ani.dantotsu.loadImage
class ImageSearchResultAdapter(private val searchResults: List<ImageSearchViewModel.ImageResult>) :
RecyclerView.Adapter<ImageSearchResultAdapter.SearchResultViewHolder>() {
interface OnItemClickListener {
fun onItemClick(searchResult: ImageSearchViewModel.ImageResult)
}
private var itemClickListener: OnItemClickListener? = null
fun setOnItemClickListener(listener: OnItemClickListener) {
itemClickListener = listener
}
inner class SearchResultViewHolder(val binding : ItemSearchByImageBinding) : RecyclerView.ViewHolder(binding.root)
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchResultViewHolder {
val binding = ItemSearchByImageBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return SearchResultViewHolder(binding)
}
override fun onBindViewHolder(holder: SearchResultViewHolder, position: Int) {
val searchResult = searchResults[position]
val binding = holder.binding
binding.root.setOnClickListener {
itemClickListener?.onItemClick(searchResult)
}
binding.root.context.apply {
binding.itemCompactTitle.text = searchResult.anilist?.title?.romaji
binding.itemTotal.text = getString(
R.string.similarity_text, String.format("%.1f", searchResult.similarity?.times(100))
)
binding.episodeNumber.text = getString(R.string.episode_num, searchResult.episode.toString())
binding.timeStamp.text = getString(
R.string.time_range,
toTimestamp(searchResult.from),
toTimestamp(searchResult.to)
)
binding.itemImage.loadImage(searchResult.image)
}
}
override fun getItemCount(): Int {
return searchResults.size
}
private fun toTimestamp(seconds: Double?): String {
val minutes = (seconds?.div(60))?.toInt()
val remainingSeconds = (seconds?.mod(60.0))?.toInt()
val minutesString = minutes.toString().padStart(2, '0')
val secondsString = remainingSeconds.toString().padStart(2, '0')
return "$minutesString:$secondsString"
}
}