Clementine-audio-player-Mac.../src/podcasts/podcastepisode.h

91 lines
2.7 KiB
C++

/* This file is part of Clementine.
Copyright 2012, David Sansome <me@davidsansome.com>
Clementine is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
Clementine is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with Clementine. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef PODCASTS_PODCASTEPISODE_H_
#define PODCASTS_PODCASTEPISODE_H_
#include "core/song.h"
#include <QSharedDataPointer>
#include <QSqlQuery>
#include <QUrl>
#include <QVariantMap>
class Podcast;
class PodcastEpisode {
public:
PodcastEpisode();
PodcastEpisode(const PodcastEpisode& other);
~PodcastEpisode();
static const QStringList kColumns;
static const QString kColumnSpec;
static const QString kJoinSpec;
static const QString kBindSpec;
static const QString kUpdateSpec;
void InitFromQuery(const QSqlQuery& query);
void BindToQuery(QSqlQuery* query) const;
Song ToSong(const Podcast& podcast) const;
bool is_valid() const { return database_id() != -1; }
int database_id() const;
int podcast_database_id() const;
const QString& title() const;
const QString& description() const;
const QString& author() const;
const QDateTime& publication_date() const;
int duration_secs() const;
const QUrl& url() const;
bool listened() const;
const QDateTime& listened_date() const;
bool downloaded() const;
const QUrl& local_url() const;
const QVariantMap& extra() const;
QVariant extra(const QString& key) const;
void set_database_id(int v);
void set_podcast_database_id(int v);
void set_title(const QString& v);
void set_description(const QString& v);
void set_author(const QString& v);
void set_publication_date(const QDateTime& v);
void set_duration_secs(int v);
void set_url(const QUrl& v);
void set_listened(bool v);
void set_listened_date(const QDateTime& v);
void set_downloaded(bool v);
void set_local_url(const QUrl& v);
void set_extra(const QVariantMap& v);
void set_extra(const QString& key, const QVariant& value);
PodcastEpisode& operator=(const PodcastEpisode& other);
private:
struct Private;
QSharedDataPointer<Private> d;
};
Q_DECLARE_METATYPE(PodcastEpisode)
typedef QList<PodcastEpisode> PodcastEpisodeList;
Q_DECLARE_METATYPE(QList<PodcastEpisode>)
#endif // PODCASTS_PODCASTEPISODE_H_