|
@@ -29,7 +29,6 @@ import coil.request.ImageRequest
|
|
|
import com.bluelinelabs.conductor.Controller
|
|
|
import com.bluelinelabs.conductor.ControllerChangeHandler
|
|
|
import com.bluelinelabs.conductor.ControllerChangeType
|
|
|
-import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
import com.google.android.material.floatingactionbutton.ExtendedFloatingActionButton
|
|
|
import com.google.android.material.snackbar.Snackbar
|
|
|
import dev.chrisbanes.insetter.applyInsetter
|
|
@@ -114,6 +113,7 @@ class MangaController :
|
|
|
FlexibleAdapter.OnItemClickListener,
|
|
|
FlexibleAdapter.OnItemLongClickListener,
|
|
|
BaseChaptersAdapter.OnChapterClickListener,
|
|
|
+ AddDuplicateMangaDialog.Listener,
|
|
|
ChangeMangaCoverDialog.Listener,
|
|
|
ChangeMangaCategoriesDialog.Listener,
|
|
|
DownloadCustomChaptersDialog.Listener,
|
|
@@ -521,38 +521,18 @@ class MangaController :
|
|
|
} else {
|
|
|
val duplicateManga = presenter.getDuplicateLibraryManga(manga)
|
|
|
if (duplicateManga != null) {
|
|
|
- showAddDuplicateDialog(
|
|
|
- manga,
|
|
|
- duplicateManga,
|
|
|
- )
|
|
|
+ AddDuplicateMangaDialog(this, duplicateManga, manga).showDialog(router)
|
|
|
} else {
|
|
|
addToLibrary(manga)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private fun showAddDuplicateDialog(newManga: Manga, libraryManga: Manga) {
|
|
|
- activity?.let {
|
|
|
- val source = sourceManager.getOrStub(libraryManga.source)
|
|
|
- MaterialAlertDialogBuilder(it).apply {
|
|
|
- setMessage(activity?.getString(R.string.confirm_manga_add_duplicate, source.name))
|
|
|
- setPositiveButton(activity?.getString(R.string.action_add)) { _, _ ->
|
|
|
- addToLibrary(newManga)
|
|
|
- }
|
|
|
- setNegativeButton(activity?.getString(R.string.action_cancel)) { _, _ -> }
|
|
|
- setNeutralButton(activity?.getString(R.string.action_show_manga)) { _, _ ->
|
|
|
- router.pushController(MangaController(libraryManga))
|
|
|
- }
|
|
|
- setCancelable(true)
|
|
|
- }.create().show()
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
fun onTrackingClick() {
|
|
|
trackSheet?.show()
|
|
|
}
|
|
|
|
|
|
- private fun addToLibrary(manga: Manga) {
|
|
|
+ override fun addToLibrary(newManga: Manga) {
|
|
|
val categories = presenter.getCategories()
|
|
|
val defaultCategoryId = preferences.defaultCategory()
|
|
|
val defaultCategory = categories.find { it.id == defaultCategoryId }
|
|
@@ -561,7 +541,7 @@ class MangaController :
|
|
|
// Default category set
|
|
|
defaultCategory != null -> {
|
|
|
toggleFavorite()
|
|
|
- presenter.moveMangaToCategory(manga, defaultCategory)
|
|
|
+ presenter.moveMangaToCategory(newManga, defaultCategory)
|
|
|
activity?.toast(activity?.getString(R.string.manga_added_library))
|
|
|
activity?.invalidateOptionsMenu()
|
|
|
}
|
|
@@ -569,14 +549,14 @@ class MangaController :
|
|
|
// Automatic 'Default' or no categories
|
|
|
defaultCategoryId == 0 || categories.isEmpty() -> {
|
|
|
toggleFavorite()
|
|
|
- presenter.moveMangaToCategory(manga, null)
|
|
|
+ presenter.moveMangaToCategory(newManga, null)
|
|
|
activity?.toast(activity?.getString(R.string.manga_added_library))
|
|
|
activity?.invalidateOptionsMenu()
|
|
|
}
|
|
|
|
|
|
// Choose a category
|
|
|
else -> {
|
|
|
- val ids = presenter.getMangaCategoryIds(manga)
|
|
|
+ val ids = presenter.getMangaCategoryIds(newManga)
|
|
|
val preselected = categories.map {
|
|
|
if (it.id in ids) {
|
|
|
QuadStateTextView.State.CHECKED.ordinal
|
|
@@ -585,7 +565,7 @@ class MangaController :
|
|
|
}
|
|
|
}.toTypedArray()
|
|
|
|
|
|
- showChangeCategoryDialog(manga, categories, preselected)
|
|
|
+ showChangeCategoryDialog(newManga, categories, preselected)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -597,12 +577,12 @@ class MangaController :
|
|
|
.forEach { service ->
|
|
|
launchIO {
|
|
|
try {
|
|
|
- service.match(manga)?.let { track ->
|
|
|
+ service.match(newManga)?.let { track ->
|
|
|
presenter.registerTracking(track, service as TrackService)
|
|
|
}
|
|
|
} catch (e: Exception) {
|
|
|
logcat(LogPriority.WARN, e) {
|
|
|
- "Could not match manga: ${manga.title} with service $service"
|
|
|
+ "Could not match manga: ${newManga.title} with service $service"
|
|
|
}
|
|
|
}
|
|
|
}
|