Add quick clean E-Hentai/nHentai titles, select them in your library and you can quick clean them

This commit is contained in:
Jobobby04 2020-08-05 18:23:29 -04:00
parent 594a02fa69
commit 44c9df8c9b
4 changed files with 60 additions and 2 deletions

View File

@ -41,6 +41,9 @@ import eu.kanade.tachiyomi.ui.main.offsetAppbarHeight
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.system.toast
import exh.EH_SOURCE_ID
import exh.EXH_SOURCE_ID
import exh.NHENTAI_SOURCE_ID
import exh.favorites.FavoritesIntroDialog
import exh.favorites.FavoritesSyncStatus
import exh.ui.LoaderManager
@ -522,6 +525,10 @@ class LibraryController(
mode.title = count.toString()
binding.actionToolbar.findItem(R.id.action_download_unread)?.isVisible = selectedMangas.any { it.source != LocalSource.ID }
// SY -->
binding.actionToolbar.findItem(R.id.action_clean)?.isVisible = selectedMangas.any { it.source == EH_SOURCE_ID || it.source == EXH_SOURCE_ID }
// SY <--
}
return false
}
@ -540,9 +547,11 @@ class LibraryController(
// SY -->
R.id.action_migrate -> {
val skipPre = preferences.skipPreMigration().get()
PreMigrationController.navigateToMigration(skipPre, router, selectedMangas.mapNotNull { it.id })
presenter.onOpenManga()
destroyActionModeIfNeeded()
PreMigrationController.navigateToMigration(skipPre, router, selectedMangas.mapNotNull { it.id })
}
R.id.action_clean -> cleanTitles()
// SY <--
else -> return false
}
@ -627,6 +636,14 @@ class LibraryController(
DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
}
// SY -->
private fun cleanTitles() {
val mangas = selectedMangas.filter { it.source == EH_SOURCE_ID || it.source == EXH_SOURCE_ID || it.source == NHENTAI_SOURCE_ID }.toList()
presenter.cleanTitles(mangas)
destroyActionModeIfNeeded()
}
// SY <--
override fun updateCategoriesForMangas(mangas: List<Manga>, categories: List<Category>) {
presenter.moveMangasToCategories(categories, mangas)
destroyActionModeIfNeeded()

View File

@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.database.models.MangaCategory
import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.library.CustomMangaManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.source.SourceManager
import eu.kanade.tachiyomi.source.model.Filter.TriState.Companion.STATE_EXCLUDE
@ -25,6 +26,7 @@ import exh.EH_SOURCE_ID
import exh.EXH_SOURCE_ID
import exh.favorites.FavoritesSyncHelper
import exh.util.isLewd
import exh.util.nullIfBlank
import java.util.Collections
import java.util.Comparator
import rx.Observable
@ -52,7 +54,10 @@ class LibraryPresenter(
private val preferences: PreferencesHelper = Injekt.get(),
private val coverCache: CoverCache = Injekt.get(),
private val sourceManager: SourceManager = Injekt.get(),
private val downloadManager: DownloadManager = Injekt.get()
private val downloadManager: DownloadManager = Injekt.get(),
// SY -->
private val customMangaManager: CustomMangaManager = Injekt.get()
// SY <--
) : BasePresenter<LibraryController>() {
private val context = preferences.context
@ -366,6 +371,34 @@ class LibraryPresenter(
}
}
// SY -->
fun cleanTitles(mangas: List<Manga>) {
mangas.forEach { manga ->
val editedTitle = manga.title.replace("\\[.*?]".toRegex(), "").trim().replace("\\(.*?\\)".toRegex(), "").trim().replace("\\{.*?\\}".toRegex(), "").trim().let {
if (it.contains("|")) {
it.replace(".*\\|".toRegex(), "").trim()
} else {
it
}
}
if (manga.title == editedTitle) return@forEach
val mangaJson = manga.id?.let {
CustomMangaManager.MangaJson(
it,
editedTitle.nullIfBlank(),
(if (manga.author != manga.originalAuthor) manga.author else null),
(if (manga.artist != manga.originalArtist) manga.artist else null),
(if (manga.description != manga.originalDescription) manga.description else null),
(if (manga.genre != manga.originalGenre) manga.getGenres()?.toTypedArray() else null)
)
}
mangaJson?.let {
customMangaManager.saveMangaInfo(it)
}
}
}
// SY <--
/**
* Remove the selected manga from the library.
*

View File

@ -23,6 +23,13 @@
app:iconTint="?attr/colorOnPrimary"
app:showAsAction="always" />
<item
android:id="@+id/action_clean"
android:icon="@drawable/baseline_swap_calls_24"
android:title="@string/clean_titles"
app:iconTint="?attr/colorOnPrimary"
app:showAsAction="ifRoom" />
<item
android:id="@+id/action_select_inverse"
android:icon="@drawable/ic_flip_to_back_24dp"

View File

@ -13,6 +13,7 @@
<string name="action_search_manually">Search manually</string>
<string name="action_migrate_now">Migrate now</string>
<string name="action_copy_now">Copy now</string>
<string name="clean_titles">Clean titles</string>
<!-- Manga Type -->
<string name="manhwa">Manhwa</string>