defuze.me
Client
|
00001 #include "playlist.hpp" 00002 #include "parser.hpp" 00003 00004 #include <QSqlQuery> 00005 #include <QDebug> 00006 00007 using namespace Playlists; 00008 00009 Playlist::Playlist(int id) 00010 { 00011 this->trackList = new QList<Library::AudioTrack*>(); 00012 QSqlQuery query; 00013 query.prepare("SELECT id, name, is_dynamic, definition " 00014 "FROM playlists WHERE id = :id LIMIT 1"); 00015 query.bindValue(":id", id); 00016 query.exec(); 00017 if (query.first()) 00018 { 00019 this->id = query.value(0).toInt(); 00020 this->name = query.value(1).toString(); 00021 this->isDynamic = query.value(2).toBool(); 00022 QList<QVariant> list = Network::JsonParser().parse(query.value(3).toByteArray()).toList(); 00023 this->trackList = new QList<Library::AudioTrack*>(); 00024 foreach (QVariant id, list) 00025 { 00026 this->trackList->append(Library::AudioTrack::getTrack(id.toInt())); 00027 } 00028 00029 } 00030 else 00031 qDebug() << "No playlist with id " << id; 00032 } 00033 00034 int Playlist::getId() const 00035 { 00036 return this->id; 00037 } 00038 00039 const QString &Playlist::getName() const 00040 { 00041 return this->name; 00042 } 00043 00044 bool Playlist::getIsDynamic() const 00045 { 00046 return this->isDynamic; 00047 } 00048 00049 void Playlist::setName(const QString newName) 00050 { 00051 this->name = newName; 00052 } 00053 00054 QList<Library::AudioTrack*> *Playlist::getTrackList() const 00055 { 00056 return this->trackList; 00057 } 00058 00059 void Playlist::addTrack(int trackId, int idx) 00060 { 00061 if (idx == -1) 00062 this->trackList->append(Library::AudioTrack::getTrack(trackId)); 00063 else 00064 this->trackList->insert(idx, Library::AudioTrack::getTrack(trackId)); 00065 00066 } 00067 00068 void Playlist::updatePlaylist() 00069 { 00070 QSqlQuery query; 00071 00072 query.prepare("UPDATE playlists SET name = :name, is_dynamic = :is_dynamic, definition = :definition " 00073 "WHERE id = :id"); 00074 query.bindValue(":name", name); 00075 query.bindValue(":is_dynamic", isDynamic); 00076 QList<QVariant> *list = new QList<QVariant>(); 00077 foreach (Library::AudioTrack* track, *trackList) 00078 { 00079 list->append(track->getUid()); 00080 } 00081 00082 query.bindValue(":definition", Network::JsonParser().serialize(*list)); 00083 query.bindValue(":id", id); 00084 if (!query.exec()) 00085 qDebug() << "Impossible playlist update " << id; 00086 }