diff options
| -rw-r--r-- | src/qmmpui/playlistmodel.cpp | 45 | ||||
| -rw-r--r-- | src/qmmpui/playlistmodel.h | 6 |
2 files changed, 49 insertions, 2 deletions
diff --git a/src/qmmpui/playlistmodel.cpp b/src/qmmpui/playlistmodel.cpp index 801df63cc..31add1f6f 100644 --- a/src/qmmpui/playlistmodel.cpp +++ b/src/qmmpui/playlistmodel.cpp @@ -511,6 +511,51 @@ void PlayListModel::removeTrack (PlayListItem *track) removeTrack (m_container->indexOf(track)); } +void PlayListModel::removeTracks(const QList<PlayListItem *> &items) +{ + int i = 0; + int select_after_delete = -1; + int flags = 0; + + while (!m_container->isEmpty() && i < m_container->count()) + { + PlayListItem *item = m_container->item(i); + if (!item->isGroup() && items.contains(item)) + { + flags |= removeTrackInternal(i); + + if(m_container->isEmpty()) + continue; + + select_after_delete = i; + } + else + i++; + } + + select_after_delete = qMin(select_after_delete, m_container->count() - 1); + + if(select_after_delete >= 0) + { + m_container->setSelected(select_after_delete, true); + flags |= SELECTION; + } + + m_play_state->prepare(); + + if(flags) + emit listChanged(flags); +} + +void PlayListModel::removeTracks(const QList<PlayListTrack *> &tracks) +{ + QList<PlayListItem *> items; + for(PlayListTrack *track : tracks) + items << dynamic_cast<PlayListItem *>(track); + + removeTracks(items); +} + void PlayListModel::removeSelection(bool inverted) { int i = 0; diff --git a/src/qmmpui/playlistmodel.h b/src/qmmpui/playlistmodel.h index 1b7ebc68e..f5fc6e9c6 100644 --- a/src/qmmpui/playlistmodel.h +++ b/src/qmmpui/playlistmodel.h @@ -463,11 +463,13 @@ public slots: /*! * Removes items with \b i index. */ - void removeTrack (int i); + void removeTrack(int i); /*! * Removes item \b item from playlist */ - void removeTrack (PlayListItem *track); + void removeTrack(PlayListItem *track); + void removeTracks(const QList<PlayListItem *> &items); + void removeTracks(const QList<PlayListTrack *> &tracks); /*! * Inverts selection (selects unselected items and unselects selected items) */ |
