diff --git a/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt
index 7288c626d..de6026351 100644
--- a/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt
+++ b/app/src/main/java/com/github/libretube/ui/adapters/DownloadsAdapter.kt
@@ -136,7 +136,7 @@ class DownloadsAdapter(
.show()
}
- private fun deleteDownload(position: Int) {
+ fun deleteDownload(position: Int) {
val download = downloads[position].download
val items = downloads[position].downloadItems
diff --git a/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt
index fd50865ca..3aa6fcd39 100644
--- a/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt
+++ b/app/src/main/java/com/github/libretube/ui/fragments/DownloadsFragment.kt
@@ -1,6 +1,7 @@
package com.github.libretube.ui.fragments
import android.content.ComponentName
+import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.content.ServiceConnection
@@ -9,15 +10,14 @@ import android.os.IBinder
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
-import androidx.core.content.ContextCompat
import androidx.core.view.isGone
+import androidx.core.view.isInvisible
import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.R
-import com.github.libretube.constants.IntentData
import com.github.libretube.databinding.FragmentDownloadsBinding
import com.github.libretube.db.DatabaseHolder.Database
import com.github.libretube.db.obj.DownloadWithItems
@@ -28,10 +28,10 @@ import com.github.libretube.helpers.DownloadHelper
import com.github.libretube.obj.DownloadStatus
import com.github.libretube.receivers.DownloadReceiver
import com.github.libretube.services.DownloadService
-import com.github.libretube.services.OfflinePlayerService
import com.github.libretube.ui.adapters.DownloadsAdapter
import com.github.libretube.ui.base.DynamicLayoutManagerFragment
import com.github.libretube.ui.viewholders.DownloadsViewHolder
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import kotlin.io.path.fileSize
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.Job
@@ -83,6 +83,7 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
+ binding.deleteAll.isInvisible = true
val dbDownloads = runBlocking(Dispatchers.IO) {
Database.downloadDao().getAll()
@@ -93,7 +94,6 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
binding.downloadsEmpty.isGone = true
binding.downloads.isVisible = true
-
val adapter = DownloadsAdapter(requireContext(), downloads) {
var isDownloading = false
val ids = it.downloadItems
@@ -155,11 +155,33 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
}
)
+
+ if (dbDownloads.isNotEmpty()){
+ binding.deleteAll.isVisible = true
+ binding.deleteAll.setOnClickListener{
+ showDeleteAllDialog(binding.root.context, adapter)
+ }
+ }
+
+
binding.shuffleBackground.setOnClickListener {
BackgroundHelper.playOnBackgroundOffline(requireContext(), null)
}
}
+ private fun showDeleteAllDialog(context: Context, adapter: DownloadsAdapter) {
+ MaterialAlertDialogBuilder(context)
+ .setTitle(R.string.delete_all)
+ .setMessage(R.string.irreversible)
+ .setPositiveButton(R.string.okay) { _, _ ->
+ for (downloadIndex in downloads.size - 1 downTo 0) {
+ adapter.deleteDownload(downloadIndex)
+ }
+ }
+ .setNegativeButton(R.string.cancel, null)
+ .show()
+ }
+
override fun onStart() {
if (DownloadService.IS_DOWNLOAD_RUNNING) {
val intent = Intent(requireContext(), DownloadService::class.java)
@@ -168,6 +190,7 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
super.onStart()
}
+
override fun onResume() {
super.onResume()
val filter = IntentFilter()
diff --git a/app/src/main/res/layout/fragment_downloads.xml b/app/src/main/res/layout/fragment_downloads.xml
index 6e475edbf..7503b5b71 100644
--- a/app/src/main/res/layout/fragment_downloads.xml
+++ b/app/src/main/res/layout/fragment_downloads.xml
@@ -34,6 +34,18 @@
android:layout_height="wrap_content"
android:visibility="gone" />
+
+
Device Info
Quality and format
Delete from downloads
+ All downloads will be deleted!
Rename playlist
Wi-Fi
Mobile data