From e9ec281159135957dbe4203e2446f5858a10920f Mon Sep 17 00:00:00 2001 From: arkon Date: Mon, 8 Feb 2021 17:47:44 -0500 Subject: [PATCH] Open manga when clicking thumbnail in migration list (closes #4152) (cherry picked from commit 545bc0e605d380fd47f5c4d930a6613b7ec78266) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaHolder.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt --- .../migration/manga/MigrationMangaAdapter.kt | 14 ++++++++++++++ .../manga/MigrationMangaController.kt | 17 ++++++++++++----- ...{MangaHolder.kt => MigrationMangaHolder.kt} | 18 ++++++++---------- .../{MangaItem.kt => MigrationMangaItem.kt} | 16 +++++----------- .../migration/manga/MigrationMangaPresenter.kt | 4 ++-- 5 files changed, 41 insertions(+), 28 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaAdapter.kt rename app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/{MangaHolder.kt => MigrationMangaHolder.kt} (79%) rename app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/{MangaItem.kt => MigrationMangaItem.kt} (72%) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaAdapter.kt new file mode 100644 index 000000000..389b76f72 --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaAdapter.kt @@ -0,0 +1,14 @@ +package eu.kanade.tachiyomi.ui.browse.migration.manga + +import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.davidea.flexibleadapter.items.IFlexible + +class MigrationMangaAdapter(controller: MigrationMangaController) : + FlexibleAdapter>(null, controller, true) { + + val coverClickListener: OnCoverClickListener = controller + + interface OnCoverClickListener { + fun onCoverClick(position: Int) + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt index 45e28e341..601b3b7c2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt @@ -7,23 +7,25 @@ import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import eu.davidea.flexibleadapter.FlexibleAdapter -import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.MigrationMangaControllerBinding import eu.kanade.tachiyomi.ui.base.controller.NucleusController +import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.browse.migration.advanced.design.PreMigrationController +import eu.kanade.tachiyomi.ui.manga.MangaController import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get class MigrationMangaController : NucleusController, FlexibleAdapter.OnItemClickListener, + MigrationMangaAdapter.OnCoverClickListener, // SY --> MigrationInterface { // SY <-- - private var adapter: FlexibleAdapter>? = null + private var adapter: MigrationMangaAdapter? = null constructor(sourceId: Long, sourceName: String?) : super( bundleOf( @@ -57,7 +59,7 @@ class MigrationMangaController : override fun onViewCreated(view: View) { super.onViewCreated(view) - adapter = FlexibleAdapter>(null, this) + adapter = MigrationMangaAdapter(this) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.adapter = adapter adapter?.fastScroller = binding.fastScroller @@ -68,12 +70,12 @@ class MigrationMangaController : super.onDestroyView(view) } - fun setManga(manga: List) { + fun setManga(manga: List) { adapter?.updateDataSet(manga) } override fun onItemClick(view: View, position: Int): Boolean { - val item = adapter?.getItem(position) as? MangaItem ?: return false + val item = adapter?.getItem(position) as? MigrationMangaItem ?: return false // SY --> PreMigrationController.navigateToMigration( Injekt.get().skipPreMigration().get(), @@ -84,6 +86,11 @@ class MigrationMangaController : return false } + override fun onCoverClick(position: Int) { + val mangaItem = adapter?.getItem(position) as? MigrationMangaItem ?: return + router.pushController(MangaController(mangaItem.manga).withFadeTransaction()) + } + // SY --> override fun migrateManga(prevManga: Manga, manga: Manga, replace: Boolean): Manga? { presenter.migrateManga(prevManga, manga, replace) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaHolder.kt similarity index 79% rename from app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaHolder.kt rename to app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaHolder.kt index 9e54a4f86..c503b78ab 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaHolder.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaHolder.kt @@ -5,29 +5,27 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.load.resource.bitmap.CenterCrop import com.bumptech.glide.load.resource.bitmap.RoundedCorners import com.bumptech.glide.request.RequestOptions -import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.viewholders.FlexibleViewHolder import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.glide.GlideApp import eu.kanade.tachiyomi.data.glide.toMangaThumbnail import eu.kanade.tachiyomi.databinding.SourceListItemBinding -class MangaHolder( +class MigrationMangaHolder( view: View, - adapter: FlexibleAdapter<*> + private val adapter: MigrationMangaAdapter ) : FlexibleViewHolder(view, adapter) { private val binding = SourceListItemBinding.bind(view) - fun bind(item: MangaItem) { - // Update the title of the manga. - binding.title.text = item.manga.originalTitle - - // Create thumbnail onclick to simulate long click + init { binding.thumbnail.setOnClickListener { - // Simulate long click on this view to enter selection mode - onLongClick(itemView) + adapter.coverClickListener.onCoverClick(bindingAdapterPosition) } + } + + fun bind(item: MigrationMangaItem) { + binding.title.text = item.manga.originalTitle // Update the cover. GlideApp.with(itemView.context).clear(binding.thumbnail) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaItem.kt similarity index 72% rename from app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaItem.kt rename to app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaItem.kt index 770fc8492..3af0924cd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MangaItem.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaItem.kt @@ -1,6 +1,5 @@ package eu.kanade.tachiyomi.ui.browse.migration.manga -import android.os.Parcelable import android.view.View import androidx.recyclerview.widget.RecyclerView import eu.davidea.flexibleadapter.FlexibleAdapter @@ -8,25 +7,20 @@ import eu.davidea.flexibleadapter.items.AbstractFlexibleItem import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.models.Manga -import kotlinx.parcelize.Parcelize -@Parcelize -class MangaItem(val manga: Manga) : AbstractFlexibleItem(), Parcelable { +class MigrationMangaItem(val manga: Manga) : AbstractFlexibleItem() { override fun getLayoutRes(): Int { return R.layout.source_list_item } - override fun createViewHolder(view: View, adapter: FlexibleAdapter>): MangaHolder { - return MangaHolder( - view, - adapter - ) + override fun createViewHolder(view: View, adapter: FlexibleAdapter>): MigrationMangaHolder { + return MigrationMangaHolder(view, adapter as MigrationMangaAdapter) } override fun bindViewHolder( adapter: FlexibleAdapter>, - holder: MangaHolder, + holder: MigrationMangaHolder, position: Int, payloads: List? ) { @@ -34,7 +28,7 @@ class MangaItem(val manga: Manga) : AbstractFlexibleItem(), Parcela } override fun equals(other: Any?): Boolean { - if (other is MangaItem) { + if (other is MigrationMangaItem) { return manga.id == other.manga.id } return false diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt index d2f685c60..987ab2400 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt @@ -35,10 +35,10 @@ class MigrationMangaPresenter( .subscribeLatestCache(MigrationMangaController::setManga) } - private fun libraryToMigrationItem(library: List): List { + private fun libraryToMigrationItem(library: List): List { return library.filter { it.source == sourceId } .sortedBy { it.originalTitle } - .map { MangaItem(it) } + .map { MigrationMangaItem(it) } } // SY -->