mirror of
https://github.com/clementine-player/Clementine
synced 2024-12-16 19:31:02 +01:00
Create the correct type of playlist item from query generators
This commit is contained in:
parent
f11c494c44
commit
858a8650b8
@ -17,9 +17,12 @@
|
|||||||
|
|
||||||
#include "playlistitem.h"
|
#include "playlistitem.h"
|
||||||
#include "songplaylistitem.h"
|
#include "songplaylistitem.h"
|
||||||
|
#include "library/library.h"
|
||||||
#include "library/libraryplaylistitem.h"
|
#include "library/libraryplaylistitem.h"
|
||||||
#include "radio/jamendoplaylistitem.h"
|
#include "radio/jamendoplaylistitem.h"
|
||||||
|
#include "radio/jamendoservice.h"
|
||||||
#include "radio/magnatuneplaylistitem.h"
|
#include "radio/magnatuneplaylistitem.h"
|
||||||
|
#include "radio/magnatuneservice.h"
|
||||||
#include "radio/radioplaylistitem.h"
|
#include "radio/radioplaylistitem.h"
|
||||||
|
|
||||||
#include <QtConcurrentRun>
|
#include <QtConcurrentRun>
|
||||||
@ -47,6 +50,18 @@ PlaylistItem* PlaylistItem::NewFromType(const QString& type) {
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PlaylistItem* PlaylistItem::NewFromSongsTable(const QString& table, const Song& song) {
|
||||||
|
if (table == Library::kSongsTable)
|
||||||
|
return new LibraryPlaylistItem(song);
|
||||||
|
if (table == MagnatuneService::kSongsTable)
|
||||||
|
return new MagnatunePlaylistItem(song);
|
||||||
|
if (table == JamendoService::kSongsTable)
|
||||||
|
return new JamendoPlaylistItem(song);
|
||||||
|
|
||||||
|
qWarning() << "Invalid PlaylistItem songs table:" << table;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void PlaylistItem::BindToQuery(QSqlQuery* query) const {
|
void PlaylistItem::BindToQuery(QSqlQuery* query) const {
|
||||||
query->bindValue(1, type());
|
query->bindValue(1, type());
|
||||||
query->bindValue(2, DatabaseValue(Column_LibraryId));
|
query->bindValue(2, DatabaseValue(Column_LibraryId));
|
||||||
|
@ -34,6 +34,7 @@ class PlaylistItem : public boost::enable_shared_from_this<PlaylistItem> {
|
|||||||
virtual ~PlaylistItem() {}
|
virtual ~PlaylistItem() {}
|
||||||
|
|
||||||
static PlaylistItem* NewFromType(const QString& type);
|
static PlaylistItem* NewFromType(const QString& type);
|
||||||
|
static PlaylistItem* NewFromSongsTable(const QString& table, const Song& song);
|
||||||
|
|
||||||
enum Option {
|
enum Option {
|
||||||
Default = 0x00,
|
Default = 0x00,
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
#include "querygenerator.h"
|
#include "querygenerator.h"
|
||||||
#include "library/librarybackend.h"
|
#include "library/librarybackend.h"
|
||||||
#include "library/libraryplaylistitem.h"
|
|
||||||
|
|
||||||
#include <QtDebug>
|
#include <QtDebug>
|
||||||
|
|
||||||
@ -81,7 +80,8 @@ PlaylistItemList QueryGenerator::GenerateMore(int count) {
|
|||||||
SongList songs = backend_->FindSongs(search_copy);
|
SongList songs = backend_->FindSongs(search_copy);
|
||||||
PlaylistItemList items;
|
PlaylistItemList items;
|
||||||
foreach (const Song& song, songs) {
|
foreach (const Song& song, songs) {
|
||||||
items << PlaylistItemPtr(new LibraryPlaylistItem(song));
|
items << PlaylistItemPtr(PlaylistItem::NewFromSongsTable(
|
||||||
|
backend_->songs_table(), song));
|
||||||
previous_ids_ << song.id();
|
previous_ids_ << song.id();
|
||||||
|
|
||||||
if (previous_ids_.count() > kDynamicFuture + kDynamicHistory)
|
if (previous_ids_.count() > kDynamicFuture + kDynamicHistory)
|
||||||
|
Loading…
Reference in New Issue
Block a user