1 #ifndef ABSTRACTUTILSTREAM_H 2 #define ABSTRACTUTILSTREAM_H 3 4 #include "Utils/Pimpl.h" 5 6 class QString; 7 8 class Station 9 { 10 public: 11 Station(); 12 virtual ~Station(); 13 Station(const Station& other); 14 15 Station& station(const Station& other); 16 17 virtual QString url() const=0; 18 virtual QString name() const=0; 19 }; 20 21 class Stream : 22 public Station 23 { 24 PIMPL(Stream) 25 26 public: 27 Stream(); 28 Stream(const QString& name, const QString& url); 29 Stream(const Stream& other); 30 ~Stream() override; 31 32 Stream& operator=(const Stream& stream); 33 34 QString name() const override; 35 void setName(const QString& name); 36 37 QString url() const override; 38 void setUrl(const QString& url); 39 }; 40 41 class Podcast : 42 public Station 43 { 44 PIMPL(Podcast) 45 46 public: 47 Podcast(); 48 Podcast(const QString& name, const QString& url, bool reversed=false); 49 Podcast(const Podcast& other); 50 51 ~Podcast() override; 52 53 QString name() const override; 54 void setName(const QString& name); 55 56 QString url() const override; 57 void setUrl(const QString& url); 58 59 bool reversed() const; 60 void setReversed(bool b); 61 62 Podcast& operator=(const Podcast& podcast); 63 }; 64 65 using StationPtr=std::shared_ptr<Station>; 66 67 68 #endif // ABSTRACTUTILSTREAM_H 69