diff --git a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt index e01548da..ea30fa58 100644 --- a/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/anime/AnimeWatchAdapter.kt @@ -204,6 +204,7 @@ class AnimeWatchAdapter( fragment.onIconPressed(style, reversed) } binding.animeScanlatorTop.visibility = View.GONE + binding.animeDownloadTop.visibility = View.GONE //Episode Handling handleEpisodes() } diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt index c4752a04..44b3e6a1 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaChapterAdapter.kt @@ -114,6 +114,30 @@ class MangaChapterAdapter( } } + fun downloadNextNChapters(n: Int) { + //find last viewed chapter + var lastViewedChapter = arr.indexOfFirst { MangaNameAdapter.findChapterNumber(it.number)?.toInt() == media.userProgress } + if (lastViewedChapter == -1) { + lastViewedChapter = 0 + } + //download next n chapters + for (i in 1..n) { + if (lastViewedChapter + i < arr.size) { + val chapterNumber = arr[lastViewedChapter + i].number + if (activeDownloads.contains(chapterNumber)) { + //do nothing + continue + } else if (downloadedChapters.contains(chapterNumber)) { + //do nothing + continue + } else { + fragment.onMangaChapterDownloadClick(chapterNumber) + startDownload(chapterNumber) + } + } + } + } + inner class ChapterListViewHolder(val binding: ItemChapterListBinding) : RecyclerView.ViewHolder(binding.root) { private val activeCoroutines = mutableSetOf() diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt index 53ca774c..07d456ee 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt @@ -5,10 +5,12 @@ import android.app.AlertDialog import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.view.WindowManager import android.widget.ArrayAdapter import android.widget.CheckBox import android.widget.ImageView import android.widget.LinearLayout +import android.widget.NumberPicker import androidx.core.content.ContextCompat import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.RecyclerView @@ -185,6 +187,23 @@ class MangaReadAdapter( .show() } + binding.animeDownloadTop.setOnClickListener { + //Alert dialog asking for the number of chapters to download + val alertDialog = AlertDialog.Builder(currContext(), R.style.MyPopup) + alertDialog.setTitle("Multi Chapter Downloader") + alertDialog.setMessage("Enter the number of chapters to download") + val input = NumberPicker(currContext()) + input.minValue = 1 + input.maxValue = 20 + input.value = 1 + alertDialog.setView(input) + alertDialog.setPositiveButton("OK") { dialog, which -> + fragment.multiDownload(input.value) + } + alertDialog.setNegativeButton("Cancel") { dialog, _ -> dialog.cancel() } + val dialog = alertDialog.show() + } + var selected = when (style) { 0 -> binding.animeSourceList 1 -> binding.animeSourceCompact diff --git a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt index d59b84ba..1fb36706 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -197,6 +197,10 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { updateChapters() } + fun multiDownload(n: Int) { + chapterAdapter.downloadNextNChapters(n) + } + private fun updateChapters() { val loadedChapters = model.getMangaChapters().value if (loadedChapters != null) { diff --git a/app/src/main/res/layout/item_anime_watch.xml b/app/src/main/res/layout/item_anime_watch.xml index b401c97f..b2f3f3da 100644 --- a/app/src/main/res/layout/item_anime_watch.xml +++ b/app/src/main/res/layout/item_anime_watch.xml @@ -246,6 +246,16 @@ app:tint="?attr/colorOnBackground" tools:ignore="ContentDescription,ImageContrastCheck" /> + +