Skip to content

Commit fcf3239

Browse files
authored
Merge pull request #598 from naveensingh/fix_playlist_deletion
Fix playlist deletion
2 parents 1e37faa + 26ab64b commit fcf3239

File tree

2 files changed

+15
-37
lines changed

2 files changed

+15
-37
lines changed

app/src/main/kotlin/com/simplemobiletools/musicplayer/adapters/AlbumsTracksAdapter.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ class AlbumsTracksAdapter(
7272
override fun prepareActionMode(menu: Menu) {
7373
menu.apply {
7474
findItem(R.id.cab_play_next).isVisible = shouldShowPlayNext()
75+
findItem(R.id.cab_rename).isVisible = shouldShowRename()
7576
}
7677
}
7778

app/src/main/kotlin/com/simplemobiletools/musicplayer/adapters/PlaylistsAdapter.kt

Lines changed: 14 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,17 @@ import android.view.View
55
import android.view.ViewGroup
66
import com.qtalk.recyclerviewfastscroller.RecyclerViewFastScroller
77
import com.simplemobiletools.commons.activities.BaseSimpleActivity
8-
import com.simplemobiletools.commons.extensions.deleteFiles
9-
import com.simplemobiletools.commons.extensions.getFilenameFromPath
108
import com.simplemobiletools.commons.extensions.highlightTextPart
119
import com.simplemobiletools.commons.extensions.setupViewBackground
1210
import com.simplemobiletools.commons.helpers.ensureBackgroundThread
13-
import com.simplemobiletools.commons.models.FileDirItem
1411
import com.simplemobiletools.commons.views.MyRecyclerView
1512
import com.simplemobiletools.musicplayer.R
1613
import com.simplemobiletools.musicplayer.databinding.ItemPlaylistBinding
1714
import com.simplemobiletools.musicplayer.dialogs.NewPlaylistDialog
1815
import com.simplemobiletools.musicplayer.dialogs.RemovePlaylistDialog
1916
import com.simplemobiletools.musicplayer.extensions.audioHelper
2017
import com.simplemobiletools.musicplayer.extensions.config
18+
import com.simplemobiletools.musicplayer.inlines.indexOfFirstOrNull
2119
import com.simplemobiletools.musicplayer.models.Events
2220
import com.simplemobiletools.musicplayer.models.Playlist
2321
import 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

Comments
 (0)