diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt index eb869f70b7..5e0d3c5303 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/download/DownloadController.kt @@ -15,6 +15,9 @@ import eu.kanade.tachiyomi.source.model.Page import eu.kanade.tachiyomi.ui.base.controller.NucleusController import java.util.HashMap import java.util.concurrent.TimeUnit +import kotlinx.coroutines.flow.launchIn +import kotlinx.coroutines.flow.onEach +import reactivecircus.flowbinding.android.view.clicks import rx.Observable import rx.Subscription import rx.android.schedulers.AndroidSchedulers @@ -74,6 +77,21 @@ class DownloadController : binding.recycler.layoutManager = LinearLayoutManager(view.context) binding.recycler.setHasFixedSize(true) + binding.fab.clicks() + .onEach { + val context = applicationContext ?: return@onEach + + if (isRunning) { + DownloadService.stop(context) + presenter.pauseDownloads() + } else { + DownloadService.start(context) + } + + setInformationView() + } + .launchIn(scope) + // Subscribe to changes DownloadService.runningRelay .observeOn(AndroidSchedulers.mainThread()) @@ -102,8 +120,6 @@ class DownloadController : } override fun onPrepareOptionsMenu(menu: Menu) { - menu.findItem(R.id.start_queue).isVisible = !isRunning && !presenter.downloadQueue.isEmpty() - menu.findItem(R.id.pause_queue).isVisible = isRunning menu.findItem(R.id.clear_queue).isVisible = !presenter.downloadQueue.isEmpty() menu.findItem(R.id.reorder).isVisible = !presenter.downloadQueue.isEmpty() } @@ -111,11 +127,6 @@ class DownloadController : override fun onOptionsItemSelected(item: MenuItem): Boolean { val context = applicationContext ?: return false when (item.itemId) { - R.id.start_queue -> DownloadService.start(context) - R.id.pause_queue -> { - DownloadService.stop(context) - presenter.pauseDownloads() - } R.id.clear_queue -> { DownloadService.stop(context) presenter.clearQueue() @@ -253,8 +264,18 @@ class DownloadController : private fun setInformationView() { if (presenter.downloadQueue.isEmpty()) { binding.emptyView.show(R.string.information_no_downloads) + binding.fab.hide() } else { binding.emptyView.hide() + binding.fab.show() + + binding.fab.setImageResource( + if (isRunning) { + R.drawable.ic_pause_24dp + } else { + R.drawable.ic_play_arrow_24dp + } + ) } } diff --git a/app/src/main/res/layout/download_controller.xml b/app/src/main/res/layout/download_controller.xml index 3f778f6e88..62380bf5f7 100644 --- a/app/src/main/res/layout/download_controller.xml +++ b/app/src/main/res/layout/download_controller.xml @@ -1,5 +1,6 @@ + + - - - - Downloaded Next unread View chapters - Start Stop Pause Close