From 987e5bcf337dd121975766b76524d1cdfa1a75c3 Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 30 Jul 2020 22:46:35 -0400 Subject: [PATCH] Make source options dialog into a controller to retain state (cherry picked from commit 01a837fde62ba7d738b703ffde3e12fb79fa6bc4) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt --- .../ui/browse/source/SourceController.kt | 43 ++++++++++++++----- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt index c00b09f97..84a1975ed 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt @@ -1,6 +1,7 @@ package eu.kanade.tachiyomi.ui.browse.source import android.Manifest.permission.WRITE_EXTERNAL_STORAGE +import android.app.Dialog import android.os.Bundle import android.os.Parcelable import android.view.LayoutInflater @@ -25,6 +26,7 @@ import eu.kanade.tachiyomi.databinding.SourceMainControllerBinding import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.Source +import eu.kanade.tachiyomi.ui.base.controller.DialogController import eu.kanade.tachiyomi.ui.base.controller.NucleusController import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction @@ -176,7 +178,12 @@ class SourceController(bundle: Bundle? = null) : ) ) if (item.source !is LocalSource) { - items.add(Pair(activity.getString(R.string.action_disable), { disableSource(item.source) })) + items.add( + Pair( + activity.getString(R.string.action_disable), + { disableSource(item.source) } + ) + ) } // SY --> @@ -199,16 +206,7 @@ class SourceController(bundle: Bundle? = null) : ) // SY <-- - MaterialDialog(activity) - .title(text = item.source.toString()) - .listItems( - items = items.map { it.first }, - waitForPositiveButton = false - ) { dialog, which, _ -> - items[which].second() - dialog.dismiss() - } - .show() + SourceOptionsDialog(item, items).showDialog(router) } private fun disableSource(source: Source) { @@ -395,6 +393,29 @@ class SourceController(bundle: Bundle? = null) : } } + class SourceOptionsDialog(bundle: Bundle? = null) : DialogController(bundle) { + + private lateinit var item: SourceItem + private lateinit var items: List Unit>> + + constructor(item: SourceItem, items: List Unit>>) : this() { + this.item = item + this.items = items + } + + override fun onCreateDialog(savedViewState: Bundle?): Dialog { + return MaterialDialog(activity!!) + .title(text = item.source.toString()) + .listItems( + items = items.map { it.first }, + waitForPositiveButton = false + ) { dialog, which, _ -> + items[which].second() + dialog.dismiss() + } + } + } + // SY --> @Parcelize data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Parcelable