playlistwithmediadata: allow removal of elements 39/9539/4
authorMatt Ranostay <matt.ranostay@konsulko.com>
Sun, 28 May 2017 04:27:18 +0000 (21:27 -0700)
committerMatt Ranostay <matt.ranostay@konsulko.com>
Tue, 30 May 2017 04:21:34 +0000 (21:21 -0700)
Currently removing elements from the playlist doesn't actually
remove them. This patchset removes them from the underlaying
model.

Change-Id: Idf52f05b25bb236e91633e3e1e6e84b5b7f77665
Bug-AGL: SPEC-630
Signed-off-by: Matt Ranostay <matt.ranostay@konsulko.com>
app/playlistwithmetadata.cpp

index 28bd0b2..9e2e614 100644 (file)
@@ -78,6 +78,25 @@ void PlaylistWithMetadata::Private::connect()
             q->endInsertRows();
         }));
 
+        connections.append(q->connect(source, &QAbstractListModel::rowsAboutToBeRemoved, [&](const QModelIndex &parent, int first, int last) {
+            Q_UNUSED(parent)
+            q->beginRemoveRows(QModelIndex(), first, last);
+        }));
+        connections.append(q->connect(source, &QAbstractListModel::rowsRemoved, [&](const QModelIndex &parent, int first, int last) {
+            Q_UNUSED(parent)
+            for (int i = last; i >= first; --i) {
+                QUrl url = urls.at(i);
+                urls.removeAt(i);
+
+                players.remove(url);
+                title.remove(url);
+                artist.remove(url);
+                coverArt.remove(url);
+                duration.remove(url);
+            }
+            q->endRemoveRows();
+        }));
+
         int count = source->rowCount();
         if (count > 0) {
             q->beginInsertRows(QModelIndex(), 0, count);