mirror of
https://github.com/mihonapp/mihon.git
synced 2024-11-07 20:31:02 -05:00
Handle paused state in download queue summary
This commit is contained in:
parent
3374481912
commit
a9d32fea37
1 changed files with 31 additions and 10 deletions
|
@ -6,6 +6,7 @@ import androidx.preference.Preference
|
||||||
import androidx.preference.PreferenceScreen
|
import androidx.preference.PreferenceScreen
|
||||||
import eu.kanade.tachiyomi.R
|
import eu.kanade.tachiyomi.R
|
||||||
import eu.kanade.tachiyomi.data.download.DownloadManager
|
import eu.kanade.tachiyomi.data.download.DownloadManager
|
||||||
|
import eu.kanade.tachiyomi.data.download.DownloadService
|
||||||
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
import eu.kanade.tachiyomi.data.preference.PreferenceKeys as Keys
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
import eu.kanade.tachiyomi.ui.base.controller.NoToolbarElevationController
|
||||||
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
import eu.kanade.tachiyomi.ui.base.controller.RootController
|
||||||
|
@ -25,7 +26,7 @@ import eu.kanade.tachiyomi.util.preference.switchPreference
|
||||||
import eu.kanade.tachiyomi.util.preference.titleRes
|
import eu.kanade.tachiyomi.util.preference.titleRes
|
||||||
import eu.kanade.tachiyomi.util.system.getResourceColor
|
import eu.kanade.tachiyomi.util.system.getResourceColor
|
||||||
import eu.kanade.tachiyomi.util.system.openInBrowser
|
import eu.kanade.tachiyomi.util.system.openInBrowser
|
||||||
import uy.kohesive.injekt.api.get
|
import rx.android.schedulers.AndroidSchedulers
|
||||||
import uy.kohesive.injekt.injectLazy
|
import uy.kohesive.injekt.injectLazy
|
||||||
|
|
||||||
class MoreController :
|
class MoreController :
|
||||||
|
@ -34,6 +35,8 @@ class MoreController :
|
||||||
NoToolbarElevationController {
|
NoToolbarElevationController {
|
||||||
|
|
||||||
private val downloadManager: DownloadManager by injectLazy()
|
private val downloadManager: DownloadManager by injectLazy()
|
||||||
|
private var isDownloading: Boolean = false
|
||||||
|
private var downloadQueueSize: Int = 0
|
||||||
|
|
||||||
override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
|
override fun setupPreferenceScreen(screen: PreferenceScreen) = with(screen) {
|
||||||
titleRes = R.string.label_more
|
titleRes = R.string.label_more
|
||||||
|
@ -55,15 +58,7 @@ class MoreController :
|
||||||
titleRes = R.string.label_download_queue
|
titleRes = R.string.label_download_queue
|
||||||
|
|
||||||
if (downloadManager.queue.isNotEmpty()) {
|
if (downloadManager.queue.isNotEmpty()) {
|
||||||
downloadManager.queue.getUpdatedObservable()
|
initDownloadQueueSummary(this)
|
||||||
.doOnNext {
|
|
||||||
summary = if (it.isNullOrEmpty()) {
|
|
||||||
null
|
|
||||||
} else {
|
|
||||||
resources?.getQuantityString(R.plurals.download_queue_summary, it.size, it.size)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.subscribe()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
iconRes = R.drawable.ic_file_download_black_24dp
|
iconRes = R.drawable.ic_file_download_black_24dp
|
||||||
|
@ -110,6 +105,32 @@ class MoreController :
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun initDownloadQueueSummary(preference: Preference) {
|
||||||
|
// Handle running/paused status change
|
||||||
|
DownloadService.runningRelay
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribeUntilDestroy { isRunning ->
|
||||||
|
isDownloading = isRunning
|
||||||
|
updateDownloadQueueSummary(preference)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle queue progress updating
|
||||||
|
downloadManager.queue.getUpdatedObservable()
|
||||||
|
.observeOn(AndroidSchedulers.mainThread())
|
||||||
|
.subscribeUntilDestroy {
|
||||||
|
downloadQueueSize = it.size
|
||||||
|
updateDownloadQueueSummary(preference)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateDownloadQueueSummary(preference: Preference) {
|
||||||
|
preference.summary = when {
|
||||||
|
downloadQueueSize == 0 -> null
|
||||||
|
!isDownloading -> resources?.getString(R.string.paused)
|
||||||
|
else -> resources?.getQuantityString(R.plurals.download_queue_summary, downloadQueueSize, downloadQueueSize)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class MoreHeaderPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
private class MoreHeaderPreference @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) :
|
||||||
Preference(context, attrs) {
|
Preference(context, attrs) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue