From 4cbb2ae082852e5c078108bc966d532ec302f30e Mon Sep 17 00:00:00 2001 From: arkon Date: Thu, 28 Jan 2021 09:10:15 -0500 Subject: [PATCH] Apply bottom sheet dialog with restriction consistently (cherry picked from commit 7eef4f7fbf271ba05450551141929cb8142147ff) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt --- .../design/MigrationBottomSheetDialog.kt | 4 ++-- .../advanced/design/PreMigrationController.kt | 20 ++++--------------- .../browse/source/browse/SourceFilterSheet.kt | 4 ++-- .../ui/library/LibrarySettingsSheet.kt | 2 +- .../ui/manga/chapter/ChaptersSettingsSheet.kt | 2 +- .../ui/reader/ReaderColorFilterSheet.kt | 4 ++-- .../tachiyomi/ui/reader/ReaderPageSheet.kt | 14 ++----------- .../ui/reader/ReaderSettingsSheet.kt | 4 ++-- .../ui/reader/chapter/ReaderChapterSheet.kt | 4 ++-- .../widget/sheet/BaseBottomSheetDialog.kt | 18 +++++++++++++++++ .../{ => sheet}/TabbedBottomSheetDialog.kt | 6 +++--- 11 files changed, 39 insertions(+), 43 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BaseBottomSheetDialog.kt rename app/src/main/java/eu/kanade/tachiyomi/widget/{ => sheet}/TabbedBottomSheetDialog.kt (88%) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt index 225844f93..42459c3cd 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/MigrationBottomSheetDialog.kt @@ -10,16 +10,16 @@ import android.widget.RadioGroup import android.widget.Toast import androidx.core.view.isVisible import com.bluelinelabs.conductor.Controller -import com.google.android.material.bottomsheet.BottomSheetDialog import com.tfcporciuncula.flow.Preference import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.MigrationBottomSheetBinding import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags import eu.kanade.tachiyomi.util.system.toast +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog import uy.kohesive.injekt.injectLazy -class MigrationBottomSheetDialog(activity: Activity, theme: Int, private val listener: StartMigrationListener) : BottomSheetDialog(activity, theme) { +class MigrationBottomSheetDialog(activity: Activity, private val listener: StartMigrationListener) : BaseBottomSheetDialog(activity) { private val preferences: PreferencesHelper by injectLazy() private val binding: MigrationBottomSheetBinding = MigrationBottomSheetBinding.inflate(activity.layoutInflater) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationController.kt index 0ddd2e891..a509ea804 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/design/PreMigrationController.kt @@ -7,13 +7,10 @@ import android.view.MenuInflater import android.view.MenuItem import android.view.View import android.view.ViewGroup -import android.widget.FrameLayout import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bluelinelabs.conductor.Router -import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton import eu.davidea.flexibleadapter.FlexibleAdapter import eu.kanade.tachiyomi.R @@ -44,7 +41,7 @@ class PreMigrationController(bundle: Bundle? = null) : private var actionFab: ExtendedFloatingActionButton? = null private var actionFabScrollListener: RecyclerView.OnScrollListener? = null - private var dialog: BottomSheetDialog? = null + private lateinit var dialog: MigrationBottomSheetDialog override fun getTitle() = view?.context?.getString(R.string.select_sources) @@ -66,7 +63,7 @@ class PreMigrationController(bundle: Bundle? = null) : binding.recycler.adapter = ourAdapter ourAdapter.itemTouchHelperCallback = null // Reset adapter touch adapter to fix drag after rotation ourAdapter.isHandleDragEnabled = true - dialog = null + dialog = MigrationBottomSheetDialog(activity!!, this) actionFabScrollListener = actionFab?.shrinkOnScroll(binding.recycler) } @@ -76,17 +73,8 @@ class PreMigrationController(bundle: Bundle? = null) : fab.setText(R.string.action_migrate) fab.setIconResource(R.drawable.ic_arrow_forward_24dp) fab.setOnClickListener { - if (dialog?.isShowing != true) { - dialog = MigrationBottomSheetDialog(activity!!, R.style.SheetDialog, this) - dialog?.show() - val bottomSheet = dialog?.findViewById( - com.google.android.material.R.id.design_bottom_sheet - ) - if (bottomSheet != null) { - val behavior: BottomSheetBehavior<*> = BottomSheetBehavior.from(bottomSheet) - behavior.state = BottomSheetBehavior.STATE_EXPANDED - behavior.skipCollapsed = true - } + if (!dialog.isShowing) { + dialog.show() } } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt index 21e1d00bb..5829dec9d 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt @@ -9,7 +9,6 @@ import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.ConcatAdapter import androidx.recyclerview.widget.RecyclerView -import com.google.android.material.bottomsheet.BottomSheetDialog import com.google.android.material.chip.Chip import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible @@ -18,6 +17,7 @@ import eu.kanade.tachiyomi.source.CatalogueSource import eu.kanade.tachiyomi.source.online.BrowseSourceFilterHeader import eu.kanade.tachiyomi.ui.base.controller.BaseController import eu.kanade.tachiyomi.widget.SimpleNavigationView +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog import exh.savedsearches.EXHSavedSearch import exh.source.getMainSource @@ -35,7 +35,7 @@ class SourceFilterSheet( var onSavedSearchClicked: (Int) -> Unit = {}, var onSavedSearchDeleteClicked: (Int, String) -> Unit = { _, _ -> } // EXH <-- -) : BottomSheetDialog(activity) { +) : BaseBottomSheetDialog(activity) { private var filterNavView: FilterNavigationView diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt index 3c5bfcf09..24d9b6d61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibrarySettingsSheet.kt @@ -12,7 +12,7 @@ import eu.kanade.tachiyomi.data.track.TrackManager import eu.kanade.tachiyomi.data.track.TrackService import eu.kanade.tachiyomi.widget.ExtendedNavigationView import eu.kanade.tachiyomi.widget.ExtendedNavigationView.Item.TriStateGroup.State -import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog +import eu.kanade.tachiyomi.widget.sheet.TabbedBottomSheetDialog import uy.kohesive.injekt.Injekt import uy.kohesive.injekt.api.get import uy.kohesive.injekt.injectLazy diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt index 1608a42b1..e6e174aa9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersSettingsSheet.kt @@ -17,7 +17,7 @@ import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.view.popupMenu import eu.kanade.tachiyomi.widget.ExtendedNavigationView import eu.kanade.tachiyomi.widget.ExtendedNavigationView.Item.TriStateGroup.State -import eu.kanade.tachiyomi.widget.TabbedBottomSheetDialog +import eu.kanade.tachiyomi.widget.sheet.TabbedBottomSheetDialog import exh.md.utils.MdUtil import exh.metadata.metadata.MangaDexSearchMetadata import exh.source.getMainSource diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt index abae0789e..139407bbb 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderColorFilterSheet.kt @@ -9,11 +9,11 @@ import androidx.core.graphics.green import androidx.core.graphics.red import androidx.lifecycle.lifecycleScope import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.databinding.ReaderColorFilterSheetBinding import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener import eu.kanade.tachiyomi.widget.SimpleSeekBarListener +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import kotlinx.coroutines.flow.sample @@ -22,7 +22,7 @@ import uy.kohesive.injekt.injectLazy /** * Color filter sheet to toggle custom filter and brightness overlay. */ -class ReaderColorFilterSheet(private val activity: ReaderActivity) : BottomSheetDialog(activity) { +class ReaderColorFilterSheet(private val activity: ReaderActivity) : BaseBottomSheetDialog(activity) { private val preferences: PreferencesHelper by injectLazy() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt index eaac6e8d3..7edcabfef 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderPageSheet.kt @@ -1,13 +1,11 @@ package eu.kanade.tachiyomi.ui.reader -import android.os.Bundle -import android.view.ViewGroup import com.afollestad.materialdialogs.MaterialDialog -import com.google.android.material.bottomsheet.BottomSheetDialog import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.ReaderPageSheetBinding import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.reader.model.ReaderPage +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog /** * Sheet to show when a page is long clicked. @@ -15,7 +13,7 @@ import eu.kanade.tachiyomi.ui.reader.model.ReaderPage class ReaderPageSheet( private val activity: ReaderActivity, private val page: ReaderPage -) : BottomSheetDialog(activity) { +) : BaseBottomSheetDialog(activity) { private val binding = ReaderPageSheetBinding.inflate(activity.layoutInflater, null, false) @@ -27,14 +25,6 @@ class ReaderPageSheet( binding.saveLayout.setOnClickListener { save() } } - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - val width = context.resources.getDimensionPixelSize(R.dimen.bottom_sheet_width) - if (width > 0) { - window?.setLayout(width, ViewGroup.LayoutParams.MATCH_PARENT) - } - } - /** * Sets the image of this page as the cover of the manga. */ diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt index a6ac333a9..94501a0fa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderSettingsSheet.kt @@ -6,7 +6,6 @@ import android.widget.Spinner import androidx.annotation.ArrayRes import androidx.core.view.isVisible import androidx.core.widget.NestedScrollView -import com.google.android.material.bottomsheet.BottomSheetDialog import com.tfcporciuncula.flow.Preference import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.data.preference.PreferencesHelper @@ -14,12 +13,13 @@ import eu.kanade.tachiyomi.databinding.ReaderSettingsSheetBinding import eu.kanade.tachiyomi.ui.reader.viewer.pager.PagerViewer import eu.kanade.tachiyomi.ui.reader.viewer.webtoon.WebtoonViewer import eu.kanade.tachiyomi.widget.IgnoreFirstSpinnerListener +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog import uy.kohesive.injekt.injectLazy /** * Sheet to show reader and viewer preferences. */ -class ReaderSettingsSheet(private val activity: ReaderActivity) : BottomSheetDialog(activity) { +class ReaderSettingsSheet(private val activity: ReaderActivity) : BaseBottomSheetDialog(activity) { private val preferences: PreferencesHelper by injectLazy() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt index e29d0fed3..d312622a2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/chapter/ReaderChapterSheet.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.google.android.material.bottomsheet.BottomSheetDialog import com.mikepenz.fastadapter.FastAdapter import com.mikepenz.fastadapter.adapters.ItemAdapter import com.mikepenz.fastadapter.listeners.ClickEventHook @@ -19,6 +18,7 @@ import eu.kanade.tachiyomi.ui.reader.ReaderPresenter import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.system.dpToPx import eu.kanade.tachiyomi.widget.SimpleSeekBarListener +import eu.kanade.tachiyomi.widget.sheet.BaseBottomSheetDialog import exh.util.isExpanded import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach @@ -27,7 +27,7 @@ import reactivecircus.flowbinding.android.view.clicks /** * Color filter sheet to toggle custom filter and brightness overlay. */ -class ReaderChapterSheet(private val activity: ReaderActivity) : BottomSheetDialog(activity) { +class ReaderChapterSheet(private val activity: ReaderActivity) : BaseBottomSheetDialog(activity) { private var sheetBehavior: BottomSheetBehavior<*>? = null private val binding = ReaderChaptersSheetBinding.inflate(activity.layoutInflater, null, false) diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BaseBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BaseBottomSheetDialog.kt new file mode 100644 index 000000000..1fb501d0e --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/sheet/BaseBottomSheetDialog.kt @@ -0,0 +1,18 @@ +package eu.kanade.tachiyomi.widget.sheet + +import android.content.Context +import android.os.Bundle +import android.view.ViewGroup +import com.google.android.material.bottomsheet.BottomSheetDialog +import eu.kanade.tachiyomi.R + +open class BaseBottomSheetDialog(context: Context) : BottomSheetDialog(context) { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + val width = context.resources.getDimensionPixelSize(R.dimen.bottom_sheet_width) + if (width > 0) { + window?.setLayout(width, ViewGroup.LayoutParams.MATCH_PARENT) + } + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/sheet/TabbedBottomSheetDialog.kt similarity index 88% rename from app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheetDialog.kt rename to app/src/main/java/eu/kanade/tachiyomi/widget/sheet/TabbedBottomSheetDialog.kt index 8b840ac29..3d00688a9 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/TabbedBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/sheet/TabbedBottomSheetDialog.kt @@ -1,12 +1,12 @@ -package eu.kanade.tachiyomi.widget +package eu.kanade.tachiyomi.widget.sheet import android.view.View import android.view.ViewGroup import com.bluelinelabs.conductor.Router -import com.google.android.material.bottomsheet.BottomSheetDialog import eu.kanade.tachiyomi.databinding.CommonTabbedSheetBinding +import eu.kanade.tachiyomi.widget.ViewPagerAdapter -abstract class TabbedBottomSheetDialog(private val router: Router) : BottomSheetDialog(router.activity!!) { +abstract class TabbedBottomSheetDialog(private val router: Router) : BaseBottomSheetDialog(router.activity!!) { val binding: CommonTabbedSheetBinding = CommonTabbedSheetBinding.inflate(router.activity!!.layoutInflater)