Move edit cover to manga info
(cherry picked from commit 9f7fda0bc5c48b1a71383a4525bfd5748f80cfaa) # Conflicts: # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/library/LibraryPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaController.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChaptersPresenter.kt # app/src/main/java/eu/kanade/tachiyomi/ui/manga/info/MangaInfoHeaderAdapter.kt # app/src/main/res/menu/chapters.xml
This commit is contained in:
parent
7046d304e0
commit
7fb197a752
@ -1,7 +1,5 @@
|
||||
package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.content.res.Configuration
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
@ -42,7 +40,6 @@ import eu.kanade.tachiyomi.ui.main.MainActivity
|
||||
import eu.kanade.tachiyomi.ui.main.offsetAppbarHeight
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaAllInOneController
|
||||
import eu.kanade.tachiyomi.ui.manga.MangaController
|
||||
import eu.kanade.tachiyomi.util.hasCustomCover
|
||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||
import eu.kanade.tachiyomi.util.system.toast
|
||||
import eu.kanade.tachiyomi.util.view.gone
|
||||
@ -62,7 +59,6 @@ import reactivecircus.flowbinding.appcompat.queryTextChanges
|
||||
import reactivecircus.flowbinding.viewpager.pageSelections
|
||||
import rx.Subscription
|
||||
import rx.android.schedulers.AndroidSchedulers
|
||||
import timber.log.Timber
|
||||
import uy.kohesive.injekt.Injekt
|
||||
import uy.kohesive.injekt.api.get
|
||||
|
||||
@ -74,7 +70,6 @@ class LibraryController(
|
||||
RootController,
|
||||
TabbedController,
|
||||
ActionMode.Callback,
|
||||
ChangeMangaCoverDialog.Listener,
|
||||
ChangeMangaCategoriesDialog.Listener,
|
||||
DeleteLibraryMangasDialog.Listener {
|
||||
|
||||
@ -98,8 +93,6 @@ class LibraryController(
|
||||
*/
|
||||
val selectedMangas = mutableSetOf<Manga>()
|
||||
|
||||
private var selectedCoverManga: Manga? = null
|
||||
|
||||
/**
|
||||
* Relay to notify the UI of selection updates.
|
||||
*/
|
||||
@ -536,7 +529,6 @@ class LibraryController(
|
||||
} else {
|
||||
mode.title = count.toString()
|
||||
|
||||
binding.actionToolbar.findItem(R.id.action_edit_cover)?.isVisible = count == 1
|
||||
binding.actionToolbar.findItem(R.id.action_download_unread)?.isVisible = selectedMangas.any { it.source != LocalSource.ID }
|
||||
}
|
||||
return false
|
||||
@ -548,7 +540,6 @@ class LibraryController(
|
||||
|
||||
private fun onActionItemClicked(item: MenuItem): Boolean {
|
||||
when (item.itemId) {
|
||||
R.id.action_edit_cover -> handleChangeCover()
|
||||
R.id.action_move_to_category -> showChangeMangaCategoriesDialog()
|
||||
R.id.action_download_unread -> downloadUnreadChapters()
|
||||
R.id.action_delete -> showDeleteMangaDialog()
|
||||
@ -621,23 +612,6 @@ class LibraryController(
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleChangeCover() {
|
||||
val manga = selectedMangas.firstOrNull() ?: return
|
||||
|
||||
if (manga.hasCustomCover(coverCache)) {
|
||||
showEditCoverDialog(manga)
|
||||
} else {
|
||||
openMangaCoverPicker(manga)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Edit custom cover for selected manga.
|
||||
*/
|
||||
private fun showEditCoverDialog(manga: Manga) {
|
||||
ChangeMangaCoverDialog(this, manga).showDialog(router)
|
||||
}
|
||||
|
||||
/**
|
||||
* Move the selected manga to a list of categories.
|
||||
*/
|
||||
@ -667,31 +641,6 @@ class LibraryController(
|
||||
DeleteLibraryMangasDialog(this, selectedMangas.toList()).showDialog(router)
|
||||
}
|
||||
|
||||
override fun openMangaCoverPicker(manga: Manga) {
|
||||
selectedCoverManga = manga
|
||||
|
||||
if (manga.favorite) {
|
||||
val intent = Intent(Intent.ACTION_GET_CONTENT)
|
||||
intent.type = "image/*"
|
||||
startActivityForResult(
|
||||
Intent.createChooser(
|
||||
intent,
|
||||
resources?.getString(R.string.file_select_cover)
|
||||
),
|
||||
REQUEST_IMAGE_OPEN
|
||||
)
|
||||
} else {
|
||||
activity?.toast(R.string.notification_first_add_to_library)
|
||||
}
|
||||
|
||||
destroyActionModeIfNeeded()
|
||||
}
|
||||
|
||||
override fun deleteMangaCover(manga: Manga) {
|
||||
presenter.deleteCustomCover(manga)
|
||||
destroyActionModeIfNeeded()
|
||||
}
|
||||
|
||||
override fun updateCategoriesForMangas(mangas: List<Manga>, categories: List<Category>) {
|
||||
presenter.moveMangasToCategories(categories, mangas)
|
||||
destroyActionModeIfNeeded()
|
||||
@ -841,32 +790,4 @@ class LibraryController(
|
||||
oldSyncStatus = status
|
||||
}
|
||||
// <-- EXH
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (requestCode == REQUEST_IMAGE_OPEN) {
|
||||
val dataUri = data?.data
|
||||
if (dataUri == null || resultCode != Activity.RESULT_OK) return
|
||||
val activity = activity ?: return
|
||||
val manga = selectedCoverManga ?: return
|
||||
|
||||
selectedCoverManga = null
|
||||
presenter.editCover(manga, activity, dataUri)
|
||||
}
|
||||
}
|
||||
|
||||
fun onSetCoverSuccess() {
|
||||
activity?.toast(R.string.cover_updated)
|
||||
}
|
||||
|
||||
fun onSetCoverError(error: Throwable) {
|
||||
activity?.toast(R.string.notification_cover_update_failed)
|
||||
Timber.e(error)
|
||||
}
|
||||
|
||||
private companion object {
|
||||
/**
|
||||
* Key to change the cover of a manga in [onActivityResult].
|
||||
*/
|
||||
const val REQUEST_IMAGE_OPEN = 101
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,5 @@
|
||||
package eu.kanade.tachiyomi.ui.library
|
||||
|
||||
import android.content.Context
|
||||
import android.net.Uri
|
||||
import android.os.Bundle
|
||||
import com.jakewharton.rxrelay.BehaviorRelay
|
||||
import eu.kanade.tachiyomi.data.cache.CoverCache
|
||||
@ -11,7 +9,6 @@ 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.preference.PreferencesHelper
|
||||
import eu.kanade.tachiyomi.source.LocalSource
|
||||
import eu.kanade.tachiyomi.source.Source
|
||||
import eu.kanade.tachiyomi.source.SourceManager
|
||||
import eu.kanade.tachiyomi.source.model.Filter.TriState.Companion.STATE_EXCLUDE
|
||||
@ -28,7 +25,6 @@ import eu.kanade.tachiyomi.util.lang.combineLatest
|
||||
import eu.kanade.tachiyomi.util.lang.isNullOrUnsubscribed
|
||||
import eu.kanade.tachiyomi.util.lang.launchIO
|
||||
import eu.kanade.tachiyomi.util.removeCovers
|
||||
import eu.kanade.tachiyomi.util.updateCoverLastModified
|
||||
import exh.favorites.FavoritesSyncHelper
|
||||
import exh.util.isLewd
|
||||
import java.util.Collections
|
||||
@ -497,46 +493,4 @@ class LibraryPresenter(
|
||||
}
|
||||
}
|
||||
// SY <--
|
||||
|
||||
/**
|
||||
* Update cover with local file.
|
||||
*
|
||||
* @param manga the manga edited.
|
||||
* @param context Context.
|
||||
* @param data uri of the cover resource.
|
||||
*/
|
||||
fun editCover(manga: Manga, context: Context, data: Uri) {
|
||||
Observable
|
||||
.fromCallable {
|
||||
context.contentResolver.openInputStream(data)?.use {
|
||||
if (manga.isLocal()) {
|
||||
LocalSource.updateCover(context, manga, it)
|
||||
manga.updateCoverLastModified(db)
|
||||
} else if (manga.favorite) {
|
||||
coverCache.setCustomCoverToCache(manga, it)
|
||||
manga.updateCoverLastModified(db)
|
||||
}
|
||||
}
|
||||
}
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribeFirst(
|
||||
{ view, _ -> view.onSetCoverSuccess() },
|
||||
{ view, e -> view.onSetCoverError(e) }
|
||||
)
|
||||
}
|
||||
|
||||
fun deleteCustomCover(manga: Manga) {
|
||||
Observable
|
||||
.fromCallable {
|
||||
coverCache.deleteCustomCover(manga)
|
||||
manga.updateCoverLastModified(db)
|
||||
}
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribeFirst(
|
||||
{ view, _ -> view.onSetCoverSuccess() },
|
||||
{ view, e -> view.onSetCoverError(e) }
|
||||
)
|
||||
}
|
||||
}
|
||||
|
@ -2,13 +2,6 @@
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/action_edit_cover"
|
||||
android:icon="@drawable/ic_edit_24dp"
|
||||
android:title="@string/action_edit_cover"
|
||||
app:iconTint="?attr/colorOnPrimary"
|
||||
app:showAsAction="always" />
|
||||
|
||||
<item
|
||||
android:id="@+id/action_move_to_category"
|
||||
android:icon="@drawable/ic_label_24dp"
|
||||
|
Loading…
x
Reference in New Issue
Block a user