add start download now (#5386)

* add start download now

download now for selected chapter
from j2k

Co-Authored-By: Jays2Kings <jays@outlook.com>

* change string to action

* move to bottom

* oopsie

Co-authored-by: Jays2Kings <jays@outlook.com>
This commit is contained in:
Riztard Lanthorn 2021-06-19 23:36:29 +07:00 committed by GitHub
parent 848d387ec4
commit 05771ddf6d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
11 changed files with 66 additions and 1 deletions

View file

@ -95,6 +95,23 @@ class DownloadManager(private val context: Context) {
downloader.clearQueue(isNotification) downloader.clearQueue(isNotification)
} }
fun startDownloadNow(chapter: Chapter) {
val download = downloader.queue.find { it.chapter.id == chapter.id } ?: return
val queue = downloader.queue.toMutableList()
queue.remove(download)
queue.add(0, download)
reorderQueue(queue)
if (isPaused()) {
if (DownloadService.isRunning(context)) {
downloader.start()
} else {
DownloadService.start(context)
}
}
}
fun isPaused() = downloader.isPaused()
/** /**
* Reorders the download queue. * Reorders the download queue.
* *

View file

@ -19,6 +19,7 @@ import eu.kanade.tachiyomi.data.preference.PreferencesHelper
import eu.kanade.tachiyomi.util.lang.plusAssign import eu.kanade.tachiyomi.util.lang.plusAssign
import eu.kanade.tachiyomi.util.system.acquireWakeLock import eu.kanade.tachiyomi.util.system.acquireWakeLock
import eu.kanade.tachiyomi.util.system.connectivityManager import eu.kanade.tachiyomi.util.system.connectivityManager
import eu.kanade.tachiyomi.util.system.isServiceRunning
import eu.kanade.tachiyomi.util.system.notification import eu.kanade.tachiyomi.util.system.notification
import eu.kanade.tachiyomi.util.system.toast import eu.kanade.tachiyomi.util.system.toast
import rx.android.schedulers.AndroidSchedulers import rx.android.schedulers.AndroidSchedulers
@ -58,6 +59,16 @@ class DownloadService : Service() {
fun stop(context: Context) { fun stop(context: Context) {
context.stopService(Intent(context, DownloadService::class.java)) context.stopService(Intent(context, DownloadService::class.java))
} }
/**
* Returns the status of the service.
*
* @param context the application context.
* @return true if the service is running, false otherwise.
*/
fun isRunning(context: Context): Boolean {
return context.isServiceRunning(DownloadService::class.java)
}
} }
private val downloadManager: DownloadManager by injectLazy() private val downloadManager: DownloadManager by injectLazy()

View file

@ -157,6 +157,11 @@ class Downloader(
notifier.paused = true notifier.paused = true
} }
/**
* Check if downloader is paused
*/
fun isPaused() = !isRunning
/** /**
* Removes everything from the queue. * Removes everything from the queue.
* *

View file

@ -1057,6 +1057,11 @@ class MangaController :
Timber.e(error) Timber.e(error)
} }
override fun startDownloadNow(position: Int) {
val chapter = chaptersAdapter?.getItem(position) ?: return
presenter.startDownloadingNow(chapter)
}
// OVERFLOW MENU DIALOGS // OVERFLOW MENU DIALOGS
private fun downloadChapters(choice: Int) { private fun downloadChapters(choice: Int) {

View file

@ -517,6 +517,10 @@ class MangaPresenter(
} }
} }
fun startDownloadingNow(chapter: Chapter) {
downloadManager.startDownloadNow(chapter)
}
/** /**
* Mark the selected chapter list as read/unread. * Mark the selected chapter list as read/unread.
* @param selectedChapters the list of selected chapters. * @param selectedChapters the list of selected chapters.

View file

@ -26,9 +26,16 @@ open class BaseChapterHolder(
// Download.State.DOWNLOADING, Download.State.QUEUE // Download.State.DOWNLOADING, Download.State.QUEUE
findItem(R.id.cancel_download).isVisible = item.status != Download.State.DOWNLOADED findItem(R.id.cancel_download).isVisible = item.status != Download.State.DOWNLOADED
// Download.State.QUEUE
findItem(R.id.start_download).isVisible = item.status == Download.State.QUEUE
}, },
onMenuItemClick = { onMenuItemClick = {
adapter.clickListener.deleteChapter(position) if (itemId == R.id.start_download) {
adapter.clickListener.startDownloadNow(position)
} else {
adapter.clickListener.deleteChapter(position)
}
} }
) )
} }

View file

@ -18,5 +18,6 @@ abstract class BaseChaptersAdapter<T : IFlexible<*>>(
interface OnChapterClickListener { interface OnChapterClickListener {
fun downloadChapter(position: Int) fun downloadChapter(position: Int)
fun deleteChapter(position: Int) fun deleteChapter(position: Int)
fun startDownloadNow(position: Int)
} }
} }

View file

@ -318,6 +318,11 @@ class UpdatesController :
adapter?.updateItem(item) adapter?.updateItem(item)
} }
override fun startDownloadNow(position: Int) {
val chapter = adapter?.getItem(position) as? UpdatesItem ?: return
presenter.startDownloadingNow(chapter)
}
/** /**
* Called when ActionMode created. * Called when ActionMode created.
* @param mode the ActionMode object * @param mode the ActionMode object

View file

@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.recent.updates
import android.os.Bundle import android.os.Bundle
import eu.kanade.tachiyomi.data.database.DatabaseHelper import eu.kanade.tachiyomi.data.database.DatabaseHelper
import eu.kanade.tachiyomi.data.database.models.Chapter
import eu.kanade.tachiyomi.data.database.models.MangaChapter import eu.kanade.tachiyomi.data.database.models.MangaChapter
import eu.kanade.tachiyomi.data.download.DownloadManager import eu.kanade.tachiyomi.data.download.DownloadManager
import eu.kanade.tachiyomi.data.download.model.Download import eu.kanade.tachiyomi.data.download.model.Download
@ -134,6 +135,10 @@ class UpdatesPresenter(
} }
} }
fun startDownloadingNow(chapter: Chapter) {
downloadManager.startDownloadNow(chapter)
}
/** /**
* Mark selected chapter as read * Mark selected chapter as read
* *

View file

@ -1,6 +1,10 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"> <menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/start_download"
android:title="@string/action_start_downloading_now" />
<item <item
android:id="@+id/delete_download" android:id="@+id/delete_download"
android:title="@string/action_delete" /> android:title="@string/action_delete" />

View file

@ -120,6 +120,7 @@
<string name="action_webview_back">Back</string> <string name="action_webview_back">Back</string>
<string name="action_webview_forward">Forward</string> <string name="action_webview_forward">Forward</string>
<string name="action_webview_refresh">Refresh</string> <string name="action_webview_refresh">Refresh</string>
<string name="action_start_downloading_now">Start downloading now</string>
<!-- Operations --> <!-- Operations -->
<string name="loading">Loading…</string> <string name="loading">Loading…</string>