feat(qt): multi-select removes tracks from a playlist

The playlist view's multi-select toolbar gains "Remove from playlist" for
the owner of the open playlist, behind a confirm modal that names the
count. One dispatcher (`playlist_remove_tracks`) routes the picked row ids
by the open document's kind: a local playlist removes by stored position
(descending, one blocking pass, then reload); a mixed playlist drops its
sidecar rows and batches the remaining catalog ids into a single
`remove_tracks_from_playlist` call with an optimistic document patch.

Row positions are resolved before any delete so the compaction the local
repo performs after each removal cannot shift a later target.

cc
This commit is contained in:
vicrodh committed 2026-09-14 02:29:16 -06:00
1 parent 1c45c7f2b9
commit e0e1bdfbee
13 files changed
+215 -3

No files matched your search

@@ -7719,3 +7719,7 @@ msgstr "Bild wählen…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "System-Hintergrundbild"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} Titel werden aus dieser Playlist entfernt."
@@ -3374,3 +3374,7 @@ msgstr "Choose image…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "System wallpaper"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} tracks will be removed from this playlist."
@@ -7725,3 +7725,7 @@ msgstr "Elegir imagen…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "Fondo del sistema"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "Se quitarán {} pistas de esta playlist."
@@ -7717,3 +7717,7 @@ msgstr "Choisir une image…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "Fond d'écran du système"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} titres seront retirés de cette playlist."
@@ -7700,3 +7700,7 @@ msgstr "画像を選択…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "システムの壁紙"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} 曲をこのプレイリストから削除します。"
@@ -7707,3 +7707,7 @@ msgstr "Afbeelding kiezen…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "Systeemachtergrond"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} nummers worden uit deze afspeellijst verwijderd."
@@ -7717,3 +7717,7 @@ msgstr "Escolher imagem…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "Papel de parede do sistema"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "{} faixas serão removidas desta playlist."
@@ -7738,3 +7738,7 @@ msgstr "Выбрать изображение…"
#: crates/qbz-qt/src/settings_qt.rs crates/qbz-qt/qml/settings/AppearanceSettings.qml
msgid "System wallpaper"
msgstr "Обои системы"
#: crates/qbz-qt/qml/views/PlaylistView.qml
msgid "{} tracks will be removed from this playlist."
msgstr "Из этого плейлиста будет удалено {} треков."