@@ -5,19 +5,17 @@ import android.view.View
55import android.view.ViewGroup
66import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
77import com.simplemobiletools.commons.activities.BaseSimpleActivity
8- import com.simplemobiletools.commons.extensions.deleteFiles
9- import com.simplemobiletools.commons.extensions.getFilenameFromPath
108import com.simplemobiletools.commons.extensions.highlightTextPart
119import com.simplemobiletools.commons.extensions.setupViewBackground
1210import com.simplemobiletools.commons.helpers.ensureBackgroundThread
13- import com.simplemobiletools.commons.models.FileDirItem
1411import com.simplemobiletools.commons.views.MyRecyclerView
1512import com.simplemobiletools.musicplayer.R
1613import com.simplemobiletools.musicplayer.databinding.ItemPlaylistBinding
1714import com.simplemobiletools.musicplayer.dialogs.NewPlaylistDialog
1815import com.simplemobiletools.musicplayer.dialogs.RemovePlaylistDialog
1916import com.simplemobiletools.musicplayer.extensions.audioHelper
2017import com.simplemobiletools.musicplayer.extensions.config
18+ import com.simplemobiletools.musicplayer.inlines.indexOfFirstOrNull
2119import com.simplemobiletools.musicplayer.models.Events
2220import com.simplemobiletools.musicplayer.models.Playlist
2321import org.greenrobot.eventbus.EventBus
@@ -56,59 +54,38 @@ class PlaylistsAdapter(
5654 }
5755
5856 private fun askConfirmDelete () {
59- RemovePlaylistDialog (context) { delete ->
60- val ids = getSelectedItems().map { it.id } as ArrayList <Int >
61- if (delete) {
57+ RemovePlaylistDialog (context) { deleteFiles ->
58+ val playlists = getSelectedItems().toMutableList() as ArrayList <Playlist >
59+ val ids = playlists.map { it.id } as ArrayList <Int >
60+ if (deleteFiles) {
6261 ensureBackgroundThread {
63- deletePlaylistSongs(ids) {
64- removePlaylists()
62+ val tracksToDelete = ids.flatMap { context.audioHelper.getPlaylistTracks(it) }
63+ context.deleteTracks(tracksToDelete) {
64+ removePlaylists(playlists)
6565 }
6666 }
6767 } else {
68- removePlaylists()
68+ removePlaylists(playlists )
6969 }
7070 }
7171 }
7272
73- private fun deletePlaylistSongs (ids : ArrayList <Int >, callback : () -> Unit ) {
74- var cnt = ids.size
75- ids.map { id ->
76- val paths = context.audioHelper.getPlaylistTracks(id).map { it.path }
77- val fileDirItems = paths.map { FileDirItem (it, it.getFilenameFromPath()) } as ArrayList <FileDirItem >
78- context.deleteFiles(fileDirItems) {
79- if (-- cnt <= 0 ) {
80- callback()
81- }
82- }
83- }
84- }
85-
86- private fun removePlaylists () {
87- val playlistsToDelete = ArrayList <Playlist >(selectedKeys.size)
88- val positions = ArrayList <Int >()
89- for (key in selectedKeys) {
90- val playlist = getItemWithKey(key) ? : continue
91- val position = items.indexOfFirst { it.id == key }
92- if (position != - 1 ) {
93- positions.add(position + positionOffset)
94- }
95- playlistsToDelete.add(playlist)
96- }
97-
98- items.removeAll(playlistsToDelete.toSet())
73+ private fun removePlaylists (playlistsToDelete : ArrayList <Playlist >) {
74+ val positions = playlistsToDelete.mapNotNull { playlist ->
75+ items.indexOfFirstOrNull { it.id == playlist.id }
76+ } as ArrayList <Int >
9977
10078 ensureBackgroundThread {
10179 context.audioHelper.deletePlaylists(playlistsToDelete)
10280 context.runOnUiThread {
81+ items.removeAll(playlistsToDelete.toSet())
10382 removeSelectedItems(positions)
10483 }
10584
10685 EventBus .getDefault().post(Events .PlaylistsUpdated ())
10786 }
10887 }
10988
110- private fun getItemWithKey (key : Int ): Playlist ? = items.firstOrNull { it.id == key }
111-
11289 private fun showRenameDialog () {
11390 NewPlaylistDialog (context, items[getItemKeyPosition(selectedKeys.first())]) {
11491 context.runOnUiThread {
0 commit comments