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
|
package eu.kanade.tachiyomi.ui.browse.migration
|
||||||
|
|
||||||
import eu.kanade.tachiyomi.R
|
|
||||||
|
|
||||||
object MigrationFlags {
|
object MigrationFlags {
|
||||||
|
|
||||||
const val CHAPTERS = 0b0001
|
const val CHAPTERS = 0b00001
|
||||||
const val CATEGORIES = 0b0010
|
const val CATEGORIES = 0b00010
|
||||||
const val TRACK = 0b0100
|
const val TRACK = 0b00100
|
||||||
const val EXTRA = 0b1000
|
const val CUSTOM_COVER = 0b01000
|
||||||
|
const val EXTRA = 0b10000
|
||||||
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)
|
|
||||||
|
|
||||||
fun hasChapters(value: Int): Boolean {
|
fun hasChapters(value: Int): Boolean {
|
||||||
return value and CHAPTERS != 0
|
return value and CHAPTERS != 0
|
||||||
@ -29,15 +20,11 @@ object MigrationFlags {
|
|||||||
return value and TRACK != 0
|
return value and TRACK != 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun hasCustomCover(value: Int): Boolean {
|
||||||
|
return value and CUSTOM_COVER != 0
|
||||||
|
}
|
||||||
|
|
||||||
fun hasExtra(value: Int): Boolean {
|
fun hasExtra(value: Int): Boolean {
|
||||||
return value and EXTRA != 0
|
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.migChapters.isChecked = MigrationFlags.hasChapters(flags)
|
||||||
binding.migCategories.isChecked = MigrationFlags.hasCategories(flags)
|
binding.migCategories.isChecked = MigrationFlags.hasCategories(flags)
|
||||||
binding.migTracking.isChecked = MigrationFlags.hasTracks(flags)
|
binding.migTracking.isChecked = MigrationFlags.hasTracks(flags)
|
||||||
|
binding.migCustomCover.isChecked = MigrationFlags.hasCustomCover(flags)
|
||||||
binding.migExtra.isChecked = MigrationFlags.hasExtra(flags)
|
binding.migExtra.isChecked = MigrationFlags.hasExtra(flags)
|
||||||
|
|
||||||
binding.migChapters.setOnCheckedChangeListener { _, _ -> setFlags() }
|
binding.migChapters.setOnCheckedChangeListener { _, _ -> setFlags() }
|
||||||
binding.migCategories.setOnCheckedChangeListener { _, _ -> setFlags() }
|
binding.migCategories.setOnCheckedChangeListener { _, _ -> setFlags() }
|
||||||
binding.migTracking.setOnCheckedChangeListener { _, _ -> setFlags() }
|
binding.migTracking.setOnCheckedChangeListener { _, _ -> setFlags() }
|
||||||
|
binding.migCustomCover.setOnCheckedChangeListener { _, _ -> setFlags() }
|
||||||
binding.migExtra.setOnCheckedChangeListener { _, _ -> setFlags() }
|
binding.migExtra.setOnCheckedChangeListener { _, _ -> setFlags() }
|
||||||
|
|
||||||
binding.useSmartSearch.bindToPreference(preferences.smartMigration())
|
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.migChapters.isChecked) flags = flags or MigrationFlags.CHAPTERS
|
||||||
if (binding.migCategories.isChecked) flags = flags or MigrationFlags.CATEGORIES
|
if (binding.migCategories.isChecked) flags = flags or MigrationFlags.CATEGORIES
|
||||||
if (binding.migTracking.isChecked) flags = flags or MigrationFlags.TRACK
|
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
|
if (binding.migExtra.isChecked) flags = flags or MigrationFlags.EXTRA
|
||||||
preferences.migrateFlags().set(flags)
|
preferences.migrateFlags().set(flags)
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.browse.migration.advanced.process
|
|||||||
|
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
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.DatabaseHelper
|
||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.History
|
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.database.models.MangaCategory
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.ui.browse.migration.MigrationFlags
|
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.launchUI
|
||||||
import eu.kanade.tachiyomi.util.lang.withIOContext
|
import eu.kanade.tachiyomi.util.lang.withIOContext
|
||||||
import kotlinx.coroutines.cancel
|
import kotlinx.coroutines.cancel
|
||||||
@ -19,6 +21,7 @@ class MigrationProcessAdapter(
|
|||||||
) : FlexibleAdapter<MigrationProcessItem>(null, controller, true) {
|
) : FlexibleAdapter<MigrationProcessItem>(null, controller, true) {
|
||||||
private val db: DatabaseHelper by injectLazy()
|
private val db: DatabaseHelper by injectLazy()
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
private val preferences: PreferencesHelper by injectLazy()
|
||||||
|
private val coverCache: CoverCache by injectLazy()
|
||||||
|
|
||||||
var items: List<MigrationProcessItem> = emptyList()
|
var items: List<MigrationProcessItem> = emptyList()
|
||||||
|
|
||||||
@ -148,12 +151,18 @@ class MigrationProcessAdapter(
|
|||||||
// Update track
|
// Update track
|
||||||
if (MigrationFlags.hasTracks(flags)) {
|
if (MigrationFlags.hasTracks(flags)) {
|
||||||
val tracks = db.getTracks(prevManga).executeAsBlocking()
|
val tracks = db.getTracks(prevManga).executeAsBlocking()
|
||||||
for (track in tracks) {
|
if (tracks.isNotEmpty()) {
|
||||||
|
tracks.forEach { track ->
|
||||||
track.id = null
|
track.id = null
|
||||||
track.manga_id = manga.id!!
|
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
|
// Update extras
|
||||||
if (MigrationFlags.hasExtra(flags)) {
|
if (MigrationFlags.hasExtra(flags)) {
|
||||||
manga.chapter_flags = prevManga.chapter_flags
|
manga.chapter_flags = prevManga.chapter_flags
|
||||||
|
@ -72,6 +72,14 @@
|
|||||||
android:checked="true"
|
android:checked="true"
|
||||||
android:text="@string/track" />
|
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
|
<CheckBox
|
||||||
android:id="@+id/mig_extra"
|
android:id="@+id/mig_extra"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -617,6 +617,7 @@
|
|||||||
<string name="download_custom">Custom</string>
|
<string name="download_custom">Custom</string>
|
||||||
<string name="download_all">All</string>
|
<string name="download_all">All</string>
|
||||||
<string name="download_unread">Unread</string>
|
<string name="download_unread">Unread</string>
|
||||||
|
<string name="custom_cover">Custom cover</string>
|
||||||
<string name="manga_cover">Cover</string>
|
<string name="manga_cover">Cover</string>
|
||||||
<string name="cover_saved">Cover saved</string>
|
<string name="cover_saved">Cover saved</string>
|
||||||
<string name="error_saving_cover">Error saving cover</string>
|
<string name="error_saving_cover">Error saving cover</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user