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