Backing up custom data for manga
Using 800s from J2k in BackupManga for this(except for status) (cherry picked from commit c21b91bc026213993a67089ef4bc76c68ade4445) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/FullBackupRestore.kt # app/src/main/java/eu/kanade/tachiyomi/data/backup/full/models/BackupManga.kt # app/src/main/java/eu/kanade/tachiyomi/data/library/CustomMangaManager.kt # app/src/main/java/eu/kanade/tachiyomi/ui/setting/SettingsBackupController.kt # app/src/main/res/values/strings.xml
This commit is contained in:
parent
7be8062a2e
commit
dc760c0596
@ -6,6 +6,7 @@ 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.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.toMangaInfo
|
import eu.kanade.tachiyomi.data.database.models.toMangaInfo
|
||||||
|
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
|
||||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
@ -23,6 +24,10 @@ abstract class AbstractBackupManager(protected val context: Context) {
|
|||||||
internal val trackManager: TrackManager by injectLazy()
|
internal val trackManager: TrackManager by injectLazy()
|
||||||
protected val preferences: PreferencesHelper by injectLazy()
|
protected val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
|
// SY -->
|
||||||
|
protected val customMangaManager: CustomMangaManager by injectLazy()
|
||||||
|
// SY <--
|
||||||
|
|
||||||
abstract fun createBackup(uri: Uri, flags: Int, isJob: Boolean): String?
|
abstract fun createBackup(uri: Uri, flags: Int, isJob: Boolean): String?
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -7,6 +7,7 @@ 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.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.Track
|
import eu.kanade.tachiyomi.data.database.models.Track
|
||||||
|
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||||
import eu.kanade.tachiyomi.data.track.TrackManager
|
import eu.kanade.tachiyomi.data.track.TrackManager
|
||||||
import eu.kanade.tachiyomi.source.Source
|
import eu.kanade.tachiyomi.source.Source
|
||||||
import eu.kanade.tachiyomi.util.chapter.NoChaptersException
|
import eu.kanade.tachiyomi.util.chapter.NoChaptersException
|
||||||
@ -24,6 +25,10 @@ abstract class AbstractBackupRestore<T : AbstractBackupManager>(protected val co
|
|||||||
protected val db: DatabaseHelper by injectLazy()
|
protected val db: DatabaseHelper by injectLazy()
|
||||||
protected val trackManager: TrackManager by injectLazy()
|
protected val trackManager: TrackManager by injectLazy()
|
||||||
|
|
||||||
|
// SY -->
|
||||||
|
protected val customMangaManager: CustomMangaManager by injectLazy()
|
||||||
|
// SY <--
|
||||||
|
|
||||||
var job: Job? = null
|
var job: Job? = null
|
||||||
|
|
||||||
protected lateinit var backupManager: T
|
protected lateinit var backupManager: T
|
||||||
|
@ -30,7 +30,12 @@ class BackupCreateService : Service() {
|
|||||||
internal const val BACKUP_HISTORY_MASK = 0x4
|
internal const val BACKUP_HISTORY_MASK = 0x4
|
||||||
internal const val BACKUP_TRACK = 0x8
|
internal const val BACKUP_TRACK = 0x8
|
||||||
internal const val BACKUP_TRACK_MASK = 0x8
|
internal const val BACKUP_TRACK_MASK = 0x8
|
||||||
internal const val BACKUP_ALL = 0xF
|
|
||||||
|
// SY -->
|
||||||
|
internal const val BACKUP_CUSTOM_INFO = 0x10
|
||||||
|
internal const val BACKUP_CUSTOM_INFO_MASK = 0x10
|
||||||
|
internal const val BACKUP_ALL = 0x1F
|
||||||
|
// SY <--
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the status of the service.
|
* Returns the status of the service.
|
||||||
|
@ -8,6 +8,8 @@ import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CATE
|
|||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CATEGORY_MASK
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CATEGORY_MASK
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CHAPTER
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CHAPTER
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CHAPTER_MASK
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CHAPTER_MASK
|
||||||
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CUSTOM_INFO
|
||||||
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_CUSTOM_INFO_MASK
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_HISTORY
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_HISTORY
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_HISTORY_MASK
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_HISTORY_MASK
|
||||||
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_TRACK
|
import eu.kanade.tachiyomi.data.backup.BackupCreateService.Companion.BACKUP_TRACK
|
||||||
@ -161,7 +163,7 @@ class FullBackupManager(context: Context) : AbstractBackupManager(context) {
|
|||||||
*/
|
*/
|
||||||
private fun backupMangaObject(manga: Manga, options: Int): BackupManga {
|
private fun backupMangaObject(manga: Manga, options: Int): BackupManga {
|
||||||
// Entry for this manga
|
// Entry for this manga
|
||||||
val mangaObject = BackupManga.copyFrom(manga)
|
val mangaObject = BackupManga.copyFrom(manga /* SY --> */, if (options and BACKUP_CUSTOM_INFO_MASK == BACKUP_CUSTOM_INFO) customMangaManager else null /* SY <-- */)
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
if (manga.source == MERGED_SOURCE_ID) {
|
if (manga.source == MERGED_SOURCE_ID) {
|
||||||
|
@ -15,6 +15,7 @@ import eu.kanade.tachiyomi.data.backup.full.models.BackupSerializer
|
|||||||
import eu.kanade.tachiyomi.data.database.models.Chapter
|
import eu.kanade.tachiyomi.data.database.models.Chapter
|
||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.Track
|
import eu.kanade.tachiyomi.data.database.models.Track
|
||||||
|
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||||
import exh.EXHMigrations
|
import exh.EXHMigrations
|
||||||
import exh.source.MERGED_SOURCE_ID
|
import exh.source.MERGED_SOURCE_ID
|
||||||
import okio.buffer
|
import okio.buffer
|
||||||
@ -90,6 +91,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
// SY -->
|
// SY -->
|
||||||
val mergedMangaReferences = backupManga.mergedMangaReferences
|
val mergedMangaReferences = backupManga.mergedMangaReferences
|
||||||
val flatMetadata = backupManga.flatMetadata
|
val flatMetadata = backupManga.flatMetadata
|
||||||
|
val customManga = backupManga.getCustomMangaInfo()
|
||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
// SY -->
|
// SY -->
|
||||||
@ -97,7 +99,7 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
// SY <--
|
// SY <--
|
||||||
|
|
||||||
try {
|
try {
|
||||||
restoreMangaData(manga, chapters, categories, history, tracks, backupCategories, mergedMangaReferences, flatMetadata)
|
restoreMangaData(manga, chapters, categories, history, tracks, backupCategories/* SY --> */, mergedMangaReferences, flatMetadata, customManga/* SY <-- */)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
val sourceName = sourceMapping[manga.source] ?: manga.source.toString()
|
val sourceName = sourceMapping[manga.source] ?: manga.source.toString()
|
||||||
errors.add(Date() to "${manga.title} [$sourceName]: ${e.message}")
|
errors.add(Date() to "${manga.title} [$sourceName]: ${e.message}")
|
||||||
@ -123,20 +125,23 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
history: List<BackupHistory>,
|
history: List<BackupHistory>,
|
||||||
tracks: List<Track>,
|
tracks: List<Track>,
|
||||||
backupCategories: List<BackupCategory>,
|
backupCategories: List<BackupCategory>,
|
||||||
|
// SY -->
|
||||||
mergedMangaReferences: List<BackupMergedMangaReference>,
|
mergedMangaReferences: List<BackupMergedMangaReference>,
|
||||||
flatMetadata: BackupFlatMetadata?
|
flatMetadata: BackupFlatMetadata?,
|
||||||
|
customManga: CustomMangaManager.MangaJson?,
|
||||||
|
// SY -->
|
||||||
) {
|
) {
|
||||||
db.inTransaction {
|
db.inTransaction {
|
||||||
val dbManga = backupManager.getMangaFromDatabase(manga)
|
val dbManga = backupManager.getMangaFromDatabase(manga)
|
||||||
if (dbManga == null) {
|
if (dbManga == null) {
|
||||||
// Manga not in database
|
// Manga not in database
|
||||||
restoreMangaFetch(manga, chapters, categories, history, tracks, backupCategories, mergedMangaReferences, flatMetadata)
|
restoreMangaFetch(manga, chapters, categories, history, tracks, backupCategories/* SY --> */, mergedMangaReferences, flatMetadata, customManga/* SY <-- */)
|
||||||
} else {
|
} else {
|
||||||
// Manga in database
|
// Manga in database
|
||||||
// Copy information from manga already in database
|
// Copy information from manga already in database
|
||||||
backupManager.restoreMangaNoFetch(manga, dbManga)
|
backupManager.restoreMangaNoFetch(manga, dbManga)
|
||||||
// Fetch rest of manga information
|
// Fetch rest of manga information
|
||||||
restoreMangaNoFetch(manga, chapters, categories, history, tracks, backupCategories, mergedMangaReferences, flatMetadata)
|
restoreMangaNoFetch(manga, chapters, categories, history, tracks, backupCategories/* SY --> */, mergedMangaReferences, flatMetadata, customManga/* SY <-- */)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -155,16 +160,18 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
history: List<BackupHistory>,
|
history: List<BackupHistory>,
|
||||||
tracks: List<Track>,
|
tracks: List<Track>,
|
||||||
backupCategories: List<BackupCategory>,
|
backupCategories: List<BackupCategory>,
|
||||||
|
// SY -->
|
||||||
mergedMangaReferences: List<BackupMergedMangaReference>,
|
mergedMangaReferences: List<BackupMergedMangaReference>,
|
||||||
flatMetadata: BackupFlatMetadata?
|
flatMetadata: BackupFlatMetadata?,
|
||||||
|
customManga: CustomMangaManager.MangaJson?,
|
||||||
|
// SY <--
|
||||||
) {
|
) {
|
||||||
try {
|
try {
|
||||||
val fetchedManga = backupManager.restoreManga(manga)
|
val fetchedManga = backupManager.restoreManga(manga)
|
||||||
fetchedManga.id ?: return
|
fetchedManga.id ?: return
|
||||||
|
|
||||||
backupManager.restoreChaptersForManga(fetchedManga, chapters)
|
backupManager.restoreChaptersForManga(fetchedManga, chapters)
|
||||||
|
|
||||||
restoreExtraForManga(fetchedManga, categories, history, tracks, backupCategories, mergedMangaReferences, flatMetadata)
|
restoreExtraForManga(fetchedManga, categories, history, tracks, backupCategories /* SY --> */, mergedMangaReferences, flatMetadata, customManga/* SY <-- */)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
errors.add(Date() to "${manga.title} - ${e.message}")
|
errors.add(Date() to "${manga.title} - ${e.message}")
|
||||||
}
|
}
|
||||||
@ -177,15 +184,29 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
history: List<BackupHistory>,
|
history: List<BackupHistory>,
|
||||||
tracks: List<Track>,
|
tracks: List<Track>,
|
||||||
backupCategories: List<BackupCategory>,
|
backupCategories: List<BackupCategory>,
|
||||||
|
// SY -->
|
||||||
mergedMangaReferences: List<BackupMergedMangaReference>,
|
mergedMangaReferences: List<BackupMergedMangaReference>,
|
||||||
flatMetadata: BackupFlatMetadata?
|
flatMetadata: BackupFlatMetadata?,
|
||||||
|
customManga: CustomMangaManager.MangaJson?,
|
||||||
|
// SY <--
|
||||||
) {
|
) {
|
||||||
backupManager.restoreChaptersForManga(backupManga, chapters)
|
backupManager.restoreChaptersForManga(backupManga, chapters)
|
||||||
|
|
||||||
restoreExtraForManga(backupManga, categories, history, tracks, backupCategories, mergedMangaReferences, flatMetadata)
|
restoreExtraForManga(backupManga, categories, history, tracks, backupCategories/* SY --> */, mergedMangaReferences, flatMetadata, customManga/* SY <-- */)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun restoreExtraForManga(manga: Manga, categories: List<Int>, history: List<BackupHistory>, tracks: List<Track>, backupCategories: List<BackupCategory>, mergedMangaReferences: List<BackupMergedMangaReference>, flatMetadata: BackupFlatMetadata?) {
|
private fun restoreExtraForManga(
|
||||||
|
manga: Manga,
|
||||||
|
categories: List<Int>,
|
||||||
|
history: List<BackupHistory>,
|
||||||
|
tracks: List<Track>,
|
||||||
|
backupCategories: List<BackupCategory>,
|
||||||
|
// SY -->
|
||||||
|
mergedMangaReferences: List<BackupMergedMangaReference>,
|
||||||
|
flatMetadata: BackupFlatMetadata?,
|
||||||
|
customManga: CustomMangaManager.MangaJson?,
|
||||||
|
// SY <--
|
||||||
|
) {
|
||||||
// Restore categories
|
// Restore categories
|
||||||
backupManager.restoreCategoriesForManga(manga, categories, backupCategories)
|
backupManager.restoreCategoriesForManga(manga, categories, backupCategories)
|
||||||
|
|
||||||
@ -201,6 +222,10 @@ class FullBackupRestore(context: Context, notifier: BackupNotifier) : AbstractBa
|
|||||||
|
|
||||||
// Restore flat metadata for metadata sources
|
// Restore flat metadata for metadata sources
|
||||||
flatMetadata?.let { backupManager.restoreFlatMetadata(manga, it) }
|
flatMetadata?.let { backupManager.restoreFlatMetadata(manga, it) }
|
||||||
|
|
||||||
|
// Restore Custom Info
|
||||||
|
customManga?.id = manga.id!!
|
||||||
|
customManga?.let { customMangaManager.saveMangaInfo(it) }
|
||||||
// SY <--
|
// SY <--
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import eu.kanade.tachiyomi.data.database.models.ChapterImpl
|
|||||||
import eu.kanade.tachiyomi.data.database.models.Manga
|
import eu.kanade.tachiyomi.data.database.models.Manga
|
||||||
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
import eu.kanade.tachiyomi.data.database.models.MangaImpl
|
||||||
import eu.kanade.tachiyomi.data.database.models.TrackImpl
|
import eu.kanade.tachiyomi.data.database.models.TrackImpl
|
||||||
|
import eu.kanade.tachiyomi.data.library.CustomMangaManager
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
import kotlinx.serialization.protobuf.ProtoNumber
|
import kotlinx.serialization.protobuf.ProtoNumber
|
||||||
|
|
||||||
@ -36,7 +37,15 @@ data class BackupManga(
|
|||||||
@ProtoNumber(102) var history: List<BackupHistory> = emptyList(),
|
@ProtoNumber(102) var history: List<BackupHistory> = emptyList(),
|
||||||
// SY specific values
|
// SY specific values
|
||||||
@ProtoNumber(600) var mergedMangaReferences: List<BackupMergedMangaReference> = emptyList(),
|
@ProtoNumber(600) var mergedMangaReferences: List<BackupMergedMangaReference> = emptyList(),
|
||||||
@ProtoNumber(601) var flatMetadata: BackupFlatMetadata? = null
|
@ProtoNumber(601) var flatMetadata: BackupFlatMetadata? = null,
|
||||||
|
@ProtoNumber(602) var customStatus: Int = 0,
|
||||||
|
|
||||||
|
// J2K specific values
|
||||||
|
@ProtoNumber(800) var customTitle: String? = null,
|
||||||
|
@ProtoNumber(801) var customArtist: String? = null,
|
||||||
|
@ProtoNumber(802) var customAuthor: String? = null,
|
||||||
|
@ProtoNumber(803) var customDescription: String? = null,
|
||||||
|
@ProtoNumber(803) var customGenre: List<String>? = null
|
||||||
) {
|
) {
|
||||||
fun getMangaImpl(): MangaImpl {
|
fun getMangaImpl(): MangaImpl {
|
||||||
return MangaImpl().apply {
|
return MangaImpl().apply {
|
||||||
@ -62,6 +71,29 @@ data class BackupManga(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SY -->
|
||||||
|
fun getCustomMangaInfo(): CustomMangaManager.MangaJson? {
|
||||||
|
if (customTitle != null ||
|
||||||
|
customArtist != null ||
|
||||||
|
customAuthor != null ||
|
||||||
|
customDescription != null ||
|
||||||
|
customGenre != null ||
|
||||||
|
customStatus != 0
|
||||||
|
) {
|
||||||
|
return CustomMangaManager.MangaJson(
|
||||||
|
id = 0L,
|
||||||
|
title = customTitle,
|
||||||
|
author = customAuthor,
|
||||||
|
artist = customArtist,
|
||||||
|
description = customDescription,
|
||||||
|
genre = customGenre,
|
||||||
|
status = customStatus.takeUnless { it == 0 }
|
||||||
|
)
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
// SY <--
|
||||||
|
|
||||||
fun getTrackingImpl(): List<TrackImpl> {
|
fun getTrackingImpl(): List<TrackImpl> {
|
||||||
return tracking.map {
|
return tracking.map {
|
||||||
it.getTrackingImpl()
|
it.getTrackingImpl()
|
||||||
@ -69,22 +101,35 @@ data class BackupManga(
|
|||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun copyFrom(manga: Manga): BackupManga {
|
fun copyFrom(manga: Manga /* SY --> */, customMangaManager: CustomMangaManager?/* SY <-- */): BackupManga {
|
||||||
return BackupManga(
|
return BackupManga(
|
||||||
url = manga.url,
|
url = manga.url,
|
||||||
title = manga.title,
|
// SY -->
|
||||||
artist = manga.artist,
|
title = manga.originalTitle,
|
||||||
author = manga.author,
|
artist = manga.originalArtist,
|
||||||
description = manga.description,
|
author = manga.originalAuthor,
|
||||||
genre = manga.getGenres() ?: emptyList(),
|
description = manga.originalDescription,
|
||||||
status = manga.status,
|
genre = manga.getOriginalGenres() ?: emptyList(),
|
||||||
|
status = manga.originalStatus,
|
||||||
|
// SY <--
|
||||||
thumbnailUrl = manga.thumbnail_url,
|
thumbnailUrl = manga.thumbnail_url,
|
||||||
favorite = manga.favorite,
|
favorite = manga.favorite,
|
||||||
source = manga.source,
|
source = manga.source,
|
||||||
dateAdded = manga.date_added,
|
dateAdded = manga.date_added,
|
||||||
viewer = manga.viewer,
|
viewer = manga.viewer,
|
||||||
chapterFlags = manga.chapter_flags
|
chapterFlags = manga.chapter_flags
|
||||||
)
|
// SY -->
|
||||||
|
).also { backupManga ->
|
||||||
|
customMangaManager?.getManga(manga)?.let {
|
||||||
|
backupManga.customTitle = it.title
|
||||||
|
backupManga.customArtist = it.artist
|
||||||
|
backupManga.customAuthor = it.author
|
||||||
|
backupManga.customDescription = it.description
|
||||||
|
backupManga.customGenre = it.getGenres()
|
||||||
|
backupManga.customStatus = it.status
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// SY <--
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ class CustomMangaManager(val context: Context) {
|
|||||||
|
|
||||||
@Serializable
|
@Serializable
|
||||||
data class MangaJson(
|
data class MangaJson(
|
||||||
val id: Long? = null,
|
var id: Long? = null,
|
||||||
val title: String? = null,
|
val title: String? = null,
|
||||||
val author: String? = null,
|
val author: String? = null,
|
||||||
val artist: String? = null,
|
val artist: String? = null,
|
||||||
|
@ -276,7 +276,10 @@ class SettingsBackupController : SettingsController() {
|
|||||||
R.string.categories,
|
R.string.categories,
|
||||||
R.string.chapters,
|
R.string.chapters,
|
||||||
R.string.track,
|
R.string.track,
|
||||||
R.string.history
|
R.string.history,
|
||||||
|
// SY -->
|
||||||
|
R.string.custom_manga_info
|
||||||
|
// SY <--
|
||||||
)
|
)
|
||||||
.map { activity.getString(it) }
|
.map { activity.getString(it) }
|
||||||
|
|
||||||
@ -286,7 +289,7 @@ class SettingsBackupController : SettingsController() {
|
|||||||
.listItemsMultiChoice(
|
.listItemsMultiChoice(
|
||||||
items = options,
|
items = options,
|
||||||
disabledIndices = intArrayOf(0),
|
disabledIndices = intArrayOf(0),
|
||||||
initialSelection = intArrayOf(0, 1, 2, 3, 4)
|
initialSelection = intArrayOf(0, 1, 2, 3, 4 /* SY --> */, 5 /* SY <-- */)
|
||||||
) { _, positions, _ ->
|
) { _, positions, _ ->
|
||||||
var flags = 0
|
var flags = 0
|
||||||
for (i in 1 until positions.size) {
|
for (i in 1 until positions.size) {
|
||||||
@ -295,6 +298,9 @@ class SettingsBackupController : SettingsController() {
|
|||||||
2 -> flags = flags or BackupCreateService.BACKUP_CHAPTER
|
2 -> flags = flags or BackupCreateService.BACKUP_CHAPTER
|
||||||
3 -> flags = flags or BackupCreateService.BACKUP_TRACK
|
3 -> flags = flags or BackupCreateService.BACKUP_TRACK
|
||||||
4 -> flags = flags or BackupCreateService.BACKUP_HISTORY
|
4 -> flags = flags or BackupCreateService.BACKUP_HISTORY
|
||||||
|
// SY -->
|
||||||
|
5 -> flags = flags or BackupCreateService.BACKUP_CUSTOM_INFO
|
||||||
|
// SY <--
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,6 +192,9 @@
|
|||||||
<string name="pref_local_source_hidden_folders">Local source hidden folders</string>
|
<string name="pref_local_source_hidden_folders">Local source hidden folders</string>
|
||||||
<string name="pref_local_source_hidden_folders_summery">Allow local source to read hidden folders</string>
|
<string name="pref_local_source_hidden_folders_summery">Allow local source to read hidden folders</string>
|
||||||
|
|
||||||
|
<!-- Backup settings -->
|
||||||
|
<string name="custom_manga_info">Custom manga info</string>
|
||||||
|
|
||||||
<!-- Download settings -->
|
<!-- Download settings -->
|
||||||
<string name="save_chapter_as_cbz">Save Chapters as CBZ</string>
|
<string name="save_chapter_as_cbz">Save Chapters as CBZ</string>
|
||||||
<string name="save_chapter_as_cbz_level">CBZ Compression level</string>
|
<string name="save_chapter_as_cbz_level">CBZ Compression level</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user