mirror of
				https://github.com/mihonapp/mihon.git
				synced 2025-11-04 16:18:55 +01:00 
			
		
		
		
	Add library manga class
This commit is contained in:
		@@ -3,6 +3,7 @@ package eu.kanade.tachiyomi.ui.library
 | 
			
		||||
import android.view.View
 | 
			
		||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
 | 
			
		||||
import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.glide.GlideApp
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
@@ -34,7 +35,7 @@ class LibraryGridHolder(
 | 
			
		||||
     *
 | 
			
		||||
     * @param manga the manga to bind.
 | 
			
		||||
     */
 | 
			
		||||
    override fun onSetValues(manga: Manga) {
 | 
			
		||||
    override fun onSetValues(manga: LibraryManga) {
 | 
			
		||||
        // Update the title of the manga.
 | 
			
		||||
        view.title.text = manga.title
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.ui.library
 | 
			
		||||
import android.view.View
 | 
			
		||||
import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.davidea.viewholders.FlexibleViewHolder
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Generic class used to hold the displayed data of a manga in the library.
 | 
			
		||||
@@ -23,6 +23,6 @@ abstract class LibraryHolder(
 | 
			
		||||
     *
 | 
			
		||||
     * @param manga the manga to bind.
 | 
			
		||||
     */
 | 
			
		||||
    abstract fun onSetValues(manga: Manga)
 | 
			
		||||
    abstract fun onSetValues(manga: LibraryManga)
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -9,12 +9,12 @@ import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
 | 
			
		||||
import eu.davidea.flexibleadapter.items.IFilterable
 | 
			
		||||
import eu.kanade.tachiyomi.R
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
import eu.kanade.tachiyomi.util.inflate
 | 
			
		||||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
 | 
			
		||||
import kotlinx.android.synthetic.main.catalogue_grid_item.view.*
 | 
			
		||||
 | 
			
		||||
class LibraryItem(val manga: Manga) : AbstractFlexibleItem<LibraryHolder>(), IFilterable {
 | 
			
		||||
class LibraryItem(val manga: LibraryManga) : AbstractFlexibleItem<LibraryHolder>(), IFilterable {
 | 
			
		||||
 | 
			
		||||
    override fun getLayoutRes(): Int {
 | 
			
		||||
        return R.layout.catalogue_grid_item
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@ package eu.kanade.tachiyomi.ui.library
 | 
			
		||||
import android.view.View
 | 
			
		||||
import com.bumptech.glide.load.engine.DiskCacheStrategy
 | 
			
		||||
import eu.davidea.flexibleadapter.FlexibleAdapter
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.glide.GlideApp
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.preference.getOrDefault
 | 
			
		||||
@@ -34,7 +34,7 @@ class LibraryListHolder(
 | 
			
		||||
     *
 | 
			
		||||
     * @param manga the manga to bind.
 | 
			
		||||
     */
 | 
			
		||||
    override fun onSetValues(manga: Manga) {
 | 
			
		||||
    override fun onSetValues(manga: LibraryManga) {
 | 
			
		||||
        // Update the title of the manga.
 | 
			
		||||
        itemView.title.text = manga.title
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,7 @@ import com.jakewharton.rxrelay.BehaviorRelay
 | 
			
		||||
import eu.kanade.tachiyomi.data.cache.CoverCache
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.DatabaseHelper
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Category
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.LibraryManga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.Manga
 | 
			
		||||
import eu.kanade.tachiyomi.data.database.models.MangaCategory
 | 
			
		||||
import eu.kanade.tachiyomi.data.download.DownloadManager
 | 
			
		||||
@@ -98,7 +99,7 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param map the map to filter.
 | 
			
		||||
     */
 | 
			
		||||
    private fun applyFilters(map: Map<Int, List<Manga>>): Map<Int, List<Manga>> {
 | 
			
		||||
    private fun applyFilters(map: Map<Int, List<LibraryManga>>): Map<Int, List<LibraryManga>> {
 | 
			
		||||
        // Cached list of downloaded manga directories given a source id.
 | 
			
		||||
        val mangaDirsForSource = mutableMapOf<Long, Map<String?, UniFile>>()
 | 
			
		||||
 | 
			
		||||
@@ -111,7 +112,7 @@ class LibraryPresenter(
 | 
			
		||||
 | 
			
		||||
        val filterCompleted = preferences.filterCompleted().getOrDefault()
 | 
			
		||||
 | 
			
		||||
        val filterFn: (Manga) -> Boolean = f@ { manga ->
 | 
			
		||||
        val filterFn: (LibraryManga) -> Boolean = f@ { manga ->
 | 
			
		||||
            // Filter out manga without source.
 | 
			
		||||
            val source = sourceManager.get(manga.source) ?: return@f false
 | 
			
		||||
 | 
			
		||||
@@ -153,7 +154,7 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param map the map to filter.
 | 
			
		||||
     */
 | 
			
		||||
    private fun addDownloadTotal(map: Map<Int, List<Manga>>): Map<Int, List<Manga>> {
 | 
			
		||||
    private fun addDownloadTotal(map: Map<Int, List<LibraryManga>>): Map<Int, List<LibraryManga>> {
 | 
			
		||||
        // Cached list of downloaded manga directories given a source id.
 | 
			
		||||
        if (preferences.downloadBadge().getOrDefault()) {
 | 
			
		||||
            val mangaDirsForSource = mutableMapOf<Long, Map<String?, UniFile>>()
 | 
			
		||||
@@ -195,7 +196,7 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @param map the map to sort.
 | 
			
		||||
     */
 | 
			
		||||
    private fun applySort(map: Map<Int, List<Manga>>): Map<Int, List<Manga>> {
 | 
			
		||||
    private fun applySort(map: Map<Int, List<LibraryManga>>): Map<Int, List<LibraryManga>> {
 | 
			
		||||
        val sortingMode = preferences.librarySortingMode().getOrDefault()
 | 
			
		||||
 | 
			
		||||
        val lastReadManga by lazy {
 | 
			
		||||
@@ -207,7 +208,7 @@ class LibraryPresenter(
 | 
			
		||||
            db.getTotalChapterManga().executeAsBlocking().associate { it.id!! to counter++ }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        val sortFn: (Manga, Manga) -> Int = { manga1, manga2 ->
 | 
			
		||||
        val sortFn: (LibraryManga, LibraryManga) -> Int = { manga1, manga2 ->
 | 
			
		||||
            when (sortingMode) {
 | 
			
		||||
                LibrarySort.ALPHA -> manga1.title.compareTo(manga2.title)
 | 
			
		||||
                LibrarySort.LAST_READ -> {
 | 
			
		||||
@@ -245,7 +246,7 @@ class LibraryPresenter(
 | 
			
		||||
     *
 | 
			
		||||
     * @return an observable of the categories and its manga.
 | 
			
		||||
     */
 | 
			
		||||
    private fun getLibraryObservable(): Observable<Pair<List<Category>, Map<Int, List<Manga>>>> {
 | 
			
		||||
    private fun getLibraryObservable(): Observable<Pair<List<Category>, Map<Int, List<LibraryManga>>>> {
 | 
			
		||||
        return Observable.combineLatest(getCategoriesObservable(), getLibraryMangasObservable(),
 | 
			
		||||
                { dbCategories, libraryManga ->
 | 
			
		||||
                    val categories = if (libraryManga.containsKey(0))
 | 
			
		||||
@@ -273,7 +274,7 @@ class LibraryPresenter(
 | 
			
		||||
     * @return an observable containing a map with the category id as key and a list of manga as the
 | 
			
		||||
     * value.
 | 
			
		||||
     */
 | 
			
		||||
    private fun getLibraryMangasObservable(): Observable<Map<Int, List<Manga>>> {
 | 
			
		||||
    private fun getLibraryMangasObservable(): Observable<Map<Int, List<LibraryManga>>> {
 | 
			
		||||
        return db.getLibraryMangas().asRxObservable()
 | 
			
		||||
                .map { list -> list.groupBy { it.category } }
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user