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
This commit is contained in:
arkon 2020-07-30 22:46:35 -04:00 committed by Jobobby04
parent 3920a5a73b
commit 987e5bcf33

View File

@ -1,6 +1,7 @@
package eu.kanade.tachiyomi.ui.browse.source package eu.kanade.tachiyomi.ui.browse.source
import android.Manifest.permission.WRITE_EXTERNAL_STORAGE import android.Manifest.permission.WRITE_EXTERNAL_STORAGE
import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.os.Parcelable import android.os.Parcelable
import android.view.LayoutInflater 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.CatalogueSource
import eu.kanade.tachiyomi.source.LocalSource import eu.kanade.tachiyomi.source.LocalSource
import eu.kanade.tachiyomi.source.Source 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.NucleusController
import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe import eu.kanade.tachiyomi.ui.base.controller.requestPermissionsSafe
import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction
@ -176,7 +178,12 @@ class SourceController(bundle: Bundle? = null) :
) )
) )
if (item.source !is LocalSource) { 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 --> // SY -->
@ -199,16 +206,7 @@ class SourceController(bundle: Bundle? = null) :
) )
// SY <-- // SY <--
MaterialDialog(activity) SourceOptionsDialog(item, items).showDialog(router)
.title(text = item.source.toString())
.listItems(
items = items.map { it.first },
waitForPositiveButton = false
) { dialog, which, _ ->
items[which].second()
dialog.dismiss()
}
.show()
} }
private fun disableSource(source: Source) { 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<Pair<String, () -> Unit>>
constructor(item: SourceItem, items: List<Pair<String, () -> 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 --> // SY -->
@Parcelize @Parcelize
data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Parcelable data class SmartSearchConfig(val origTitle: String, val origMangaId: Long? = null) : Parcelable