New: Migrating titles maintains custom covers (#7196)
* New: Migrating titles maintains custom covers #7189 * Added Custom Covers to MigrationFlags.kt, strings.xml * Reworded covers --> cover * Updated logic to show/hide Migration flags titles depending on manga. (cherry picked from commit 5ea03fad8793a810514b41fe8308f89b25368c4d) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/MigrationFlags.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/browse/migration/search/SearchPresenter.kt (cherry picked from commit ed39b61ee9bb9ccec7edc8be82005e9ac95d5e22)
This commit is contained in:
parent
f7e5df2b6d
commit
fcbe9590d3
@ -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<Int> {
|
||||
return flags.mapIndexedNotNull { index, flag -> if (value and flag != 0) index else null }
|
||||
}
|
||||
|
||||
fun getFlagsFromPositions(positions: Array<Int>): Int {
|
||||
return positions.fold(0, { accumulated, position -> accumulated or (1 shl position) })
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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<MigrationProcessItem>(null, controller, true) {
|
||||
private val db: DatabaseHelper by injectLazy()
|
||||
private val preferences: PreferencesHelper by injectLazy()
|
||||
private val coverCache: CoverCache by injectLazy()
|
||||
|
||||
var items: List<MigrationProcessItem> = emptyList()
|
||||
|
||||
@ -148,12 +151,18 @@ class MigrationProcessAdapter(
|
||||
// Update track
|
||||
if (MigrationFlags.hasTracks(flags)) {
|
||||
val tracks = db.getTracks(prevManga).executeAsBlocking()
|
||||
for (track in tracks) {
|
||||
if (tracks.isNotEmpty()) {
|
||||
tracks.forEach { track ->
|
||||
track.id = null
|
||||
track.manga_id = manga.id!!
|
||||
}
|
||||
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)) {
|
||||
manga.chapter_flags = prevManga.chapter_flags
|
||||
|
@ -72,6 +72,14 @@
|
||||
android:checked="true"
|
||||
android:text="@string/track" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/mig_custom_cover"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginStart="4dp"
|
||||
android:checked="true"
|
||||
android:text="@string/custom_cover" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/mig_extra"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -617,6 +617,7 @@
|
||||
<string name="download_custom">Custom</string>
|
||||
<string name="download_all">All</string>
|
||||
<string name="download_unread">Unread</string>
|
||||
<string name="custom_cover">Custom cover</string>
|
||||
<string name="manga_cover">Cover</string>
|
||||
<string name="cover_saved">Cover saved</string>
|
||||
<string name="error_saving_cover">Error saving cover</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user