@@ -55,6 +55,7 @@
|
||||
#include "songplaylistitem.h"
|
||||
#include "playlistbackend.h"
|
||||
#include "playlistparsers/cueparser.h"
|
||||
#include "smartplaylists/playlistgenerator.h"
|
||||
|
||||
using std::placeholders::_1;
|
||||
|
||||
@@ -121,7 +122,7 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags fl
|
||||
}
|
||||
|
||||
QSqlQuery q(db);
|
||||
q.prepare("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite FROM playlists " + condition + " ORDER BY ui_order");
|
||||
q.prepare("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists " + condition + " ORDER BY ui_order");
|
||||
q.exec();
|
||||
if (db_->CheckErrors(q)) return ret;
|
||||
|
||||
@@ -133,6 +134,9 @@ PlaylistBackend::PlaylistList PlaylistBackend::GetPlaylists(GetPlaylistsFlags fl
|
||||
p.special_type = q.value(3).toString();
|
||||
p.ui_path = q.value(4).toString();
|
||||
p.favorite = q.value(5).toBool();
|
||||
p.dynamic_type = PlaylistGenerator::Type(q.value(6).toInt());
|
||||
p.dynamic_data = q.value(7).toByteArray();
|
||||
p.dynamic_backend = q.value(8).toString();
|
||||
ret << p;
|
||||
}
|
||||
|
||||
@@ -146,7 +150,7 @@ PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(int id) {
|
||||
QSqlDatabase db(db_->Connect());
|
||||
|
||||
QSqlQuery q(db);
|
||||
q.prepare("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite FROM playlists WHERE ROWID=:id");
|
||||
q.prepare("SELECT ROWID, name, last_played, special_type, ui_path, is_favorite, dynamic_playlist_type, dynamic_playlist_data, dynamic_playlist_backend FROM playlists WHERE ROWID=:id");
|
||||
|
||||
q.bindValue(":id", id);
|
||||
q.exec();
|
||||
@@ -161,6 +165,9 @@ PlaylistBackend::Playlist PlaylistBackend::GetPlaylist(int id) {
|
||||
p.special_type = q.value(3).toString();
|
||||
p.ui_path = q.value(4).toString();
|
||||
p.favorite = q.value(5).toBool();
|
||||
p.dynamic_type = PlaylistGenerator::Type(q.value(6).toInt());
|
||||
p.dynamic_data = q.value(7).toByteArray();
|
||||
p.dynamic_backend = q.value(8).toString();
|
||||
|
||||
return p;
|
||||
|
||||
@@ -315,13 +322,13 @@ PlaylistItemPtr PlaylistBackend::RestoreCueData(PlaylistItemPtr item, std::share
|
||||
|
||||
}
|
||||
|
||||
void PlaylistBackend::SavePlaylistAsync(int playlist, const PlaylistItemList &items, int last_played) {
|
||||
void PlaylistBackend::SavePlaylistAsync(int playlist, const PlaylistItemList &items, int last_played, PlaylistGeneratorPtr dynamic) {
|
||||
|
||||
metaObject()->invokeMethod(this, "SavePlaylist", Qt::QueuedConnection, Q_ARG(int, playlist), Q_ARG(PlaylistItemList, items), Q_ARG(int, last_played));
|
||||
metaObject()->invokeMethod(this, "SavePlaylist", Qt::QueuedConnection, Q_ARG(int, playlist), Q_ARG(PlaylistItemList, items), Q_ARG(int, last_played), Q_ARG(PlaylistGeneratorPtr, dynamic));
|
||||
|
||||
}
|
||||
|
||||
void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList &items, int last_played) {
|
||||
void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList &items, int last_played, PlaylistGeneratorPtr dynamic) {
|
||||
|
||||
QMutexLocker l(db_->Mutex());
|
||||
QSqlDatabase db(db_->Connect());
|
||||
@@ -333,7 +340,7 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList &items,
|
||||
QSqlQuery insert(db);
|
||||
insert.prepare("INSERT INTO playlist_items (playlist, type, collection_id, " + Song::kColumnSpec + ") VALUES (:playlist, :type, :collection_id, " + Song::kBindSpec + ")");
|
||||
QSqlQuery update(db);
|
||||
update.prepare("UPDATE playlists SET last_played=:last_played WHERE ROWID=:playlist");
|
||||
update.prepare("UPDATE playlists SET last_played=:last_played, dynamic_playlist_type=:dynamic_type, dynamic_playlist_data=:dynamic_data, dynamic_playlist_backend=:dynamic_backend WHERE ROWID=:playlist");
|
||||
|
||||
ScopedTransaction transaction(&db);
|
||||
|
||||
@@ -353,6 +360,16 @@ void PlaylistBackend::SavePlaylist(int playlist, const PlaylistItemList &items,
|
||||
|
||||
// Update the last played track number
|
||||
update.bindValue(":last_played", last_played);
|
||||
if (dynamic) {
|
||||
update.bindValue(":dynamic_type", dynamic->type());
|
||||
update.bindValue(":dynamic_data", dynamic->Save());
|
||||
update.bindValue(":dynamic_backend", dynamic->collection()->songs_table());
|
||||
}
|
||||
else {
|
||||
update.bindValue(":dynamic_type", 0);
|
||||
update.bindValue(":dynamic_data", QByteArray());
|
||||
update.bindValue(":dynamic_backend", QString());
|
||||
}
|
||||
update.bindValue(":playlist", playlist);
|
||||
update.exec();
|
||||
if (db_->CheckErrors(update)) return;
|
||||
|
||||
Reference in New Issue
Block a user