xbmc
Providers.h
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 "../../AddonBase.h"
12 #include "../../c-api/addon-instance/pvr.h"
13 #include "../../tools/StringUtils.h"
14 
15 //¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
16 // "C++" Definitions group 2 - PVR provider
17 #ifdef __cplusplus
18 
19 namespace kodi
20 {
21 namespace addon
22 {
23 
24 //==============================================================================
39 class PVRProvider : public CStructHdl<PVRProvider, PVR_PROVIDER>
40 {
41  friend class CInstancePVRClient;
42 
43 public:
45  PVRProvider() { memset(m_cStructure, 0, sizeof(PVR_PROVIDER)); }
46  PVRProvider(const PVRProvider& provider) : CStructHdl(provider) {}
49 
65 
68  void SetUniqueId(unsigned int uniqueId) { m_cStructure->iUniqueId = uniqueId; }
69 
71  unsigned int GetUniqueId() const { return m_cStructure->iUniqueId; }
72 
75  void SetName(const std::string& name)
76  {
77  strncpy(m_cStructure->strName, name.c_str(), sizeof(m_cStructure->strName) - 1);
78  }
79 
81  std::string GetName() const { return m_cStructure->strName; }
82 
97  void SetType(PVR_PROVIDER_TYPE type) { m_cStructure->type = type; }
98 
100  PVR_PROVIDER_TYPE GetType() const { return m_cStructure->type; }
101 
104  void SetIconPath(const std::string& iconPath)
105  {
106  strncpy(m_cStructure->strIconPath, iconPath.c_str(), sizeof(m_cStructure->strIconPath) - 1);
107  }
108 
110  std::string GetIconPath() const { return m_cStructure->strIconPath; }
112 
117  void SetCountries(const std::vector<std::string>& countries)
118  {
119  const std::string str = tools::StringUtils::Join(countries, PROVIDER_STRING_TOKEN_SEPARATOR);
120  strncpy(m_cStructure->strCountries, str.c_str(), sizeof(m_cStructure->strCountries) - 1);
121  }
122 
124  std::vector<std::string> GetCountries() const
125  {
126  return tools::StringUtils::Split(m_cStructure->strCountries, PROVIDER_STRING_TOKEN_SEPARATOR);
127  }
129 
134  void SetLanguages(const std::vector<std::string>& languages)
135  {
136  const std::string str = tools::StringUtils::Join(languages, PROVIDER_STRING_TOKEN_SEPARATOR);
137  strncpy(m_cStructure->strLanguages, str.c_str(), sizeof(m_cStructure->strLanguages) - 1);
138  }
139 
141  std::vector<std::string> GetLanguages() const
142  {
143  return tools::StringUtils::Split(m_cStructure->strLanguages, PROVIDER_STRING_TOKEN_SEPARATOR);
144  }
146 
147 private:
148  PVRProvider(const PVR_PROVIDER* provider) : CStructHdl(provider) {}
149  PVRProvider(PVR_PROVIDER* provider) : CStructHdl(provider) {}
150 };
152 //------------------------------------------------------------------------------
153 
154 //==============================================================================
161 class PVRProvidersResultSet
162 {
163 public:
165  PVRProvidersResultSet() = delete;
166  PVRProvidersResultSet(const AddonInstance_PVR* instance, PVR_HANDLE handle)
167  : m_instance(instance), m_handle(handle)
168  {
169  }
172 
178  void Add(const kodi::addon::PVRProvider& provider)
179  {
180  m_instance->toKodi->TransferProviderEntry(m_instance->toKodi->kodiInstance, m_handle, provider);
181  }
182 
184 
185 private:
186  const AddonInstance_PVR* m_instance = nullptr;
187  const PVR_HANDLE m_handle;
188 };
190 //------------------------------------------------------------------------------
191 
192 } /* namespace addon */
193 } /* namespace kodi */
194 
195 #endif /* __cplusplus */
Definition: pvr.h:332
PVR_PROVIDER_TYPE
Definition: pvr_providers.h:46
Definition: addon_base.h:267
"C" PVR add-on provider.
Definition: pvr_providers.h:79
Handle used to return data from the PVR add-on to CPVRClient.
Definition: pvr_defines.h:65