Minor edits
This commit is contained in:
parent
bbf456a4aa
commit
902700e1f4
5 changed files with 37 additions and 32 deletions
|
@ -29,9 +29,6 @@ class DownloadStore(
|
||||||
*/
|
*/
|
||||||
private val gson: Gson by injectLazy()
|
private val gson: Gson by injectLazy()
|
||||||
|
|
||||||
/**
|
|
||||||
* Database helper.
|
|
||||||
*/
|
|
||||||
private val db: DatabaseHelper by injectLazy()
|
private val db: DatabaseHelper by injectLazy()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -19,6 +19,13 @@ import eu.kanade.tachiyomi.util.view.inflate
|
||||||
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
import eu.kanade.tachiyomi.widget.AutofitRecyclerView
|
||||||
import kotlinx.android.synthetic.main.library_category.view.fast_scroller
|
import kotlinx.android.synthetic.main.library_category.view.fast_scroller
|
||||||
import kotlinx.android.synthetic.main.library_category.view.swipe_refresh
|
import kotlinx.android.synthetic.main.library_category.view.swipe_refresh
|
||||||
|
import kotlinx.coroutines.CoroutineScope
|
||||||
|
import kotlinx.coroutines.Dispatchers
|
||||||
|
import kotlinx.coroutines.Job
|
||||||
|
import kotlinx.coroutines.flow.launchIn
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
import reactivecircus.flowbinding.recyclerview.scrollStateChanges
|
||||||
|
import reactivecircus.flowbinding.swiperefreshlayout.refreshes
|
||||||
import rx.subscriptions.CompositeSubscription
|
import rx.subscriptions.CompositeSubscription
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
|
@ -30,9 +37,8 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||||
FlexibleAdapter.OnItemClickListener,
|
FlexibleAdapter.OnItemClickListener,
|
||||||
FlexibleAdapter.OnItemLongClickListener {
|
FlexibleAdapter.OnItemLongClickListener {
|
||||||
|
|
||||||
/**
|
private val scope = CoroutineScope(Job() + Dispatchers.Main)
|
||||||
* Preferences.
|
|
||||||
*/
|
|
||||||
private val preferences: PreferencesHelper by injectLazy()
|
private val preferences: PreferencesHelper by injectLazy()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -83,25 +89,27 @@ class LibraryCategoryView @JvmOverloads constructor(context: Context, attrs: Att
|
||||||
swipe_refresh.addView(recycler)
|
swipe_refresh.addView(recycler)
|
||||||
adapter.fastScroller = fast_scroller
|
adapter.fastScroller = fast_scroller
|
||||||
|
|
||||||
recycler.addOnScrollListener(object : RecyclerView.OnScrollListener() {
|
recycler.scrollStateChanges()
|
||||||
override fun onScrollStateChanged(recycler: RecyclerView, newState: Int) {
|
.onEach {
|
||||||
// Disable swipe refresh when view is not at the top
|
// Disable swipe refresh when view is not at the top
|
||||||
val firstPos = (recycler.layoutManager as LinearLayoutManager)
|
val firstPos = (recycler.layoutManager as LinearLayoutManager)
|
||||||
.findFirstCompletelyVisibleItemPosition()
|
.findFirstCompletelyVisibleItemPosition()
|
||||||
swipe_refresh.isEnabled = firstPos <= 0
|
swipe_refresh.isEnabled = firstPos <= 0
|
||||||
}
|
}
|
||||||
})
|
.launchIn(scope)
|
||||||
|
|
||||||
// Double the distance required to trigger sync
|
// Double the distance required to trigger sync
|
||||||
swipe_refresh.setDistanceToTriggerSync((2 * 64 * resources.displayMetrics.density).toInt())
|
swipe_refresh.setDistanceToTriggerSync((2 * 64 * resources.displayMetrics.density).toInt())
|
||||||
swipe_refresh.setOnRefreshListener {
|
swipe_refresh.refreshes()
|
||||||
if (LibraryUpdateService.start(context, category)) {
|
.onEach {
|
||||||
context.toast(R.string.updating_category)
|
if (LibraryUpdateService.start(context, category)) {
|
||||||
}
|
context.toast(R.string.updating_category)
|
||||||
|
}
|
||||||
|
|
||||||
// It can be a very long operation, so we disable swipe refresh and show a toast.
|
// It can be a very long operation, so we disable swipe refresh and show a toast.
|
||||||
swipe_refresh.isRefreshing = false
|
swipe_refresh.isRefreshing = false
|
||||||
}
|
}
|
||||||
|
.launchIn(scope)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun onBind(category: Category) {
|
fun onBind(category: Category) {
|
||||||
|
|
|
@ -62,7 +62,7 @@ class LibrarySettingsSheet(
|
||||||
private val filterGroup = FilterGroup()
|
private val filterGroup = FilterGroup()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addGroups(listOf(filterGroup))
|
setGroups(listOf(filterGroup))
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -110,7 +110,7 @@ class LibrarySettingsSheet(
|
||||||
Settings(context, attrs) {
|
Settings(context, attrs) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addGroups(listOf(SortGroup()))
|
setGroups(listOf(SortGroup()))
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class SortGroup : Group {
|
inner class SortGroup : Group {
|
||||||
|
@ -185,7 +185,7 @@ class LibrarySettingsSheet(
|
||||||
Settings(context, attrs) {
|
Settings(context, attrs) {
|
||||||
|
|
||||||
init {
|
init {
|
||||||
addGroups(listOf(DisplayGroup(), BadgeGroup()))
|
setGroups(listOf(DisplayGroup(), BadgeGroup()))
|
||||||
}
|
}
|
||||||
|
|
||||||
inner class DisplayGroup : Group {
|
inner class DisplayGroup : Group {
|
||||||
|
@ -247,15 +247,12 @@ class LibrarySettingsSheet(
|
||||||
*/
|
*/
|
||||||
var onGroupClicked: (Group) -> Unit = {}
|
var onGroupClicked: (Group) -> Unit = {}
|
||||||
|
|
||||||
init {
|
fun setGroups(groups: List<Group>) {
|
||||||
addView(recycler)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun addGroups(groups: List<Group>) {
|
|
||||||
adapter = Adapter(groups.map { it.createItems() }.flatten())
|
adapter = Adapter(groups.map { it.createItems() }.flatten())
|
||||||
recycler.adapter = adapter
|
recycler.adapter = adapter
|
||||||
|
|
||||||
groups.forEach { it.initModels() }
|
groups.forEach { it.initModels() }
|
||||||
|
addView(recycler)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -21,6 +21,10 @@ import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||||
import eu.kanade.tachiyomi.util.system.toast
|
import eu.kanade.tachiyomi.util.system.toast
|
||||||
import eu.kanade.tachiyomi.util.view.invisible
|
import eu.kanade.tachiyomi.util.view.invisible
|
||||||
import eu.kanade.tachiyomi.util.view.visible
|
import eu.kanade.tachiyomi.util.view.visible
|
||||||
|
import kotlinx.coroutines.flow.launchIn
|
||||||
|
import kotlinx.coroutines.flow.onEach
|
||||||
|
import reactivecircus.flowbinding.appcompat.navigationClicks
|
||||||
|
import reactivecircus.flowbinding.swiperefreshlayout.refreshes
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
|
class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
|
||||||
|
@ -38,14 +42,14 @@ class WebViewActivity : BaseActivity<WebviewActivityBinding>() {
|
||||||
title = intent.extras?.getString(TITLE_KEY)
|
title = intent.extras?.getString(TITLE_KEY)
|
||||||
setSupportActionBar(binding.toolbar)
|
setSupportActionBar(binding.toolbar)
|
||||||
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
supportActionBar?.setDisplayHomeAsUpEnabled(true)
|
||||||
binding.toolbar.setNavigationOnClickListener {
|
binding.toolbar.navigationClicks()
|
||||||
super.onBackPressed()
|
.onEach { super.onBackPressed() }
|
||||||
}
|
.launchIn(scope)
|
||||||
|
|
||||||
binding.swipeRefresh.isEnabled = false
|
binding.swipeRefresh.isEnabled = false
|
||||||
binding.swipeRefresh.setOnRefreshListener {
|
binding.swipeRefresh.refreshes()
|
||||||
refreshPage()
|
.onEach { refreshPage() }
|
||||||
}
|
.launchIn(scope)
|
||||||
|
|
||||||
if (bundle == null) {
|
if (bundle == null) {
|
||||||
val url = intent.extras!!.getString(URL_KEY) ?: return
|
val url = intent.extras!!.getString(URL_KEY) ?: return
|
||||||
|
|
|
@ -54,7 +54,6 @@
|
||||||
android:layout_height="0dp"
|
android:layout_height="0dp"
|
||||||
android:layout_gravity="top"
|
android:layout_gravity="top"
|
||||||
android:layout_weight="1"
|
android:layout_weight="1"
|
||||||
android:paddingTop="8dp"
|
|
||||||
android:paddingBottom="8dp" />
|
android:paddingBottom="8dp" />
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
Reference in a new issue