diff --git a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt index 58e7de38..2ea82108 100644 --- a/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt +++ b/app/src/main/java/ani/dantotsu/download/manga/MangaDownloaderService.kt @@ -232,12 +232,18 @@ class MangaDownloaderService : Service() { image.page, image.source ) + if (bitmap == null) { + snackString("${task.chapter} - Retrying to download page ${index.ofLength(3)}, attempt ${retryCount + 1}.") + } retryCount++ } - if (bitmap != null) { - saveToDisk("${index.ofLength(3)}.jpg", outputDir, bitmap) + if (bitmap == null) { + outputDir.deleteRecursively(this@MangaDownloaderService, false) + throw Exception("${task.chapter} - Unable to download all pages after $retryCount attempts. Try again.") } + + saveToDisk("${index.ofLength(3)}.jpg", outputDir, bitmap) farthest++ builder.setProgress(task.imageData.size, farthest, false) 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 a76d44a4..ddf98974 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadAdapter.kt @@ -7,9 +7,11 @@ import android.view.View import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.CheckBox +import android.widget.EditText import android.widget.ImageButton import android.widget.LinearLayout import android.widget.NumberPicker +import android.widget.TextView import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat.getString import androidx.core.content.ContextCompat.startActivity @@ -265,19 +267,22 @@ class MangaReadAdapter( } // Multi download - downloadNo.text = "0" + //downloadNo.text = "0" mediaDownloadTop.setOnClickListener { - // Alert dialog asking for the number of chapters to download fragment.requireContext().customAlertDialog().apply { setTitle("Multi Chapter Downloader") setMessage("Enter the number of chapters to download") - val input = NumberPicker(currContext()) - input.minValue = 1 - input.maxValue = 20 - input.value = 1 + val input = View.inflate(currContext(), R.layout.dialog_layout, null) + val editText = input.findViewById(R.id.downloadNo) setCustomView(input) setPosButton(R.string.ok) { - downloadNo.text = "${input.value}" + val value = editText.text.toString().toIntOrNull() + if (value != null && value > 0) { + downloadNo.setText(value.toString(), TextView.BufferType.EDITABLE) + fragment.multiDownload(value) + } else { + toast("Please enter a valid number") + } } setNegButton(R.string.cancel) show() @@ -382,8 +387,9 @@ class MangaReadAdapter( setCustomView(root) setPosButton("OK") { if (run) fragment.onIconPressed(style, reversed) - if (downloadNo.text != "0") { - fragment.multiDownload(downloadNo.text.toString().toInt()) + val value = downloadNo.text.toString().toIntOrNull() + if (value != null && value > 0) { + fragment.multiDownload(value) } if (refresh) fragment.loadChapters(source, true) } 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 6b7eb6bc..63ef7408 100644 --- a/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt +++ b/app/src/main/java/ani/dantotsu/media/manga/MangaReadFragment.kt @@ -474,7 +474,7 @@ open class MangaReadFragment : Fragment(), ScanlatorSelectionListener { scanlator = chapter.scanlator ?: "Unknown", imageData = images, sourceMedia = media, - retries = 2, + retries = 25, simultaneousDownloads = 2 ) diff --git a/app/src/main/res/layout/dialog_layout.xml b/app/src/main/res/layout/dialog_layout.xml index 3db06395..3c9df3b8 100644 --- a/app/src/main/res/layout/dialog_layout.xml +++ b/app/src/main/res/layout/dialog_layout.xml @@ -8,7 +8,7 @@ android:padding="16dp"> @@ -160,8 +160,8 @@ android:orientation="horizontal"> - + tools:text="Number" /> + + + + + + + +