ExtensionItem.kt 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package eu.kanade.tachiyomi.ui.extension
  2. import android.view.View
  3. import eu.davidea.flexibleadapter.FlexibleAdapter
  4. import eu.davidea.flexibleadapter.items.AbstractSectionableItem
  5. import eu.kanade.tachiyomi.R
  6. import eu.kanade.tachiyomi.extension.model.Extension
  7. import eu.kanade.tachiyomi.extension.model.InstallStep
  8. import eu.kanade.tachiyomi.source.CatalogueSource
  9. /**
  10. * Item that contains source information.
  11. *
  12. * @param source Instance of [CatalogueSource] containing source information.
  13. * @param header The header for this item.
  14. */
  15. data class ExtensionItem(val extension: Extension,
  16. val header: ExtensionGroupItem? = null,
  17. val installStep: InstallStep? = null) :
  18. AbstractSectionableItem<ExtensionHolder, ExtensionGroupItem>(header) {
  19. /**
  20. * Returns the layout resource of this item.
  21. */
  22. override fun getLayoutRes(): Int {
  23. return R.layout.extension_card_item
  24. }
  25. /**
  26. * Creates a new view holder for this item.
  27. */
  28. override fun createViewHolder(view: View, adapter: FlexibleAdapter<*>): ExtensionHolder {
  29. return ExtensionHolder(view, adapter as ExtensionAdapter)
  30. }
  31. /**
  32. * Binds this item to the given view holder.
  33. */
  34. override fun bindViewHolder(adapter: FlexibleAdapter<*>, holder: ExtensionHolder,
  35. position: Int, payloads: List<Any?>?) {
  36. if (payloads == null || payloads.isEmpty()) {
  37. holder.bind(this)
  38. } else {
  39. holder.bindButton(this)
  40. }
  41. }
  42. override fun equals(other: Any?): Boolean {
  43. if (this === other) return true
  44. if (javaClass != other?.javaClass) return false
  45. return extension.pkgName == (other as ExtensionItem).extension.pkgName
  46. }
  47. override fun hashCode(): Int {
  48. return extension.pkgName.hashCode()
  49. }
  50. }