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 06afee8aa..3ec11ffde 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 @@ -1,21 +1,12 @@ package eu.kanade.tachiyomi.ui.browse.migration -import eu.kanade.tachiyomi.R - object MigrationFlags { - 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, R.string.log_extra) - - val flags get() = arrayOf(CHAPTERS, CATEGORIES, TRACK, EXTRA) + const val CHAPTERS = 0b00001 + const val CATEGORIES = 0b00010 + const val TRACK = 0b00100 + const val CUSTOM_COVER = 0b01000 + const val EXTRA = 0b10000 fun hasChapters(value: Int): Boolean { return value and CHAPTERS != 0 @@ -29,15 +20,11 @@ object MigrationFlags { return value and TRACK != 0 } + fun hasCustomCover(value: Int): Boolean { + return value and CUSTOM_COVER != 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 } - } - - fun getFlagsFromPositions(positions: Array): Int { - return positions.fold(0, { accumulated, position -> accumulated or (1 shl position) }) - } } 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 442da2bd5..66341380d 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 @@ -62,11 +62,13 @@ class MigrationBottomSheetDialog(private val activity: Activity, private val lis binding.migChapters.isChecked = MigrationFlags.hasChapters(flags) binding.migCategories.isChecked = MigrationFlags.hasCategories(flags) binding.migTracking.isChecked = MigrationFlags.hasTracks(flags) + binding.migCustomCover.isChecked = MigrationFlags.hasCustomCover(flags) binding.migExtra.isChecked = MigrationFlags.hasExtra(flags) binding.migChapters.setOnCheckedChangeListener { _, _ -> setFlags() } binding.migCategories.setOnCheckedChangeListener { _, _ -> setFlags() } binding.migTracking.setOnCheckedChangeListener { _, _ -> setFlags() } + binding.migCustomCover.setOnCheckedChangeListener { _, _ -> setFlags() } binding.migExtra.setOnCheckedChangeListener { _, _ -> setFlags() } binding.useSmartSearch.bindToPreference(preferences.smartMigration()) @@ -93,6 +95,7 @@ class MigrationBottomSheetDialog(private val activity: Activity, private val lis 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.migCustomCover.isChecked) flags = flags or MigrationFlags.CUSTOM_COVER 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/advanced/process/MigrationProcessAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt index 23b9b6c47..d28f4249b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/advanced/process/MigrationProcessAdapter.kt @@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.advanced.process import android.view.MenuItem import eu.davidea.flexibleadapter.FlexibleAdapter +import eu.kanade.tachiyomi.data.cache.CoverCache import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.models.Chapter import eu.kanade.tachiyomi.data.database.models.History @@ -9,6 +10,7 @@ import eu.kanade.tachiyomi.data.database.models.Manga import eu.kanade.tachiyomi.data.database.models.MangaCategory import eu.kanade.tachiyomi.data.preference.PreferencesHelper import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags +import eu.kanade.tachiyomi.util.hasCustomCover import eu.kanade.tachiyomi.util.lang.launchUI import eu.kanade.tachiyomi.util.lang.withIOContext import kotlinx.coroutines.cancel @@ -19,6 +21,7 @@ class MigrationProcessAdapter( ) : FlexibleAdapter(null, controller, true) { private val db: DatabaseHelper by injectLazy() private val preferences: PreferencesHelper by injectLazy() + private val coverCache: CoverCache by injectLazy() var items: List = emptyList() @@ -148,11 +151,17 @@ class MigrationProcessAdapter( // Update track if (MigrationFlags.hasTracks(flags)) { val tracks = db.getTracks(prevManga).executeAsBlocking() - for (track in tracks) { - track.id = null - track.manga_id = manga.id!! + if (tracks.isNotEmpty()) { + tracks.forEach { track -> + track.id = null + track.manga_id = manga.id!! + } + db.insertTracks(tracks).executeAsBlocking() } - db.insertTracks(tracks).executeAsBlocking() + } + // Update custom cover + if (MigrationFlags.hasCustomCover(flags) && prevManga.hasCustomCover(coverCache)) { + coverCache.setCustomCoverToCache(manga, coverCache.getCustomCoverFile(prevManga).inputStream()) } // Update extras if (MigrationFlags.hasExtra(flags)) { diff --git a/app/src/main/res/layout/migration_bottom_sheet.xml b/app/src/main/res/layout/migration_bottom_sheet.xml index 8464f0b53..64c9f77a4 100644 --- a/app/src/main/res/layout/migration_bottom_sheet.xml +++ b/app/src/main/res/layout/migration_bottom_sheet.xml @@ -72,6 +72,14 @@ android:checked="true" android:text="@string/track" /> + + Custom All Unread + Custom cover Cover Cover saved Error saving cover