mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 00:10:32 +05:30
Merge pull request #5531 from thevedantchourey/thevedantchourey-enhanced-code-for-Button-to-delete-all-downloaded-videos-at-once-5526
feat: button to delete all downloads
This commit is contained in:
commit
9803a045f9
@ -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
|
||||
|
||||
|
@ -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()
|
||||
|
@ -34,6 +34,18 @@
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/delete_all"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="bottom|end"
|
||||
android:layout_marginBottom="80dp"
|
||||
android:layout_marginEnd="18dp"
|
||||
android:contentDescription="@string/shuffle"
|
||||
android:src="@drawable/ic_delete"
|
||||
android:tooltipText="@string/delete"
|
||||
tools:targetApi="o" />
|
||||
|
||||
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||
android:id="@+id/shuffle_background"
|
||||
android:layout_width="wrap_content"
|
||||
|
@ -286,6 +286,7 @@
|
||||
<string name="device_info">Device Info</string>
|
||||
<string name="audio_video_summary">Quality and format</string>
|
||||
<string name="delete">Delete from downloads</string>
|
||||
<string name="delete_all">All downloads will be deleted!</string>
|
||||
<string name="renamePlaylist">Rename playlist</string>
|
||||
<string name="wifi">Wi-Fi</string>
|
||||
<string name="mobile_data">Mobile data</string>
|
||||
|
Loading…
x
Reference in New Issue
Block a user