From 8686fecb1fe0f436e503f005de3e6218fe8f76d5 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 6 May 2021 16:36:02 -0400 Subject: [PATCH] Browse source from migration now properly adds it as a result --- .../migration/search/SearchController.kt | 137 ++---------------- .../search/SourceSearchController.kt | 30 ++-- 2 files changed, 30 insertions(+), 137 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt index 73de93dac..428bf609a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt @@ -1,25 +1,17 @@ package eu.kanade.tachiyomi.ui.browse.migration.search -import android.app.Dialog import android.os.Bundle import android.view.Menu import android.view.MenuInflater import androidx.appcompat.widget.SearchView import androidx.core.os.bundleOf -import com.afollestad.materialdialogs.MaterialDialog -import com.afollestad.materialdialogs.list.listItemsMultiChoice -import com.bluelinelabs.conductor.Controller import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Manga -import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.SourceManager -import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction -import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController -import eu.kanade.tachiyomi.ui.browse.migration.manga.MigrationInterface import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchController import eu.kanade.tachiyomi.ui.browse.source.globalsearch.GlobalSearchPresenter import kotlinx.coroutines.flow.filter @@ -29,7 +21,6 @@ import reactivecircus.flowbinding.appcompat.QueryTextEvent import reactivecircus.flowbinding.appcompat.queryTextEvents import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get -import uy.kohesive.injekt.injectLazy class SearchController( private var manga: Manga? = null, @@ -41,19 +32,17 @@ class SearchController( SOURCES to sources?.map { it.id }?.toLongArray() ) ) { - - private var newManga: Manga? = null - private var progress = 1 - var totalProgress = 0 - - constructor(mangaId: Long, sources: LongArray) : + constructor(targetController: MigrationListController?, mangaId: Long, sources: LongArray) : this( Injekt.get().getManga(mangaId).executeAsBlocking(), sources.map { Injekt.get().getOrStub(it) }.filterIsInstance() - ) + ) { + this.targetController = targetController + } @Suppress("unused") constructor(bundle: Bundle) : this( + null, bundle.getLong(OLD_MANGA), bundle.getLongArray(SOURCES) ?: LongArray(0) ) @@ -65,14 +54,6 @@ class SearchController( setHasOptionsMenu(true) } - override fun getTitle(): String? { - return if (totalProgress > 1) { - "($progress/$totalProgress) ${super.getTitle()}" - } else { - super.getTitle() - } - } - override fun createPresenter(): GlobalSearchPresenter { return SearchPresenter( initialQuery, @@ -81,45 +62,12 @@ class SearchController( ) } - fun migrateManga(manga: Manga, newManga: Manga) { - val target = targetController as? MigrationInterface ?: return - - val nextManga = target.migrateManga(manga, newManga, true) - replaceWithNewSearchController(nextManga) - } - - fun copyManga(manga: Manga, newManga: Manga) { - val target = targetController as? MigrationInterface ?: return - - val nextManga = target.migrateManga(manga, newManga, false) - replaceWithNewSearchController(nextManga) - } - - private fun replaceWithNewSearchController(manga: Manga?) { - if (manga != null) { - // router.popCurrentController() - val searchController = SearchController(manga) - searchController.targetController = targetController - searchController.progress = progress + 1 - searchController.totalProgress = totalProgress - router.replaceTopController(searchController.withFadeTransaction()) - } else router.popController(this) - } - override fun onMangaClick(manga: Manga) { - if (targetController is MigrationListController) { - val migrationListController = targetController as? MigrationListController - val sourceManager = Injekt.get() - val source = sourceManager.get(manga.source) ?: return - migrationListController?.useMangaForMigration(manga, source) - router.popCurrentController() - return - } - newManga = manga - val dialog = - MigrationDialog(this.manga ?: return, newManga ?: return, this) - dialog.targetController = this - dialog.showDialog(router) + val migrationListController = targetController as MigrationListController + val sourceManager = Injekt.get() + val source = sourceManager.get(manga.source) ?: return + migrationListController.useMangaForMigration(manga, source) + router.popCurrentController() } override fun onMangaLongClick(manga: Manga) { @@ -127,69 +75,6 @@ class SearchController( super.onMangaClick(manga) } - class MigrationDialog(bundle: Bundle) : DialogController(bundle) { - - constructor(manga: Manga, newManga: Manga, callingController: Controller) : this( - bundleOf( - MANGA_KEY to manga, - NEW_MANGA_KEY to newManga - ) - ) { - this.callingController = callingController - } - - private val manga: Manga = args.getSerializable(MANGA_KEY) as Manga - private val newManga: Manga = args.getSerializable(NEW_MANGA_KEY) as Manga - private var callingController: Controller? = null - - private val preferences: PreferencesHelper by injectLazy() - - override fun onCreateDialog(savedViewState: Bundle?): Dialog { - val prefValue = preferences.migrateFlags().get() - val callingController = callingController - - val preselected = - MigrationFlags.getEnabledFlagsPositions( - prefValue - ) - - return MaterialDialog(activity!!) - .title(R.string.migration_dialog_what_to_include) - .listItemsMultiChoice( - items = MigrationFlags.titles.map { resources?.getString(it) as CharSequence }, - initialSelection = preselected.toIntArray() - ) { _, positions, _ -> - // Save current settings for the next time - val newValue = - MigrationFlags.getFlagsFromPositions( - positions.toTypedArray() - ) - preferences.migrateFlags().set(newValue) - } - .positiveButton(R.string.migrate) { - if (callingController != null) { - if (callingController.javaClass == SourceSearchController::class.java) { - router.popController(callingController) - } - } - (targetController as? SearchController)?.migrateManga(manga, newManga) - } - .negativeButton(R.string.copy) { - if (callingController != null) { - if (callingController.javaClass == SourceSearchController::class.java) { - router.popController(callingController) - } - } - (targetController as? SearchController)?.copyManga(manga, newManga) - } - .neutralButton(android.R.string.cancel) - } - companion object { - const val MANGA_KEY = "manga_key" - const val NEW_MANGA_KEY = "new_manga_key" - } - } - /** * Adds items to the options menu. * @@ -223,7 +108,7 @@ class SearchController( override fun onTitleClick(source: CatalogueSource) { presenter.preferences.lastUsedSource().set(source.id) - router.pushController(SourceSearchController(manga!!, source, presenter.query).withFadeTransaction()) + router.pushController(SourceSearchController(targetController as? MigrationListController ?: return, manga!!, source, presenter.query).withFadeTransaction()) } companion object { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt index 4dde23e0a..0c9ec0b42 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SourceSearchController.kt @@ -5,33 +5,41 @@ import android.view.View import androidx.core.os.bundleOf import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.source.CatalogueSource +import eu.kanade.tachiyomi.source.SourceManager +import eu.kanade.tachiyomi.ui.browse.migration.advanced.process.MigrationListController import eu.kanade.tachiyomi.ui.browse.source.browse.BrowseSourceController import eu.kanade.tachiyomi.ui.browse.source.browse.SourceItem +import uy.kohesive.injekt.Injekt +import uy.kohesive.injekt.api.get class SourceSearchController( bundle: Bundle ) : BrowseSourceController(bundle) { - constructor(manga: Manga, source: CatalogueSource, searchQuery: String? = null) : this( + constructor(targetController: MigrationListController, manga: Manga, source: CatalogueSource, searchQuery: String? = null) : this( bundleOf( SOURCE_ID_KEY to source.id, MANGA_KEY to manga, SEARCH_QUERY_KEY to searchQuery ) - ) - private var oldManga: Manga = args.getSerializable(MANGA_KEY) as Manga - private var newManga: Manga? = null + ) { + this.targetController = targetController + } override fun onItemClick(view: View, position: Int): Boolean { - val item = adapter?.getItem(position) as? SourceItem ?: return false - newManga = item.manga - val searchController = router.backstack.findLast { it.controller().javaClass == SearchController::class.java }?.controller() as SearchController? - val dialog = - SearchController.MigrationDialog(oldManga, newManga!!, this) - dialog.targetController = searchController - dialog.showDialog(router) + val manga = (adapter?.getItem(position) as? SourceItem)?.manga ?: return false + val migrationListController = targetController as? MigrationListController ?: return false + val sourceManager = Injekt.get() + val source = sourceManager.get(manga.source) ?: return false + migrationListController.useMangaForMigration(manga, source) + router.popCurrentController() + router.popCurrentController() return true } + + override fun onItemLongClick(position: Int) { + view?.let { super.onItemClick(it, position) } + } private companion object { const val MANGA_KEY = "oldManga" }