#include "artist.h"
#include "recordprivate.h"
#include "artistprivate.h"
#include "song.h"
#include "mldebug.h"

Record::Record(Artist *parent) : MusicObject(parent)
{
    LogAlloc();
    pPtr = new RecordPrivate(this, static_cast<ArtistPrivate *>(parent->privatePtr()));
}

Record::~Record()
{
    delete pPtr;
    LogDelete();
}

Artist *Record::artist()
{
    return static_cast<Artist *>(parent());
}

void Record::setReleaseDate(const QDateTime &releaseDate)
{
    static_cast<RecordPrivate *>(pPtr)->setReleaseDate(releaseDate);
}

QDateTime Record::releaseDate() const
{
    return static_cast<RecordPrivate *>(pPtr)->releaseDate();
}

void Record::setCoverArtFile(const QString &fileName)
{
    static_cast<RecordPrivate *>(pPtr)->setCoverArtFile(fileName);
}

QString Record::coverArtFile() const
{
    return static_cast<RecordPrivate *>(pPtr)->coverArtFile();
}

QList<Song *> Record::songs() const
{
    QList<Song *> songs;
    static_cast<RecordPrivate *>(pPtr)->listSongs(songs);
    return songs;
}
