18
18
#include "playlistitem.h"
19
19
#include "songplaylistitem.h"
20
#include "core/logging.h"
21
#include "core/song.h"
22
#include "internet/jamendoplaylistitem.h"
23
#include "internet/jamendoservice.h"
24
#include "internet/magnatuneplaylistitem.h"
25
#include "internet/magnatuneservice.h"
26
#include "internet/internetplaylistitem.h"
20
27
#include "library/library.h"
21
28
#include "library/libraryplaylistitem.h"
22
#include "radio/jamendoplaylistitem.h"
23
#include "radio/jamendoservice.h"
24
#include "radio/magnatuneplaylistitem.h"
25
#include "radio/magnatuneservice.h"
26
#include "radio/radioplaylistitem.h"
28
31
#include <QtConcurrentRun>
31
PlaylistItem::SpecialLoadResult::SpecialLoadResult(
32
Type type, const QUrl& original_url, const QUrl& media_url)
33
: type_(type), original_url_(original_url), media_url_(media_url)
37
35
PlaylistItem* PlaylistItem::NewFromType(const QString& type) {
38
36
if (type == "Library")
43
41
return new JamendoPlaylistItem(type);
44
42
if (type == "Stream" || type == "File")
45
43
return new SongPlaylistItem(type);
47
return new RadioPlaylistItem(type);
44
if (type == "Internet" || type == "Radio")
45
return new InternetPlaylistItem("Internet");
49
qWarning() << "Invalid PlaylistItem type:" << type;
47
qLog(Warning) << "Invalid PlaylistItem type:" << type;
58
56
if (table == JamendoService::kSongsTable)
59
57
return new JamendoPlaylistItem(song);
61
qWarning() << "Invalid PlaylistItem songs table:" << table;
59
qLog(Warning) << "Invalid PlaylistItem songs table:" << table;
65
63
void PlaylistItem::BindToQuery(QSqlQuery* query) const {
66
query->bindValue(1, type());
67
query->bindValue(2, DatabaseValue(Column_LibraryId));
68
query->bindValue(3, DatabaseValue(Column_Url));
69
query->bindValue(4, DatabaseValue(Column_Title));
70
query->bindValue(5, DatabaseValue(Column_Artist));
71
query->bindValue(6, DatabaseValue(Column_Album));
72
query->bindValue(7, DatabaseValue(Column_Length));
73
query->bindValue(8, DatabaseValue(Column_RadioService));
74
query->bindValue(9, DatabaseValue(Column_Beginning));
75
query->bindValue(10, DatabaseValue(Column_CuePath));
64
query->bindValue(":type", type());
65
query->bindValue(":library_id", DatabaseValue(Column_LibraryId));
66
query->bindValue(":radio_service", DatabaseValue(Column_InternetService));
68
DatabaseSongMetadata().BindToQuery(query);
78
71
void PlaylistItem::SetTemporaryMetadata(const Song& metadata) {