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