Clean up global chapter settings code

This commit is contained in:
arkon
2020-09-14 16:13:28 -04:00
parent 64050e8266
commit da5f10a2f1
13 changed files with 112 additions and 114 deletions
@@ -30,7 +30,6 @@ import eu.kanade.tachiyomi.ui.browse.source.filter.TriStateItem
import eu.kanade.tachiyomi.ui.browse.source.filter.TriStateSectionItem
import eu.kanade.tachiyomi.util.chapter.ChapterSettingsHelper
import eu.kanade.tachiyomi.util.removeCovers
import kotlinx.coroutines.flow.subscribe
import rx.Observable
import rx.Subscription
import rx.android.schedulers.AndroidSchedulers
@@ -270,7 +269,7 @@ open class BrowseSourcePresenter(
if (!manga.favorite) {
manga.removeCovers(coverCache)
} else {
ChapterSettingsHelper.applySettingDefaultsFromPreferences(manga)
ChapterSettingsHelper.applySettingDefaults(manga)
}
db.insertManga(manga).executeAsBlocking()
@@ -183,7 +183,7 @@ class LibraryController(
createActionModeIfNeeded()
}
settingsSheet = LibrarySettingsSheet(activity!!) { group ->
settingsSheet = LibrarySettingsSheet(router) { group ->
when (group) {
is LibrarySettingsSheet.Filter.FilterGroup -> onFilterChanged()
is LibrarySettingsSheet.Sort.SortGroup -> onSortChanged()
@@ -1,9 +1,9 @@
package eu.kanade.tachiyomi.ui.library
import android.app.Activity
import android.content.Context
import android.util.AttributeSet
import android.view.View
import com.bluelinelabs.conductor.Router
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.preference.PreferenceValues.DisplayMode
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
@@ -12,22 +12,22 @@ import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog
import uy.kohesive.injekt.injectLazy
class LibrarySettingsSheet(
activity: Activity,
router: Router,
onGroupClickListener: (ExtendedNavigationView.Group) -> Unit
) : TabbedBottomSheetDialog(activity) {
) : TabbedBottomSheetDialog(router) {
val filters: Filter
private val sort: Sort
private val display: Display
init {
filters = Filter(activity)
filters = Filter(router.activity!!)
filters.onGroupClicked = onGroupClickListener
sort = Sort(activity)
sort = Sort(router.activity!!)
sort.onGroupClicked = onGroupClickListener
display = Display(activity)
display = Display(router.activity!!)
display.onGroupClicked = onGroupClickListener
}
@@ -237,7 +237,7 @@ class MangaController :
binding.actionToolbar.offsetAppbarHeight(activity!!)
settingsSheet = ChaptersSettingsSheet(activity!!, presenter) { group ->
settingsSheet = ChaptersSettingsSheet(router, presenter) { group ->
if (group is ChaptersSettingsSheet.Filter.FilterGroup) {
updateFilterIconState()
chaptersAdapter?.notifyDataSetChanged()
@@ -84,7 +84,7 @@ class MangaPresenter(
super.onCreate(savedState)
if (!manga.favorite) {
ChapterSettingsHelper.applySettingDefaultsFromPreferences(manga)
ChapterSettingsHelper.applySettingDefaults(manga)
}
// Manga info - start
@@ -1,34 +1,39 @@
package eu.kanade.tachiyomi.ui.manga.chapter
import android.app.Activity
import android.content.Context
import android.util.AttributeSet
import android.view.View
import androidx.core.view.isVisible
import com.bluelinelabs.conductor.Router
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.ui.manga.MangaPresenter
import eu.kanade.tachiyomi.util.view.popupMenu
import eu.kanade.tachiyomi.widget.ExtendedNavigationView
import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog
class ChaptersSettingsSheet(
activity: Activity,
private val router: Router,
private val presenter: MangaPresenter,
onGroupClickListener: (ExtendedNavigationView.Group) -> Unit
) : TabbedBottomSheetDialog(activity, presenter.manga) {
) : TabbedBottomSheetDialog(router) {
val filters: Filter
private val sort: Sort
private val display: Display
init {
filters = Filter(activity)
filters = Filter(router.activity!!)
filters.onGroupClicked = onGroupClickListener
sort = Sort(activity)
sort = Sort(router.activity!!)
sort.onGroupClicked = onGroupClickListener
display = Display(activity)
display = Display(router.activity!!)
display.onGroupClicked = onGroupClickListener
binding.menu.isVisible = true
binding.menu.setOnClickListener { it.post { showPopupMenu(it) } }
}
override fun getTabViews(): List<View> = listOf(
@@ -43,6 +48,23 @@ class ChaptersSettingsSheet(
R.string.action_display
)
private fun showPopupMenu(view: View) {
view.popupMenu(
R.menu.default_chapter_filter,
{
},
{
when (this.itemId) {
R.id.set_as_default -> {
SetChapterSettingsDialog(presenter.manga).showDialog(router)
true
}
else -> true
}
}
)
}
/**
* Filters group (unread, downloaded, ...).
*/
@@ -1,46 +1,48 @@
package eu.kanade.tachiyomi.ui.manga.chapter
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.customview.customView
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.ui.base.controller.DialogController
import eu.kanade.tachiyomi.util.chapter.ChapterSettingsHelper
import eu.kanade.tachiyomi.util.system.toast
import eu.kanade.tachiyomi.widget.DialogCheckboxView
class SetChapterSettingsDialog(val context: Context, val manga: Manga) {
private var dialog: Dialog
class SetChapterSettingsDialog(bundle: Bundle? = null) : DialogController(bundle) {
init {
this.dialog = buildDialog()
}
constructor(manga: Manga) : this(
Bundle().apply {
putSerializable(MANGA_KEY, manga)
}
)
private fun buildDialog(): Dialog {
val view = DialogCheckboxView(context).apply {
override fun onCreateDialog(savedViewState: Bundle?): Dialog {
val view = DialogCheckboxView(activity!!).apply {
setDescription(R.string.confirm_set_chapter_settings)
setOptionDescription(R.string.also_set_chapter_settings_for_library)
}
return MaterialDialog(context)
.title(R.string.action_chapter_settings)
return MaterialDialog(activity!!)
.title(R.string.chapter_settings)
.customView(
view = view,
horizontalPadding = true
)
.positiveButton(android.R.string.ok) {
ChapterSettingsHelper.setNewSettingDefaults(manga)
ChapterSettingsHelper.setGlobalSettings(args.getSerializable(MANGA_KEY)!! as Manga)
if (view.isChecked()) {
ChapterSettingsHelper.updateAllMangasWithDefaultsFromPreferences()
ChapterSettingsHelper.updateAllMangasWithGlobalDefaults()
}
context.toast(context.getString(R.string.chapter_settings_updated))
activity?.toast(activity!!.getString(R.string.chapter_settings_updated))
}
.negativeButton(android.R.string.cancel)
}
fun showDialog() = dialog.show()
fun dismissDialog() = dialog.dismiss()
private companion object {
const val MANGA_KEY = "manga"
}
}