From aa56698dac3843c82adad4042ca23c61017c91a6 Mon Sep 17 00:00:00 2001 From: arkon Date: Sun, 18 Apr 2021 12:54:51 -0400 Subject: [PATCH] Clean up controller viewbinding creation Based on https://github.com/Jays2Kings/tachiyomiJ2K/blob/master/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt (cherry picked from commit cab919d74c2a00fd450c915a4d7fddc29c44927e) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/SourceController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt --- .../ui/base/controller/BaseController.kt | 12 +- .../tachiyomi/ui/browse/BrowseController.kt | 6 +- .../browse/extension/ExtensionController.kt | 13 +- .../details/ExtensionDetailsController.kt | 17 +-- .../details/SourcePreferencesController.kt | 6 +- .../ui/browse/latest/LatestController.kt | 26 +--- .../advanced/design/PreMigrationController.kt | 13 +- .../process/MigrationListController.kt | 20 ++- .../manga/MigrationMangaController.kt | 13 +- .../sources/MigrationSourcesController.kt | 13 +- .../ui/browse/source/SourceController.kt | 20 +-- .../source/browse/BrowseSourceController.kt | 5 +- .../globalsearch/GlobalSearchController.kt | 24 +-- .../ui/browse/source/index/IndexController.kt | 15 +- .../ui/category/CategoryController.kt | 23 +-- .../biometric/BiometricTimesController.kt | 23 +-- .../ui/category/genre/SortTagController.kt | 23 +-- .../ui/category/repos/RepoController.kt | 23 +-- .../sources/SourceCategoryController.kt | 23 +-- .../ui/download/DownloadController.kt | 17 +-- .../tachiyomi/ui/library/LibraryController.kt | 13 +- .../tachiyomi/ui/manga/MangaController.kt | 13 +- .../ui/recent/history/HistoryController.kt | 13 +- .../ui/recent/updates/UpdatesController.kt | 11 +- .../search/SettingsSearchController.kt | 13 +- .../java/exh/ui/base/BaseExhController.kt | 31 ---- .../exh/ui/batchadd/BatchAddController.kt | 138 +++++++++--------- .../exh/ui/metadata/MetadataViewController.kt | 19 +-- .../ui/smartsearch/SmartSearchController.kt | 8 +- 29 files changed, 208 insertions(+), 386 deletions(-) delete mode 100644 app/src/main/java/exh/ui/base/BaseExhController.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt index c868af234..44e55b0fe 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/base/controller/BaseController.kt @@ -19,7 +19,8 @@ import timber.log.Timber abstract class BaseController(bundle: Bundle? = null) : RestoreViewOnCreateController(bundle) { - lateinit var binding: VB + protected lateinit var binding: VB + private set lateinit var viewScope: CoroutineScope @@ -51,11 +52,12 @@ abstract class BaseController(bundle: Bundle? = null) : ) } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View { - return inflateView(inflater, container) - } + abstract fun createBinding(inflater: LayoutInflater): VB - abstract fun inflateView(inflater: LayoutInflater, container: ViewGroup): View + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup, savedViewState: Bundle?): View { + binding = createBinding(inflater) + return binding.root + } open fun onViewCreated(view: View) {} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt index 409f685c5..77dc91219 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/BrowseController.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.browse import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import com.bluelinelabs.conductor.Controller import com.bluelinelabs.conductor.ControllerChangeHandler @@ -51,10 +50,7 @@ class BrowseController : return resources!!.getString(R.string.browse) } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = PagerControllerBinding.inflate(inflater) - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = PagerControllerBinding.inflate(inflater) override fun onViewCreated(view: View) { super.onViewCreated(view) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionController.kt index 8adc75cdc..5b3f43bcf 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/ExtensionController.kt @@ -5,7 +5,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.recyclerview.widget.LinearLayoutManager import com.bluelinelabs.conductor.ControllerChangeHandler @@ -57,18 +56,16 @@ open class ExtensionController : return ExtensionPresenter() } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = ExtensionControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = ExtensionControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) binding.swipeRefresh.isRefreshing = true binding.swipeRefresh.refreshes() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsController.kt index 52882285b..69762a591 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/ExtensionDetailsController.kt @@ -12,7 +12,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.view.ContextThemeWrapper import androidx.core.os.bundleOf import androidx.preference.Preference @@ -65,15 +64,9 @@ class ExtensionDetailsController(bundle: Bundle? = null) : setHasOptionsMenu(true) } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { + override fun createBinding(inflater: LayoutInflater): ExtensionDetailControllerBinding { val themedInflater = inflater.cloneInContext(getPreferenceThemeContext()) - binding = ExtensionDetailControllerBinding.inflate(themedInflater) - binding.extensionPrefsRecycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root + return ExtensionDetailControllerBinding.inflate(themedInflater) } override fun createPresenter(): ExtensionDetailsPresenter { @@ -88,6 +81,12 @@ class ExtensionDetailsController(bundle: Bundle? = null) : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.extensionPrefsRecycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + val extension = presenter.extension ?: return val context = view.context diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesController.kt index 747a025f0..21b71621f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/extension/details/SourcePreferencesController.kt @@ -6,7 +6,6 @@ import android.os.Bundle import android.util.TypedValue import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.appcompat.view.ContextThemeWrapper import androidx.core.os.bundleOf import androidx.preference.DialogPreference @@ -46,10 +45,9 @@ class SourcePreferencesController(bundle: Bundle? = null) : bundleOf(SOURCE_ID to sourceId) ) - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { + override fun createBinding(inflater: LayoutInflater): SourcePreferencesControllerBinding { val themedInflater = inflater.cloneInContext(getPreferenceThemeContext()) - binding = SourcePreferencesControllerBinding.inflate(themedInflater) - return binding.root + return SourcePreferencesControllerBinding.inflate(themedInflater) } override fun createPresenter(): SourcePreferencesPresenter { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/latest/LatestController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/latest/LatestController.kt index 0f662d6b8..02285b875 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/latest/LatestController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/latest/LatestController.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.browse.latest import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import dev.chrisbanes.insetter.applyInsetter import eu.kanade.tachiyomi.R @@ -32,23 +31,6 @@ open class LatestController : */ protected var adapter: LatestAdapter? = null - /** - * Initiate the view with [R.layout.global_search_controller]. - * - * @param inflater used to load the layout xml. - * @param container containing parent views. - * @return inflated view - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = LatestControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } - override fun getTitle(): String? { return applicationContext?.getString(R.string.latest) } @@ -82,6 +64,8 @@ open class LatestController : onMangaClick(manga) } + override fun createBinding(inflater: LayoutInflater): LatestControllerBinding = LatestControllerBinding.inflate(inflater) + /** * Called when the view is created * @@ -90,6 +74,12 @@ open class LatestController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = LatestAdapter(this) // Create recycler and set adapter. 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 c72e5afe1..2306b8dae 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 @@ -6,7 +6,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -46,18 +45,16 @@ class PreMigrationController(bundle: Bundle? = null) : override fun getTitle() = view?.context?.getString(R.string.select_sources) - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = PreMigrationControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = PreMigrationControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) val ourAdapter = adapter ?: MigrationSourceAdapter( getEnabledSources().map { MigrationSourceItem(it, isEnabled(it.id.toString())) }, diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt index d26130998..a891ffa40 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationListController.kt @@ -8,7 +8,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import android.widget.Toast import androidx.core.graphics.ColorUtils import androidx.core.os.bundleOf @@ -84,24 +83,23 @@ class MigrationListController(bundle: Bundle? = null) : private val throttleManager = EHentaiThrottleManager() - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = MigrationListControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } - override fun getTitle(): String { return resources?.getString(R.string.migration) + " (${adapter?.items?.count { it.manga.migrationStatus != MigrationStatus.RUNNING }}/${adapter?.itemCount ?: 0})" } + override fun createBinding(inflater: LayoutInflater) = MigrationListControllerBinding.inflate(inflater) + override fun onViewCreated(view: View) { super.onViewCreated(view) + + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + setTitle() val config = this.config ?: return diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt index 3d5212cd0..d32056251 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaController.kt @@ -3,7 +3,6 @@ package eu.kanade.tachiyomi.ui.browse.migration.manga import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import dev.chrisbanes.insetter.applyInsetter @@ -52,18 +51,16 @@ class MigrationMangaController : return MigrationMangaPresenter(sourceId) } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = MigrationMangaControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = MigrationMangaControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) adapter = MigrationMangaAdapter(this) binding.recycler.layoutManager = LinearLayoutManager(view.context) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesController.kt index 219ab99c1..4197b9b2c 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/sources/MigrationSourcesController.kt @@ -5,7 +5,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import dev.chrisbanes.insetter.applyInsetter import eu.davidea.flexibleadapter.FlexibleAdapter @@ -42,18 +41,16 @@ class MigrationSourcesController : return MigrationSourcesPresenter() } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = MigrationSourcesControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = MigrationSourcesControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) adapter = SourceAdapter(this) binding.recycler.layoutManager = LinearLayoutManager(view.context) 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 e9e9e3636..86c612897 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 @@ -9,7 +9,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import com.afollestad.materialdialogs.MaterialDialog @@ -88,25 +87,16 @@ class SourceController(bundle: Bundle? = null) : return SourcePresenter(/* SY --> */ controllerMode = mode /* SY <-- */) } - /** - * Initiate the view with [R.layout.source_main_controller]. - * - * @param inflater used to load the layout xml. - * @param container containing parent views. - * @return inflated view. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = SourceMainControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = SourceMainControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) adapter = SourceAdapter(this) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt index 594317719..11539da61 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/BrowseSourceController.kt @@ -159,10 +159,7 @@ open class BrowseSourceController(bundle: Bundle) : // SY <-- } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = SourceControllerBinding.inflate(inflater) - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = SourceControllerBinding.inflate(inflater) override fun onViewCreated(view: View) { super.onViewCreated(view) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt index ac44e90d2..7105276f7 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/globalsearch/GlobalSearchController.kt @@ -6,7 +6,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager @@ -51,22 +50,7 @@ open class GlobalSearchController( setHasOptionsMenu(true) } - /** - * Initiate the view with [R.layout.global_search_controller]. - * - * @param inflater used to load the layout xml. - * @param container containing parent views. - * @return inflated view - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = GlobalSearchControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = GlobalSearchControllerBinding.inflate(inflater) override fun getTitle(): String? { return presenter.query @@ -143,6 +127,12 @@ open class GlobalSearchController( override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = GlobalSearchAdapter(this) // Create recycler and set adapter. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexController.kt index b4e5dbf42..453428d43 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/index/IndexController.kt @@ -5,7 +5,6 @@ import android.view.LayoutInflater import android.view.Menu import android.view.MenuInflater import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager @@ -74,18 +73,6 @@ open class IndexController : setHasOptionsMenu(true) } - /** - * Initiate the view with [R.layout.latest_controller]. - * - * @param inflater used to load the layout xml. - * @param container containing parent views. - * @return inflated view - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = IndexControllerBinding.inflate(inflater) - return binding.root - } - override fun getTitle(): String? { return source!!.name } @@ -139,6 +126,8 @@ open class IndexController : } } + override fun createBinding(inflater: LayoutInflater) = IndexControllerBinding.inflate(inflater) + /** * Called when the view is created * diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt index af189e574..4b2a17745 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/CategoryController.kt @@ -4,7 +4,6 @@ import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -68,21 +67,7 @@ class CategoryController : return resources?.getString(R.string.action_edit_categories) } - /** - * Returns the view of this controller. - * - * @param inflater The layout inflater to create the view from XML. - * @param container The parent view for this one. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = CategoriesControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = CategoriesControllerBinding.inflate(inflater) /** * Called after view inflation. Used to initialize the view. @@ -92,6 +77,12 @@ class CategoryController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = CategoryAdapter(this@CategoryController) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt index a9278383e..76c711a39 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/biometric/BiometricTimesController.kt @@ -4,7 +4,6 @@ import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -68,21 +67,7 @@ class BiometricTimesController : return resources?.getString(R.string.biometric_lock_times) } - /** - * Returns the view of this controller. - * - * @param inflater The layout inflater to create the view from XML. - * @param container The parent view for this one. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = CategoriesControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = CategoriesControllerBinding.inflate(inflater) /** * Called after view inflation. Used to initialize the view. @@ -92,6 +77,12 @@ class BiometricTimesController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = BiometricTimesAdapter(this@BiometricTimesController) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/genre/SortTagController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/genre/SortTagController.kt index 777548f92..8efa21482 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/genre/SortTagController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/genre/SortTagController.kt @@ -5,7 +5,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -74,21 +73,7 @@ class SortTagController : setHasOptionsMenu(true) } - /** - * Returns the view of this controller. - * - * @param inflater The layout inflater to create the view from XML. - * @param container The parent view for this one. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = CategoriesControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = CategoriesControllerBinding.inflate(inflater) /** * Called after view inflation. Used to initialize the view. @@ -98,6 +83,12 @@ class SortTagController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = SortTagAdapter(this@SortTagController) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoController.kt index 2a661253a..ebac3c783 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/repos/RepoController.kt @@ -4,7 +4,6 @@ import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -65,21 +64,7 @@ class RepoController : return resources?.getString(R.string.action_edit_repos) } - /** - * Returns the view of this controller. - * - * @param inflater The layout inflater to create the view from XML. - * @param container The parent view for this one. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = CategoriesControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = CategoriesControllerBinding.inflate(inflater) /** * Called after view inflation. Used to initialize the view. @@ -89,6 +74,12 @@ class RepoController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = RepoAdapter(this@RepoController) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt index 6035a2d35..17c2c0492 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/category/sources/SourceCategoryController.kt @@ -4,7 +4,6 @@ import android.view.LayoutInflater import android.view.Menu import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -66,21 +65,7 @@ class SourceCategoryController : return resources?.getString(R.string.action_edit_categories) } - /** - * Returns the view of this controller. - * - * @param inflater The layout inflater to create the view from XML. - * @param container The parent view for this one. - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = CategoriesControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = CategoriesControllerBinding.inflate(inflater) /** * Called after view inflation. Used to initialize the view. @@ -90,6 +75,12 @@ class SourceCategoryController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + adapter = SourceCategoryAdapter(this@SourceCategoryController) binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt index 72cacd907..e2699ccf6 100755 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt @@ -5,7 +5,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.core.view.isVisible import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -55,15 +54,7 @@ class DownloadController : setHasOptionsMenu(true) } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = DownloadControllerBinding.inflate(inflater) - binding.recycler.applyInsetter { - type(navigationBars = true) { - padding() - } - } - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = DownloadControllerBinding.inflate(inflater) override fun createPresenter(): DownloadPresenter { return DownloadPresenter() @@ -76,6 +67,12 @@ class DownloadController : override fun onViewCreated(view: View) { super.onViewCreated(view) + binding.recycler.applyInsetter { + type(navigationBars = true) { + padding() + } + } + // Check if download queue is empty and update information accordingly. setInformationView() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt index e5419bba7..a5e6b66f2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt @@ -7,7 +7,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import android.view.WindowManager import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode @@ -194,18 +193,16 @@ class LibraryController( return LibraryPresenter() } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = LibraryControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = LibraryControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.actionToolbar.applyInsetter { type(navigationBars = true) { margin(bottom = true) } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) adapter = LibraryAdapter(this) binding.libraryPager.adapter = adapter diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt index a99c34b10..1eea4ad64 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt @@ -17,7 +17,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import android.view.animation.DecelerateInterpolator import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity @@ -276,8 +275,11 @@ class MangaController : ) } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = MangaControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = MangaControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() @@ -288,11 +290,6 @@ class MangaController : margin(bottom = true) } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) if (manga == null || source == null) return val adapters: MutableList?> = mutableListOf() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt index 57e2ad3ab..c04d6045f 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/history/HistoryController.kt @@ -7,7 +7,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.recyclerview.widget.LinearLayoutManager import com.afollestad.materialdialogs.MaterialDialog @@ -72,18 +71,16 @@ class HistoryController : return HistoryPresenter() } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = HistoryControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = HistoryControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) + binding.recycler.applyInsetter { type(navigationBars = true) { padding() } } - return binding.root - } - - override fun onViewCreated(view: View) { - super.onViewCreated(view) // Initialize adapter binding.recycler.layoutManager = LinearLayoutManager(view.context) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesController.kt index 4dca1f14a..6b427d0a6 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/recent/updates/UpdatesController.kt @@ -5,7 +5,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.view.ActionMode import androidx.recyclerview.widget.LinearLayoutManager @@ -71,8 +70,10 @@ class UpdatesController : return UpdatesPresenter() } - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = UpdatesControllerBinding.inflate(inflater) + override fun createBinding(inflater: LayoutInflater) = UpdatesControllerBinding.inflate(inflater) + + override fun onViewCreated(view: View) { + super.onViewCreated(view) binding.recycler.applyInsetter { type(navigationBars = true) { padding() @@ -83,11 +84,7 @@ class UpdatesController : margin(bottom = true) } } - return binding.root - } - override fun onViewCreated(view: View) { - super.onViewCreated(view) view.context.notificationManager.cancel(Notifications.ID_NEW_CHAPTERS) // Init RecyclerView and adapter diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/search/SettingsSearchController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/search/SettingsSearchController.kt index 2f8517fc5..5dc4e1d05 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/setting/search/SettingsSearchController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/setting/search/SettingsSearchController.kt @@ -6,7 +6,6 @@ import android.view.Menu import android.view.MenuInflater import android.view.MenuItem import android.view.View -import android.view.ViewGroup import androidx.appcompat.widget.SearchView import androidx.recyclerview.widget.LinearLayoutManager import eu.kanade.tachiyomi.R @@ -33,17 +32,7 @@ class SettingsSearchController : setHasOptionsMenu(true) } - /** - * Initiate the view with [R.layout.settings_search_controller]. - * - * @param inflater used to load the layout xml. - * @param container containing parent views. - * @return inflated view - */ - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = SettingsSearchControllerBinding.inflate(inflater) - return binding.root - } + override fun createBinding(inflater: LayoutInflater) = SettingsSearchControllerBinding.inflate(inflater) override fun getTitle(): String? { return presenter.query diff --git a/app/src/main/java/exh/ui/base/BaseExhController.kt b/app/src/main/java/exh/ui/base/BaseExhController.kt deleted file mode 100644 index 9f1fb5835..000000000 --- a/app/src/main/java/exh/ui/base/BaseExhController.kt +++ /dev/null @@ -1,31 +0,0 @@ -package exh.ui.base - -import android.os.Bundle -import android.view.LayoutInflater -import android.view.View -import android.view.ViewGroup -import androidx.annotation.LayoutRes -import androidx.viewbinding.ViewBinding -import eu.kanade.tachiyomi.ui.base.controller.BaseController -import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.Job -import kotlinx.coroutines.cancel -import kotlin.coroutines.CoroutineContext - -abstract class BaseExhController(bundle: Bundle? = null) : BaseController(bundle), CoroutineScope { - abstract val layoutId: Int - @LayoutRes get - - override val coroutineContext: CoroutineContext = Job() + Dispatchers.Default - - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - return inflater.inflate(layoutId, container, false) - } - - override fun onDestroy() { - super.onDestroy() - - cancel() - } -} diff --git a/app/src/main/java/exh/ui/batchadd/BatchAddController.kt b/app/src/main/java/exh/ui/batchadd/BatchAddController.kt index 260e80c5f..58ee53183 100755 --- a/app/src/main/java/exh/ui/batchadd/BatchAddController.kt +++ b/app/src/main/java/exh/ui/batchadd/BatchAddController.kt @@ -2,7 +2,6 @@ package exh.ui.batchadd import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import android.widget.TextView import com.afollestad.materialdialogs.MaterialDialog import eu.kanade.tachiyomi.R @@ -20,85 +19,80 @@ import rx.subscriptions.CompositeSubscription * Batch add screen */ class BatchAddController : NucleusController() { - override fun inflateView(inflater: LayoutInflater, container: ViewGroup): View { - binding = EhFragmentBatchAddBinding.inflate(inflater) - return binding.root - } - override fun getTitle() = activity!!.getString(R.string.batch_add) override fun createPresenter() = BatchAddPresenter() + override fun createBinding(inflater: LayoutInflater) = EhFragmentBatchAddBinding.inflate(inflater) + override fun onViewCreated(view: View) { super.onViewCreated(view) - with(view) { - binding.btnAddGalleries.clicks() - .onEach { - addGalleries(binding.galleriesBox.text.toString()) + binding.btnAddGalleries.clicks() + .onEach { + addGalleries(binding.galleriesBox.text.toString()) + } + .launchIn(viewScope) + + binding.progressDismissBtn.clicks() + .onEach { + presenter.currentlyAddingRelay.call(BatchAddPresenter.STATE_PROGRESS_TO_INPUT) + } + .launchIn(viewScope) + + val progressSubscriptions = CompositeSubscription() + + presenter.currentlyAddingRelay + .onBackpressureBuffer() + .observeOn(AndroidSchedulers.mainThread()) + .subscribeUntilDestroy { + progressSubscriptions.clear() + if (it == BatchAddPresenter.STATE_INPUT_TO_PROGRESS) { + showProgress(binding) + progressSubscriptions += presenter.progressRelay + .onBackpressureBuffer() + .observeOn(AndroidSchedulers.mainThread()) + .combineLatest(presenter.progressTotalRelay) { progress, total -> + // Show hide dismiss button + binding.progressDismissBtn.visibility = + if (progress == total) { + View.VISIBLE + } else { + View.GONE + } + + formatProgress(progress, total) + }.subscribeUntilDestroy { + binding.progressText.text = it + } + + progressSubscriptions += presenter.progressTotalRelay + .onBackpressureBuffer() + .observeOn(AndroidSchedulers.mainThread()) + .subscribeUntilDestroy { + binding.progressBar.max = it + } + + progressSubscriptions += presenter.progressRelay + .onBackpressureBuffer() + .observeOn(AndroidSchedulers.mainThread()) + .subscribeUntilDestroy { + binding.progressBar.progress = it + } + + presenter.eventRelay + ?.onBackpressureBuffer() + ?.observeOn(AndroidSchedulers.mainThread()) + ?.subscribeUntilDestroy { + binding.progressLog.append("$it\n") + }?.let { + progressSubscriptions += it + } + } else if (it == BatchAddPresenter.STATE_PROGRESS_TO_INPUT) { + hideProgress(binding) + presenter.currentlyAddingRelay.call(BatchAddPresenter.STATE_IDLE) } - .launchIn(viewScope) - - binding.progressDismissBtn.clicks() - .onEach { - presenter.currentlyAddingRelay.call(BatchAddPresenter.STATE_PROGRESS_TO_INPUT) - } - .launchIn(viewScope) - - val progressSubscriptions = CompositeSubscription() - - presenter.currentlyAddingRelay - .onBackpressureBuffer() - .observeOn(AndroidSchedulers.mainThread()) - .subscribeUntilDestroy { - progressSubscriptions.clear() - if (it == BatchAddPresenter.STATE_INPUT_TO_PROGRESS) { - showProgress(binding) - progressSubscriptions += presenter.progressRelay - .onBackpressureBuffer() - .observeOn(AndroidSchedulers.mainThread()) - .combineLatest(presenter.progressTotalRelay) { progress, total -> - // Show hide dismiss button - binding.progressDismissBtn.visibility = - if (progress == total) { - View.VISIBLE - } else { - View.GONE - } - - formatProgress(progress, total) - }.subscribeUntilDestroy { - binding.progressText.text = it - } - - progressSubscriptions += presenter.progressTotalRelay - .onBackpressureBuffer() - .observeOn(AndroidSchedulers.mainThread()) - .subscribeUntilDestroy { - binding.progressBar.max = it - } - - progressSubscriptions += presenter.progressRelay - .onBackpressureBuffer() - .observeOn(AndroidSchedulers.mainThread()) - .subscribeUntilDestroy { - binding.progressBar.progress = it - } - - presenter.eventRelay - ?.onBackpressureBuffer() - ?.observeOn(AndroidSchedulers.mainThread()) - ?.subscribeUntilDestroy { - binding.progressLog.append("$it\n") - }?.let { - progressSubscriptions += it - } - } else if (it == BatchAddPresenter.STATE_PROGRESS_TO_INPUT) { - hideProgress(binding) - presenter.currentlyAddingRelay.call(BatchAddPresenter.STATE_IDLE) - } - } - } + } } private val EhFragmentBatchAddBinding.progressViews diff --git a/app/src/main/java/exh/ui/metadata/MetadataViewController.kt b/app/src/main/java/exh/ui/metadata/MetadataViewController.kt index 026301adf..34b878136 100644 --- a/app/src/main/java/exh/ui/metadata/MetadataViewController.kt +++ b/app/src/main/java/exh/ui/metadata/MetadataViewController.kt @@ -3,7 +3,6 @@ package exh.ui.metadata import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.view.ViewGroup import androidx.core.os.bundleOf import androidx.recyclerview.widget.LinearLayoutManager import dev.chrisbanes.insetter.applyInsetter @@ -50,16 +49,6 @@ class MetadataViewController : NucleusController