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 "threads/CriticalSection.h" 12 #include "utils/IArchivable.h" 13 #include "utils/ISerializable.h" 14 15 #include <deque> 16 #include <string> 17 18 namespace PVR 19 { 20 21 class CPVRRadioRDSInfoTag final : public IArchivable, public ISerializable 22 { 23 public: 24 CPVRRadioRDSInfoTag(); 25 26 bool operator ==(const CPVRRadioRDSInfoTag& right) const; 27 bool operator !=(const CPVRRadioRDSInfoTag& right) const; 28 29 void Archive(CArchive& ar) override; 30 void Serialize(CVariant& value) const override; 31 32 void Clear(); 33 void ResetSongInformation(); 34 35 /**! Basic RDS related information */ 36 void SetSpeechActive(bool active); 37 void SetLanguage(const std::string& strLanguage); 38 const std::string& GetLanguage() const; 39 void SetCountry(const std::string& strCountry); 40 const std::string& GetCountry() const; 41 42 /**! RDS Radiotext related information */ 43 void SetTitle(const std::string& strTitle); 44 void SetBand(const std::string& strBand); 45 void SetArtist(const std::string& strArtist); 46 void SetComposer(const std::string& strComposer); 47 void SetConductor(const std::string& strConductor); 48 void SetAlbum(const std::string& strAlbum); 49 void SetComment(const std::string& strComment); 50 void SetAlbumTrackNumber(int track); 51 52 const std::string& GetTitle() const; 53 const std::string& GetBand() const; 54 const std::string& GetArtist() const; 55 const std::string& GetComposer() const; 56 const std::string& GetConductor() const; 57 const std::string& GetAlbum() const; 58 const std::string& GetComment() const; 59 int GetAlbumTrackNumber() const; 60 61 void SetProgStation(const std::string& strProgStation); 62 void SetProgStyle(const std::string& strProgStyle); 63 void SetProgHost(const std::string& strProgHost); 64 void SetProgWebsite(const std::string& strWebsite); 65 void SetProgNow(const std::string& strNow); 66 void SetProgNext(const std::string& strNext); 67 void SetPhoneHotline(const std::string& strHotline); 68 void SetEMailHotline(const std::string& strHotline); 69 void SetPhoneStudio(const std::string& strPhone); 70 void SetEMailStudio(const std::string& strEMail); 71 void SetSMSStudio(const std::string& strSMS); 72 73 const std::string& GetProgStation() const; 74 const std::string& GetProgStyle() const; 75 const std::string& GetProgHost() const; 76 const std::string& GetProgWebsite() const; 77 const std::string& GetProgNow() const; 78 const std::string& GetProgNext() const; 79 const std::string& GetPhoneHotline() const; 80 const std::string& GetEMailHotline() const; 81 const std::string& GetPhoneStudio() const; 82 const std::string& GetEMailStudio() const; 83 const std::string& GetSMSStudio() const; 84 85 void SetInfoNews(const std::string& strNews); 86 const std::string GetInfoNews() const; 87 88 void SetInfoNewsLocal(const std::string& strNews); 89 const std::string GetInfoNewsLocal() const; 90 91 void SetInfoSport(const std::string& strSport); 92 const std::string GetInfoSport() const; 93 94 void SetInfoStock(const std::string& strSport); 95 const std::string GetInfoStock() const; 96 97 void SetInfoWeather(const std::string& strWeather); 98 const std::string GetInfoWeather() const; 99 100 void SetInfoHoroscope(const std::string& strHoroscope); 101 const std::string GetInfoHoroscope() const; 102 103 void SetInfoCinema(const std::string& strCinema); 104 const std::string GetInfoCinema() const; 105 106 void SetInfoLottery(const std::string& strLottery); 107 const std::string GetInfoLottery() const; 108 109 void SetInfoOther(const std::string& strOther); 110 const std::string GetInfoOther() const; 111 112 void SetEditorialStaff(const std::string& strEditorialStaff); 113 const std::string GetEditorialStaff() const; 114 115 void SetRadioStyle(const std::string& style); 116 const std::string GetRadioStyle() const; 117 118 void SetPlayingRadiotext(bool yesNo); 119 bool IsPlayingRadiotext() const; 120 121 void SetPlayingRadiotextPlus(bool yesNo); 122 bool IsPlayingRadiotextPlus() const; 123 124 private: 125 CPVRRadioRDSInfoTag(const CPVRRadioRDSInfoTag& tag) = delete; 126 const CPVRRadioRDSInfoTag& operator =(const CPVRRadioRDSInfoTag& tag) = delete; 127 128 static std::string Trim(const std::string& value); 129 130 mutable CCriticalSection m_critSection; 131 132 bool m_RDS_SpeechActive; 133 134 std::string m_strLanguage; 135 std::string m_strCountry; 136 std::string m_strTitle; 137 std::string m_strBand; 138 std::string m_strArtist; 139 std::string m_strComposer; 140 std::string m_strConductor; 141 std::string m_strAlbum; 142 std::string m_strComment; 143 int m_iAlbumTracknumber; 144 std::string m_strRadioStyle; 145 146 class Info 147 { 148 public: 149 Info() = default; 150 151 bool operator==(const Info& right) const; 152 153 void Clear(); 154 void Add(const std::string& text); GetText()155 const std::string& GetText() const { return m_infoText; } 156 157 private: 158 std::deque<std::string> m_data; 159 std::string m_infoText; 160 }; 161 162 Info m_strInfoNews; 163 Info m_strInfoNewsLocal; 164 Info m_strInfoSport; 165 Info m_strInfoStock; 166 Info m_strInfoWeather; 167 Info m_strInfoLottery; 168 Info m_strInfoOther; 169 Info m_strInfoHoroscope; 170 Info m_strInfoCinema; 171 Info m_strEditorialStaff; 172 173 std::string m_strProgStyle; 174 std::string m_strProgHost; 175 std::string m_strProgStation; 176 std::string m_strProgWebsite; 177 std::string m_strProgNow; 178 std::string m_strProgNext; 179 std::string m_strPhoneHotline; 180 std::string m_strEMailHotline; 181 std::string m_strPhoneStudio; 182 std::string m_strEMailStudio; 183 std::string m_strSMSStudio; 184 185 bool m_bHaveRadiotext; 186 bool m_bHaveRadiotextPlus; 187 }; 188 } 189