mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-29 08:20: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()
|
.show()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun deleteDownload(position: Int) {
|
fun deleteDownload(position: Int) {
|
||||||
val download = downloads[position].download
|
val download = downloads[position].download
|
||||||
val items = downloads[position].downloadItems
|
val items = downloads[position].downloadItems
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.github.libretube.ui.fragments
|
package com.github.libretube.ui.fragments
|
||||||
|
|
||||||
import android.content.ComponentName
|
import android.content.ComponentName
|
||||||
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.content.ServiceConnection
|
import android.content.ServiceConnection
|
||||||
@ -9,15 +10,14 @@ import android.os.IBinder
|
|||||||
import android.view.LayoutInflater
|
import android.view.LayoutInflater
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import androidx.core.view.isGone
|
import androidx.core.view.isGone
|
||||||
|
import androidx.core.view.isInvisible
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.lifecycle.lifecycleScope
|
import androidx.lifecycle.lifecycleScope
|
||||||
import androidx.recyclerview.widget.GridLayoutManager
|
import androidx.recyclerview.widget.GridLayoutManager
|
||||||
import androidx.recyclerview.widget.ItemTouchHelper
|
import androidx.recyclerview.widget.ItemTouchHelper
|
||||||
import androidx.recyclerview.widget.RecyclerView
|
import androidx.recyclerview.widget.RecyclerView
|
||||||
import com.github.libretube.R
|
import com.github.libretube.R
|
||||||
import com.github.libretube.constants.IntentData
|
|
||||||
import com.github.libretube.databinding.FragmentDownloadsBinding
|
import com.github.libretube.databinding.FragmentDownloadsBinding
|
||||||
import com.github.libretube.db.DatabaseHolder.Database
|
import com.github.libretube.db.DatabaseHolder.Database
|
||||||
import com.github.libretube.db.obj.DownloadWithItems
|
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.obj.DownloadStatus
|
||||||
import com.github.libretube.receivers.DownloadReceiver
|
import com.github.libretube.receivers.DownloadReceiver
|
||||||
import com.github.libretube.services.DownloadService
|
import com.github.libretube.services.DownloadService
|
||||||
import com.github.libretube.services.OfflinePlayerService
|
|
||||||
import com.github.libretube.ui.adapters.DownloadsAdapter
|
import com.github.libretube.ui.adapters.DownloadsAdapter
|
||||||
import com.github.libretube.ui.base.DynamicLayoutManagerFragment
|
import com.github.libretube.ui.base.DynamicLayoutManagerFragment
|
||||||
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
import com.github.libretube.ui.viewholders.DownloadsViewHolder
|
||||||
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
||||||
import kotlin.io.path.fileSize
|
import kotlin.io.path.fileSize
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.Job
|
import kotlinx.coroutines.Job
|
||||||
@ -83,6 +83,7 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
|
|||||||
|
|
||||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||||
super.onViewCreated(view, savedInstanceState)
|
super.onViewCreated(view, savedInstanceState)
|
||||||
|
binding.deleteAll.isInvisible = true
|
||||||
|
|
||||||
val dbDownloads = runBlocking(Dispatchers.IO) {
|
val dbDownloads = runBlocking(Dispatchers.IO) {
|
||||||
Database.downloadDao().getAll()
|
Database.downloadDao().getAll()
|
||||||
@ -93,7 +94,6 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
|
|||||||
|
|
||||||
binding.downloadsEmpty.isGone = true
|
binding.downloadsEmpty.isGone = true
|
||||||
binding.downloads.isVisible = true
|
binding.downloads.isVisible = true
|
||||||
|
|
||||||
val adapter = DownloadsAdapter(requireContext(), downloads) {
|
val adapter = DownloadsAdapter(requireContext(), downloads) {
|
||||||
var isDownloading = false
|
var isDownloading = false
|
||||||
val ids = it.downloadItems
|
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 {
|
binding.shuffleBackground.setOnClickListener {
|
||||||
BackgroundHelper.playOnBackgroundOffline(requireContext(), null)
|
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() {
|
override fun onStart() {
|
||||||
if (DownloadService.IS_DOWNLOAD_RUNNING) {
|
if (DownloadService.IS_DOWNLOAD_RUNNING) {
|
||||||
val intent = Intent(requireContext(), DownloadService::class.java)
|
val intent = Intent(requireContext(), DownloadService::class.java)
|
||||||
@ -168,6 +190,7 @@ class DownloadsFragment : DynamicLayoutManagerFragment() {
|
|||||||
super.onStart()
|
super.onStart()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
override fun onResume() {
|
override fun onResume() {
|
||||||
super.onResume()
|
super.onResume()
|
||||||
val filter = IntentFilter()
|
val filter = IntentFilter()
|
||||||
|
@ -34,6 +34,18 @@
|
|||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:visibility="gone" />
|
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
|
<com.google.android.material.floatingactionbutton.FloatingActionButton
|
||||||
android:id="@+id/shuffle_background"
|
android:id="@+id/shuffle_background"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
@ -286,6 +286,7 @@
|
|||||||
<string name="device_info">Device Info</string>
|
<string name="device_info">Device Info</string>
|
||||||
<string name="audio_video_summary">Quality and format</string>
|
<string name="audio_video_summary">Quality and format</string>
|
||||||
<string name="delete">Delete from downloads</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="renamePlaylist">Rename playlist</string>
|
||||||
<string name="wifi">Wi-Fi</string>
|
<string name="wifi">Wi-Fi</string>
|
||||||
<string name="mobile_data">Mobile data</string>
|
<string name="mobile_data">Mobile data</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user