aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDominik Holland <dominik.holland@pelagicore.com>2017-11-27 14:27:22 +0100
committerDominik Holland <dominik.holland@pelagicore.com>2017-11-28 13:39:58 +0000
commitda3d3770f1ba310e0879b1767cf436c5bea67da4 (patch)
treeffa0ea66904398ff0a4216948595995441fd7145
parent37d58d9318eabf2985a3b057dd1fbfa2ce0c456d (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.cpp35
-rw-r--r--src/plugins/ivimedia/media_simulator/searchandbrowsebackend.h2
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