Minor changes. Also fix #240

This commit is contained in:
len
2016-04-06 16:45:13 +02:00
parent a598ebf72f
commit 7c503648ff
10 changed files with 28 additions and 127 deletions

View File

@@ -9,13 +9,11 @@ import com.f2prateek.rx.preferences.Preference
import eu.davidea.flexibleadapter.FlexibleAdapter
import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.event.LibraryMangasEvent
import eu.kanade.tachiyomi.event.LibraryMangaEvent
import eu.kanade.tachiyomi.ui.base.adapter.FlexibleViewHolder
import eu.kanade.tachiyomi.ui.base.fragment.BaseFragment
import eu.kanade.tachiyomi.ui.manga.MangaActivity
import kotlinx.android.synthetic.main.fragment_library_category.*
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
import rx.Subscription
import java.util.*
@@ -44,6 +42,11 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli
field = value ?: ArrayList()
}
/**
* Subscription for the library manga.
*/
private var libraryMangaSubscription: Subscription? = null
/**
* Subscription of the number of manga per row.
*/
@@ -115,11 +118,12 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli
override fun onResume() {
super.onResume()
registerForEvents()
libraryMangaSubscription = libraryPresenter.libraryMangaSubject
.subscribe({ onNextLibraryManga(it) })
}
override fun onPause() {
unregisterForEvents()
libraryMangaSubscription?.unsubscribe()
super.onPause()
}
@@ -130,13 +134,12 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli
}
/**
* Subscribe to [LibraryMangasEvent]. When an event is received, it updates [mangas] if needed
* Subscribe to [LibraryMangaEvent]. When an event is received, it updates [mangas] if needed
* and refresh the content of the adapter.
*
* @param event the event received.
*/
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
fun onEvent(event: LibraryMangasEvent) {
fun onNextLibraryManga(event: LibraryMangaEvent?) {
// Get the categories from the parent fragment.
val categories = libraryFragment.adapter.categories ?: return
@@ -144,13 +147,13 @@ class LibraryCategoryFragment : BaseFragment(), FlexibleViewHolder.OnListItemCli
if (position >= categories.size) return
// Get the manga list for this category
val mangaForCategory = event.getMangasForCategory(categories[position])
val mangaForCategory = event?.getMangasForCategory(categories[position])
// Update the list only if the reference to the list is different, avoiding reseting the
// adapter after every onResume.
if (mangas !== mangaForCategory) {
mangas = mangaForCategory
mangas?.let { adapter.setItems(it) }
adapter.setItems(mangas ?: emptyList())
}
}

View File

@@ -14,7 +14,7 @@ import eu.kanade.tachiyomi.R
import eu.kanade.tachiyomi.data.database.models.Category
import eu.kanade.tachiyomi.data.database.models.Manga
import eu.kanade.tachiyomi.data.library.LibraryUpdateService
import eu.kanade.tachiyomi.event.LibraryMangasEvent
import eu.kanade.tachiyomi.event.LibraryMangaEvent
import eu.kanade.tachiyomi.ui.base.fragment.BaseRxFragment
import eu.kanade.tachiyomi.ui.category.CategoryActivity
import eu.kanade.tachiyomi.ui.main.MainActivity
@@ -23,7 +23,6 @@ import eu.kanade.tachiyomi.util.toast
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.fragment_library.*
import nucleus.factory.RequiresPresenter
import org.greenrobot.eventbus.EventBus
import java.io.IOException
/**
@@ -273,7 +272,7 @@ class LibraryFragment : BaseRxFragment<LibraryPresenter>(), ActionMode.Callback
}
// Send the manga map to child fragments after the adapter is updated.
EventBus.getDefault().postSticky(LibraryMangasEvent(mangaMap))
presenter.libraryMangaSubject.onNext(LibraryMangaEvent(mangaMap))
}
/**

View File

@@ -11,9 +11,8 @@ import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.data.preference.getOrDefault
import eu.kanade.tachiyomi.data.source.SourceManager
import eu.kanade.tachiyomi.event.LibraryMangasEvent
import eu.kanade.tachiyomi.event.LibraryMangaEvent
import eu.kanade.tachiyomi.ui.base.presenter.BasePresenter
import org.greenrobot.eventbus.EventBus
import rx.Observable
import rx.android.schedulers.AndroidSchedulers
import rx.subjects.BehaviorSubject
@@ -35,12 +34,17 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
/**
* Currently selected manga.
*/
lateinit var selectedMangas: MutableList<Manga>
var selectedMangas = mutableListOf<Manga>()
/**
* Search query of the library.
*/
lateinit var searchSubject: BehaviorSubject<String>
val searchSubject = BehaviorSubject.create<String>()
/**
* Subject to notify the library's viewpager for updates.
*/
val libraryMangaSubject = BehaviorSubject.create<LibraryMangaEvent?>()
/**
* Database.
@@ -77,10 +81,6 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
override fun onCreate(savedState: Bundle?) {
super.onCreate(savedState)
selectedMangas = ArrayList()
searchSubject = BehaviorSubject.create()
restartableLatestCache(GET_LIBRARY,
{ getLibraryObservable() },
{ view, pair -> view.onNextLibraryUpdate(pair.first, pair.second) })
@@ -92,7 +92,7 @@ class LibraryPresenter : BasePresenter<LibraryFragment>() {
}
override fun onDropView() {
EventBus.getDefault().removeStickyEvent(LibraryMangasEvent::class.java)
libraryMangaSubject.onNext(null)
super.onDropView()
}