From 32748fa05655bf302f5ffb0773e08747fb3118a0 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Thu, 1 Oct 2020 22:09:36 -0400 Subject: [PATCH] Allow migrating extra info like viewer, chapter filters, and other stuff --- .../ui/browse/migration/MigrationFlags.kt | 15 +++-- .../design/MigrationBottomSheetDialog.kt | 62 +++++++++---------- .../manga/MigrationMangaPresenter.kt | 14 +++++ .../res/layout/migration_bottom_sheet.xml | 15 ++++- 4 files changed, 65 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt index c8946afde..06afee8aa 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt @@ -4,17 +4,18 @@ import eu.kanade.tachiyomi.R object MigrationFlags { - const val CHAPTERS = 0b001 - const val CATEGORIES = 0b010 - const val TRACK = 0b100 + const val CHAPTERS = 0b0001 + const val CATEGORIES = 0b0010 + const val TRACK = 0b0100 + const val EXTRA = 0b1000 private const val CHAPTERS2 = 0x1 private const val CATEGORIES2 = 0x2 private const val TRACK2 = 0x4 - val titles get() = arrayOf(R.string.chapters, R.string.categories, R.string.track) + val titles get() = arrayOf(R.string.chapters, R.string.categories, R.string.track, R.string.log_extra) - val flags get() = arrayOf(CHAPTERS, CATEGORIES, TRACK) + val flags get() = arrayOf(CHAPTERS, CATEGORIES, TRACK, EXTRA) fun hasChapters(value: Int): Boolean { return value and CHAPTERS != 0 @@ -28,6 +29,10 @@ object MigrationFlags { return value and TRACK != 0 } + fun hasExtra(value: Int): Boolean { + return value and EXTRA != 0 + } + fun getEnabledFlagsPositions(value: Int): List { return flags.mapIndexedNotNull { index, flag -> if (value and flag != 0) index else null } } 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 4a4934d6e..084556544 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 @@ -14,15 +14,9 @@ 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 kotlinx.android.synthetic.main.migration_bottom_sheet.* -import kotlinx.android.synthetic.main.migration_bottom_sheet.extra_search_param -import kotlinx.android.synthetic.main.migration_bottom_sheet.extra_search_param_text -import kotlinx.android.synthetic.main.migration_bottom_sheet.mig_categories -import kotlinx.android.synthetic.main.migration_bottom_sheet.mig_chapters -import kotlinx.android.synthetic.main.migration_bottom_sheet.mig_tracking -import kotlinx.android.synthetic.main.migration_bottom_sheet.use_smart_search import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Job @@ -38,15 +32,12 @@ class MigrationBottomSheetDialog(activity: Activity, theme: Int, private val lis private val preferences by injectLazy() private val scope = CoroutineScope(Job() + Dispatchers.Main) - init { - // Use activity theme for this layout - val view = activity.layoutInflater.inflate(R.layout.migration_bottom_sheet, null) - // val scroll = NestedScrollView(context) - // scroll.addView(view) + private val binding: MigrationBottomSheetBinding = MigrationBottomSheetBinding.inflate(activity.layoutInflater) - setContentView(view) + init { + setContentView(binding.root) if (activity.resources.configuration?.orientation == Configuration.ORIENTATION_LANDSCAPE) { - sourceGroup.orientation = LinearLayout.HORIZONTAL + binding.sourceGroup.orientation = LinearLayout.HORIZONTAL } window?.setBackgroundDrawable(null) } @@ -59,11 +50,11 @@ class MigrationBottomSheetDialog(activity: Activity, theme: Int, private val lis initPreferences() - fab.clicks().onEach { - preferences.skipPreMigration().set(skip_step.isChecked) + binding.fab.clicks().onEach { + preferences.skipPreMigration().set(binding.skipStep.isChecked) listener.startMigration( - if (use_smart_search.isChecked && extra_search_param_text.text.isNotBlank()) { - extra_search_param_text.text.toString() + if (binding.useSmartSearch.isChecked && binding.extraSearchParamText.text.isNotBlank()) { + binding.extraSearchParamText.toString() } else null ) dismiss() @@ -76,23 +67,25 @@ class MigrationBottomSheetDialog(activity: Activity, theme: Int, private val lis private fun initPreferences() { val flags = preferences.migrateFlags().get() - mig_chapters.isChecked = MigrationFlags.hasChapters(flags) - mig_categories.isChecked = MigrationFlags.hasCategories(flags) - mig_tracking.isChecked = MigrationFlags.hasTracks(flags) + binding.migChapters.isChecked = MigrationFlags.hasChapters(flags) + binding.migCategories.isChecked = MigrationFlags.hasCategories(flags) + binding.migTracking.isChecked = MigrationFlags.hasTracks(flags) + binding.migExtra.isChecked = MigrationFlags.hasExtra(flags) - mig_chapters.setOnCheckedChangeListener { _, _ -> setFlags() } - mig_categories.setOnCheckedChangeListener { _, _ -> setFlags() } - mig_tracking.setOnCheckedChangeListener { _, _ -> setFlags() } + binding.migChapters.setOnCheckedChangeListener { _, _ -> setFlags() } + binding.migCategories.setOnCheckedChangeListener { _, _ -> setFlags() } + binding.migTracking.setOnCheckedChangeListener { _, _ -> setFlags() } + binding.migExtra.setOnCheckedChangeListener { buttonView, isChecked -> setFlags() } - use_smart_search.bindToPreference(preferences.smartMigration()) - extra_search_param_text.isVisible = false - extra_search_param.setOnCheckedChangeListener { _, isChecked -> - extra_search_param_text.isVisible = isChecked + binding.useSmartSearch.bindToPreference(preferences.smartMigration()) + binding.extraSearchParamText.isVisible = false + binding.extraSearchParam.setOnCheckedChangeListener { _, isChecked -> + binding.extraSearchParamText.isVisible = isChecked } - sourceGroup.bindToPreference(preferences.useSourceWithMost()) + binding.sourceGroup.bindToPreference(preferences.useSourceWithMost()) - skip_step.isChecked = preferences.skipPreMigration().get() - skip_step.setOnCheckedChangeListener { _, isChecked -> + binding.skipStep.isChecked = preferences.skipPreMigration().get() + binding.skipStep.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { (listener as? Controller)?.activity?.toast( R.string.pre_migration_skip_toast, @@ -104,9 +97,10 @@ class MigrationBottomSheetDialog(activity: Activity, theme: Int, private val lis private fun setFlags() { var flags = 0 - if (mig_chapters.isChecked) flags = flags or MigrationFlags.CHAPTERS - if (mig_categories.isChecked) flags = flags or MigrationFlags.CATEGORIES - if (mig_tracking.isChecked) flags = flags or MigrationFlags.TRACK + if (binding.migChapters.isChecked) flags = flags or MigrationFlags.CHAPTERS + if (binding.migCategories.isChecked) flags = flags or MigrationFlags.CATEGORIES + if (binding.migTracking.isChecked) flags = flags or MigrationFlags.TRACK + if (binding.migExtra.isChecked) flags = flags or MigrationFlags.EXTRA preferences.migrateFlags().set(flags) } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt index b8b4337cb..6825203e3 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/manga/MigrationMangaPresenter.kt @@ -61,6 +61,7 @@ class MigrationMangaPresenter( val migrateChapters = MigrationFlags.hasChapters(flags) val migrateCategories = MigrationFlags.hasCategories(flags) val migrateTracks = MigrationFlags.hasTracks(flags) + val migrateExtra = MigrationFlags.hasExtra(flags) db.inTransaction { // Update chapters read @@ -99,6 +100,17 @@ class MigrationMangaPresenter( } db.insertTracks(tracks).executeAsBlocking() } + + if (migrateExtra) { + manga.bookmarkedFilter = prevManga.bookmarkedFilter + manga.downloadedFilter = prevManga.downloadedFilter + manga.readFilter = prevManga.readFilter + manga.viewer = prevManga.viewer + manga.chapter_flags = prevManga.chapter_flags + manga.displayMode = prevManga.displayMode + manga.sorting = prevManga.sorting + } + // Update favorite status if (replace) { prevManga.favorite = false @@ -108,6 +120,8 @@ class MigrationMangaPresenter( } else { manga.date_added = Date().time } + // Set extra data + manga.favorite = true db.updateMangaFavorite(manga).executeAsBlocking() diff --git a/app/src/main/res/layout/migration_bottom_sheet.xml b/app/src/main/res/layout/migration_bottom_sheet.xml index e51828406..0e3d30971 100644 --- a/app/src/main/res/layout/migration_bottom_sheet.xml +++ b/app/src/main/res/layout/migration_bottom_sheet.xml @@ -60,11 +60,22 @@ android:checked="true" android:text="@string/track" app:layout_constraintBottom_toBottomOf="@+id/mig_categories" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toEndOf="@+id/mig_categories" app:layout_constraintTop_toTopOf="@+id/mig_categories" /> + +