1 /*
2  *  Copyright (C) 2005-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "AddonClass.h"
12 
13 #include <memory>
14 
15 namespace PVR
16 {
17 class CPVRChannel;
18 class CPVRRadioRDSInfoTag;
19 }
20 
21 namespace XBMCAddon
22 {
23   namespace xbmc
24   {
25     //
26     /// \defgroup python_InfoTagRadioRDS InfoTagRadioRDS
27     /// \ingroup python_xbmc
28     /// @{
29     /// @brief **Kodi's radio RDS info tag class.**
30     ///
31     /// \python_class{ InfoTagRadioRDS() }
32     ///
33     /// To get radio RDS info tag data of currently played PVR radio channel source.
34     ///
35     /// @note Info tag load is only be possible from present player class.\n
36     /// Also is all the data variable from radio channels and not known on beginning
37     /// of radio receiving.
38     ///
39     ///
40     ///--------------------------------------------------------------------------
41     ///
42     /// **Example:**
43     /// ~~~~~~~~~~~~~{.py}
44     /// ...
45     /// tag = xbmc.Player().getRadioRDSInfoTag()
46     ///
47     /// title  = tag.getTitle()
48     /// artist = tag.getArtist()
49     /// ...
50     /// ~~~~~~~~~~~~~
51     //
52     class InfoTagRadioRDS : public AddonClass
53     {
54     private:
55       std::shared_ptr<PVR::CPVRRadioRDSInfoTag> infoTag;
56 
57     public:
58 #ifndef SWIG
59       explicit InfoTagRadioRDS(const std::shared_ptr<PVR::CPVRChannel>& channel);
60 #endif
61       InfoTagRadioRDS();
62       ~InfoTagRadioRDS() override;
63 
64 #ifdef DOXYGEN_SHOULD_USE_THIS
65       ///
66       /// @ingroup python_InfoTagRadioRDS
67       /// @brief \python_func{ getTitle() }
68       /// Title of the item on the air; i.e. song title.
69       ///
70       /// @return Title
71       ///
72       getTitle();
73 #else
74       String getTitle();
75 #endif
76 
77 #ifdef DOXYGEN_SHOULD_USE_THIS
78       ///
79       /// @ingroup python_InfoTagRadioRDS
80       /// @brief \python_func{ getBand() }
81       /// Band of the item on air.
82       ///
83       /// @return Band
84       ///
85       getBand();
86 #else
87       String getBand();
88 #endif
89 
90 #ifdef DOXYGEN_SHOULD_USE_THIS
91       ///
92       /// @ingroup python_InfoTagRadioRDS
93       /// @brief \python_func{ getArtist() }
94       /// Artist of the item on air.
95       ///
96       /// @return Artist
97       ///
98       getArtist();
99 #else
100       String getArtist();
101 #endif
102 
103 #ifdef DOXYGEN_SHOULD_USE_THIS
104       ///
105       /// @ingroup python_InfoTagRadioRDS
106       /// @brief \python_func{ getComposer() }
107       /// Get the Composer of the music.
108       ///
109       /// @return Composer
110       ///
111       getComposer();
112 #else
113       String getComposer();
114 #endif
115 
116 #ifdef DOXYGEN_SHOULD_USE_THIS
117       ///
118       /// @ingroup python_InfoTagRadioRDS
119       /// @brief \python_func{ getConductor() }
120       /// Get the Conductor of the Band.
121       ///
122       /// @return Conductor
123       ///
124       getConductor();
125 #else
126       String getConductor();
127 #endif
128 
129 #ifdef DOXYGEN_SHOULD_USE_THIS
130       ///
131       /// @ingroup python_InfoTagRadioRDS
132       /// @brief \python_func{ getAlbum() }
133       /// Album of item on air.
134       ///
135       /// @return Album name
136       ///
137       getAlbum();
138 #else
139       String getAlbum();
140 #endif
141 
142 #ifdef DOXYGEN_SHOULD_USE_THIS
143       ///
144       /// @ingroup python_InfoTagRadioRDS
145       /// @brief \python_func{ getComment() }
146       /// Get Comment text from channel.
147       ///
148       /// @return Comment
149       ///
150       getComment();
151 #else
152       String getComment();
153 #endif
154 
155 #ifdef DOXYGEN_SHOULD_USE_THIS
156       ///
157       /// @ingroup python_InfoTagRadioRDS
158       /// @brief \python_func{ getAlbumTrackNumber() }
159       /// Get the album track number of currently sended music.
160       ///
161       /// @return Track Number
162       ///
163       getAlbumTrackNumber();
164 #else
165       int getAlbumTrackNumber();
166 #endif
167 
168 #ifdef DOXYGEN_SHOULD_USE_THIS
169       ///
170       /// @ingroup python_InfoTagRadioRDS
171       /// @brief \python_func{ getInfoNews() }
172       /// Get News informations.
173       ///
174       /// @return News Information
175       ///
176       getInfoNews();
177 #else
178       String getInfoNews();
179 #endif
180 
181 #ifdef DOXYGEN_SHOULD_USE_THIS
182       ///
183       /// @ingroup python_InfoTagRadioRDS
184       /// @brief \python_func{ getInfoNewsLocal() }
185       /// Get Local news informations.
186       ///
187       /// @return Local News Information
188       ///
189       getInfoNewsLocal();
190 #else
191       String getInfoNewsLocal();
192 #endif
193 
194 #ifdef DOXYGEN_SHOULD_USE_THIS
195       ///
196       /// @ingroup python_InfoTagRadioRDS
197       /// @brief \python_func{ getInfoSport() }
198       /// Get Sport informations.
199       ///
200       /// @return Sport Information
201       ///
202       getInfoSport();
203 #else
204       String getInfoSport();
205 #endif
206 
207 #ifdef DOXYGEN_SHOULD_USE_THIS
208       ///
209       /// @ingroup python_InfoTagRadioRDS
210       /// @brief \python_func{ getInfoStock() }
211       /// Get Stock informations.
212       ///
213       /// @return Stock Information
214       ///
215       getInfoStock();
216 #else
217       String getInfoStock();
218 #endif
219 
220 #ifdef DOXYGEN_SHOULD_USE_THIS
221       ///
222       /// @ingroup python_InfoTagRadioRDS
223       /// @brief \python_func{ getInfoWeather() }
224       /// Get Weather informations.
225       ///
226       /// @return Weather Information
227       ///
228       getInfoWeather();
229 #else
230       String getInfoWeather();
231 #endif
232 
233 #ifdef DOXYGEN_SHOULD_USE_THIS
234       ///
235       /// @ingroup python_InfoTagRadioRDS
236       /// @brief \python_func{ getInfoHoroscope() }
237       /// Get Horoscope informations.
238       ///
239       /// @return Horoscope Information
240       ///
241       getInfoHoroscope();
242 #else
243       String getInfoHoroscope();
244 #endif
245 
246 #ifdef DOXYGEN_SHOULD_USE_THIS
247       ///
248       /// @ingroup python_InfoTagRadioRDS
249       /// @brief \python_func{ getInfoCinema() }
250       /// Get Cinema informations.
251       ///
252       /// @return Cinema Information
253       ///
254       getInfoCinema();
255 #else
256       String getInfoCinema();
257 #endif
258 
259 #ifdef DOXYGEN_SHOULD_USE_THIS
260       ///
261       /// @ingroup python_InfoTagRadioRDS
262       /// @brief \python_func{ getInfoLottery() }
263       /// Get Lottery informations.
264       ///
265       /// @return Lottery Information
266       ///
267       getInfoLottery();
268 #else
269       String getInfoLottery();
270 #endif
271 
272 #ifdef DOXYGEN_SHOULD_USE_THIS
273       ///
274       /// @ingroup python_InfoTagRadioRDS
275       /// @brief \python_func{ getInfoOther() }
276       /// Get other informations.
277       ///
278       /// @return Other Information
279       ///
280       getInfoOther();
281 #else
282       String getInfoOther();
283 #endif
284 
285 #ifdef DOXYGEN_SHOULD_USE_THIS
286       ///
287       /// @ingroup python_InfoTagRadioRDS
288       /// @brief \python_func{ getEditorialStaff() }
289       /// Get Editorial Staff names.
290       ///
291       /// @return Editorial Staff
292       ///
293       getEditorialStaff();
294 #else
295       String getEditorialStaff();
296 #endif
297 
298 #ifdef DOXYGEN_SHOULD_USE_THIS
299       ///
300       /// @ingroup python_InfoTagRadioRDS
301       /// @brief \python_func{ getProgStation() }
302       /// Name describing station.
303       ///
304       /// @return Program Station
305       ///
306       getProgStation();
307 #else
308       String getProgStation();
309 #endif
310 
311 #ifdef DOXYGEN_SHOULD_USE_THIS
312       ///
313       /// @ingroup python_InfoTagRadioRDS
314       /// @brief \python_func{ getProgStyle() }
315       /// The the radio channel style currently used.
316       ///
317       /// @return Program Style
318       ///
319       getProgStyle();
320 #else
321       String getProgStyle();
322 #endif
323 
324 #ifdef DOXYGEN_SHOULD_USE_THIS
325       ///
326       /// @ingroup python_InfoTagRadioRDS
327       /// @brief \python_func{ getProgHost() }
328       /// Host of current radio show.
329       ///
330       /// @return Program Host
331       ///
332       getProgHost();
333 #else
334       String getProgHost();
335 #endif
336 
337 #ifdef DOXYGEN_SHOULD_USE_THIS
338       ///
339       /// @ingroup python_InfoTagRadioRDS
340       /// @brief \python_func{ getProgWebsite() }
341       /// Link to URL (web page) for radio station homepage.
342       ///
343       /// @return Program Website
344       ///
345       getProgWebsite();
346 #else
347       String getProgWebsite();
348 #endif
349 
350 #ifdef DOXYGEN_SHOULD_USE_THIS
351       ///
352       /// @ingroup python_InfoTagRadioRDS
353       /// @brief \python_func{ getProgNow() }
354       /// Current radio program show.
355       ///
356       /// @return Program Now
357       ///
358       getProgNow();
359 #else
360       String getProgNow();
361 #endif
362 
363 #ifdef DOXYGEN_SHOULD_USE_THIS
364       ///
365       /// @ingroup python_InfoTagRadioRDS
366       /// @brief \python_func{ getProgNext() }
367       /// Next program show.
368       ///
369       /// @return Program Next
370       ///
371       getProgNext();
372 #else
373       String getProgNext();
374 #endif
375 
376 #ifdef DOXYGEN_SHOULD_USE_THIS
377       ///
378       /// @ingroup python_InfoTagRadioRDS
379       /// @brief \python_func{ getPhoneHotline() }
380       /// Telephone number of the radio station's hotline.
381       ///
382       /// @return Phone Hotline
383       ///
384       getPhoneHotline();
385 #else
386       String getPhoneHotline();
387 #endif
388 
389 #ifdef DOXYGEN_SHOULD_USE_THIS
390       ///
391       /// @ingroup python_InfoTagRadioRDS
392       /// @brief \python_func{ getEMailHotline() }
393       /// Email address of the radio station's studio.
394       ///
395       /// @return EMail Hotline
396       ///
397       getEMailHotline();
398 #else
399       String getEMailHotline();
400 #endif
401 
402 #ifdef DOXYGEN_SHOULD_USE_THIS
403       ///
404       /// @ingroup python_InfoTagRadioRDS
405       /// @brief \python_func{ getPhoneStudio() }
406       /// Telephone number of the radio station's studio.
407       ///
408       /// @return Phone Studio
409       ///
410       getPhoneStudio();
411 #else
412       String getPhoneStudio();
413 #endif
414 
415 #ifdef DOXYGEN_SHOULD_USE_THIS
416       ///
417       /// @ingroup python_InfoTagRadioRDS
418       /// @brief \python_func{ getEMailStudio() }
419       /// Email address of radio station studio.
420       ///
421       /// @return EMail Studio
422       ///
423       getEMailStudio();
424 #else
425       String getEMailStudio();
426 #endif
427 
428 #ifdef DOXYGEN_SHOULD_USE_THIS
429       ///
430       /// @ingroup python_InfoTagRadioRDS
431       /// @brief \python_func{ getSMSStudio() }
432       /// SMS (Text Messaging) number for studio.
433       ///
434       /// @return SMS Studio
435       ///
436       getSMSStudio();
437 #else
438       String getSMSStudio();
439 #endif
440     };
441     //@}
442   }
443 }
444