File indexing completed on 2024-05-05 04:48:50

0001 /****************************************************************************************
0002  * Copyright (c) 2011 Lucas Lira Gomes <x8lucas8x@gmail.com>                            *
0003  *                                                                                      *
0004  * This program is free software; you can redistribute it and/or modify it under        *
0005  * the terms of the GNU General Public License as published by the Free Software        *
0006  * Foundation; either version 2 of the License, or (at your option) any later           *
0007  * version.                                                                             *
0008  *                                                                                      *
0009  * This program is distributed in the hope that it will be useful, but WITHOUT ANY      *
0010  * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A      *
0011  * PARTICULAR PURPOSE. See the GNU General Public License for more details.             *
0012  *                                                                                      *
0013  * You should have received a copy of the GNU General Public License along with         *
0014  * this program.  If not, see <http://www.gnu.org/licenses/>.                           *
0015  ****************************************************************************************/
0016 
0017 #ifndef SYNCEDPODCAST_H
0018 #define SYNCEDPODCAST_H
0019 
0020 #include "core/podcasts/PodcastMeta.h"
0021 #include "playlistmanager/SyncedPlaylist.h"
0022 
0023 class SyncedPodcast : public SyncedPlaylist, public Podcasts::PodcastChannel
0024 {
0025     public:
0026         explicit SyncedPodcast( Podcasts::PodcastChannelPtr podcast );
0027         ~SyncedPodcast() override {}
0028 
0029         //Playlist virtual methods
0030         QString name() const override { return title(); }
0031 
0032         //PodcastMetaCommon methods
0033         QString title() const override { return m_master->title(); }
0034         QString description() const override { return m_master->description(); }
0035         QStringList keywords() const override { return m_master->keywords(); }
0036         QString subtitle() const override { return m_master->subtitle(); }
0037         QString summary() const override { return m_master->summary(); }
0038         QString author() const override { return m_master->author(); }
0039 
0040         //Podcasts::PodcastChannel methods
0041         QUrl url() const override { return m_master->url(); }
0042         QUrl webLink() const override { return m_master->webLink(); }
0043         bool hasImage() const override { return m_master->hasImage(); }
0044         QUrl imageUrl() const override { return m_master->imageUrl(); }
0045         QImage image() const override { return m_master->image(); }
0046         QString copyright() const override { return m_master->copyright(); }
0047         QStringList labels() const override { return m_master->labels(); }
0048         QDate subscribeDate() const override { return m_master->subscribeDate(); }
0049 
0050         void setUrl( const QUrl &url ) override { m_master->setUrl( url ); }
0051         void setWebLink( const QUrl &link ) override { m_master->setWebLink( link ); }
0052         void setImage( const QImage &image ) override { m_master->setImage( image ); }
0053         void setImageUrl( const QUrl &imageUrl ) override { m_master->setImageUrl( imageUrl ); }
0054         void setCopyright( const QString &copyright ) override { m_master->setCopyright( copyright ); }
0055         void setLabels( const QStringList &labels ) override { m_master->setLabels( labels ); }
0056         void addLabel( const QString &label ) override { m_master->addLabel( label ); }
0057         void setSubscribeDate( const QDate &date ) override { m_master->setSubscribeDate( date ); }
0058 
0059         Podcasts::PodcastEpisodePtr addEpisode( const Podcasts::PodcastEpisodePtr &episode ) override
0060         {
0061             return m_master->addEpisode( episode );
0062         }
0063         Podcasts::PodcastEpisodeList episodes() const override { return m_master->episodes(); }
0064 
0065         bool load( QTextStream &stream ) { return m_master->load( stream ); }
0066 
0067         //Settings
0068         virtual QUrl saveLocation() const { return m_master->saveLocation(); }
0069         virtual bool autoScan() const { return m_master->autoScan(); }
0070         virtual bool hasPurge() const { return m_master->hasPurge(); }
0071         virtual int purgeCount() const { return m_master->purgeCount(); }
0072 
0073         void setSaveLocation( const QUrl &url ) { m_master->setSaveLocation( url ); }
0074         void setAutoScan( bool autoScan ) { m_master->setAutoScan( autoScan ); }
0075         void setFetchType( Podcasts::PodcastChannel::FetchType fetchType )
0076         {
0077             m_master->setFetchType( fetchType );
0078         }
0079         void setPurge( bool purge ) { m_master->setPurge( purge ); }
0080         void setPurgeCount( int purgeCount ) { m_master->setPurgeCount( purgeCount ); }
0081 
0082     private:
0083         Podcasts::PodcastChannelPtr m_master;
0084 };
0085 
0086 typedef AmarokSharedPointer<SyncedPodcast> SyncedPodcastPtr;
0087 typedef QList<SyncedPodcastPtr> SyncedPodcastList;
0088 
0089 Q_DECLARE_METATYPE( SyncedPodcastPtr )
0090 Q_DECLARE_METATYPE( SyncedPodcastList )
0091 
0092 #endif // SYNCEDPODCAST_H