diff options
author | Dominik Holland <dominik.holland@pelagicore.com> | 2017-11-27 14:27:22 +0100 |
---|---|---|
committer | Dominik Holland <dominik.holland@pelagicore.com> | 2017-11-28 13:39:58 +0000 |
commit | da3d3770f1ba310e0879b1767cf436c5bea67da4 (patch) | |
tree | ffa0ea66904398ff0a4216948595995441fd7145 | |
parent | 37d58d9318eabf2985a3b057dd1fbfa2ce0c456d (diff) |
media_simulator: Add support for adding Artists and Albums to the PlayQueue
The media_simulator will now add all tracks of the given Album or Artist
when using the insert function
Change-Id: Ie66f8a296b1f7402db5b298e896b25426ee3175c
Reviewed-by: Robert Griebl <robert.griebl@pelagicore.com>
-rw-r--r-- | src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp | 35 | ||||
-rw-r--r-- | src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h | 2 |
2 files changed, 26 insertions, 11 deletions
diff --git a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp index e4a7784..5e925e7 100644 --- a/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp +++ b/src/plugins/ivimedia/media_simulator/mediaplayerbackend.cpp @@ -175,16 +175,31 @@ void MediaPlayerBackend::fetchData(int start, int count) void MediaPlayerBackend::insert(int index, const QIviPlayableItem *item) { - if (item->type() != "audiotrack") - return; - - int track_index = item->id().toInt(); - - QString queryString = QString(QLatin1String("UPDATE queue SET qindex = qindex + 1 WHERE qindex >= %1;" - "INSERT INTO queue(qindex, track_index) VALUES( %1, %2);" - "SELECT track.id, artistName, albumName, trackName, genre, number, file, coverArtUrl FROM track JOIN queue ON queue.track_index=track.id WHERE qindex=%1")) - .arg(index) - .arg(track_index); + QString queryString; + if (item->type() == "audiotrack") { + int track_index = item->id().toInt(); + queryString = QString(QLatin1String("UPDATE queue SET qindex = qindex + 1 WHERE qindex >= %1;" + "INSERT INTO queue(qindex, track_index) VALUES( %1, %2);" + "SELECT track.id, artistName, albumName, trackName, genre, number, file, coverArtUrl FROM track JOIN queue ON queue.track_index=track.id WHERE qindex=%1")) + .arg(index) + .arg(track_index); + } else { + QString whereClause; + if (item->type() == "artist") { + whereClause = QString("artistName == \"%1\"").arg(item->name()); + } else if (item->type() == "album") { + whereClause = QString("albumName == \"%1\"").arg(item->name()); + } else { + qWarning("Can't insert item: Given type is not supported."); + return; + } + queryString = QString(QLatin1String("UPDATE queue SET qindex = qindex + (SELECT count(*) from track WHERE %2) WHERE qindex >= %1;" + "INSERT INTO queue(qindex, track_index) SELECT (SELECT COUNT(*) FROM track t1 WHERE t1.id <= t2.id AND %2)" + "+ %1, id from track t2 WHERE %2;" + "SELECT track.id, artistName, albumName, trackName, genre, number, file, coverArtUrl FROM track JOIN queue ON queue.track_index=track.id ORDER BY queue.qindex LIMIT %1, (SELECT count(*) from track WHERE %2)")) + .arg(index) + .arg(whereClause); + } QStringList queries = queryString.split(';'); QtConcurrent::run(m_threadPool, this, diff --git a/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h b/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h index c990648..0b75341 100644 --- a/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h +++ b/src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h @@ -51,7 +51,7 @@ QT_FORWARD_DECLARE_CLASS(QThreadPool); -class SearchAndBrowseItem : public QIviSearchAndBrowseModelItem +class SearchAndBrowseItem : public QIviPlayableItem { Q_GADGET |