xbmc
PVRProvider.h
1 /*
2  * Copyright (C) 2012-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 "addons/kodi-dev-kit/include/kodi/c-api/addon-instance/pvr/pvr_providers.h"
12 #include "pvr/PVRCachedImage.h"
13 #include "threads/CriticalSection.h"
14 #include "utils/ISerializable.h"
15 
16 #include <memory>
17 #include <string>
18 #include <vector>
19 
20 namespace PVR
21 {
22 
23 enum class ProviderUpdateMode
24 {
25  BY_CLIENT,
26  BY_DATABASE
27 };
28 
29 static constexpr int PVR_PROVIDER_ADDON_UID = -1;
30 static constexpr int PVR_PROVIDER_INVALID_DB_ID = -1;
31 
32 class CPVRProvider final : public ISerializable
33 {
34 public:
35  static const std::string IMAGE_OWNER_PATTERN;
36 
37  CPVRProvider(int iUniqueId, int iClientId);
38  CPVRProvider(const PVR_PROVIDER& provider, int iClientId);
39  CPVRProvider(int iClientId,
40  const std::string& addonProviderName,
41  const std::string& addonIconPath,
42  const std::string& addonThumbPath);
43 
44  bool operator==(const CPVRProvider& right) const;
45  bool operator!=(const CPVRProvider& right) const;
46 
47  void Serialize(CVariant& value) const override;
48 
57  int GetDatabaseId() const;
58 
64  bool SetDatabaseId(int iDatabaseId);
65 
74  int GetUniqueId() const;
75 
79  int GetClientId() const;
80 
84  std::string GetName() const;
85 
91  bool SetName(const std::string& iName);
92 
97  bool HasType() const { return m_type != PVR_PROVIDER_TYPE_UNKNOWN; }
98 
103  PVR_PROVIDER_TYPE GetType() const;
104 
110  bool SetType(PVR_PROVIDER_TYPE type);
111 
116  std::string GetIconPath() const;
117 
123  bool SetIconPath(const std::string& strIconPath);
124 
128  std::string GetClientIconPath() const;
129 
134  std::vector<std::string> GetCountries() const;
135 
141  bool SetCountries(const std::vector<std::string>& countries);
142 
147  std::string GetCountriesDBString() const;
148 
154  bool SetCountriesFromDBString(const std::string& strCountries);
155 
160  std::vector<std::string> GetLanguages() const;
161 
167  bool SetLanguages(const std::vector<std::string>& languages);
168 
173  std::string GetLanguagesDBString() const;
174 
180  bool SetLanguagesFromDBString(const std::string& strLanguages);
181 
186  bool HasThumbPath() const;
187 
192  std::string GetThumbPath() const;
193 
197  std::string GetClientThumbPath() const;
198 
203  bool IsClientProvider() const { return m_bIsClientProvider; }
204 
211  bool UpdateEntry(const std::shared_ptr<CPVRProvider>& fromProvider,
212  ProviderUpdateMode updateMode);
213 
219  bool Persist(bool updateRecord = false);
220 
225  bool DeleteFromDatabase();
226 
227 private:
228  CPVRProvider(const CPVRProvider& provider) = delete;
229  CPVRProvider& operator=(const CPVRProvider& orig) = delete;
230 
231  int m_iDatabaseId = PVR_PROVIDER_INVALID_DB_ID;
233  int m_iUniqueId = PVR_PROVIDER_ADDON_UID;
234  int m_iClientId;
235  std::string m_strName;
237  CPVRCachedImage m_iconPath;
238  std::string m_strCountries;
239  std::string m_strLanguages;
240  bool m_bIsClientProvider = false;
241  CPVRCachedImage m_thumbPath;
243  mutable CCriticalSection m_critSection;
244 };
245 } // namespace PVR
Definition: PVRCachedImage.h:16
Definition: ContextMenuManager.h:24
Definition: PVRProvider.h:32
Definition: Variant.h:31
PVR_PROVIDER_TYPE
Definition: pvr_providers.h:46
Definition: ISerializable.h:13
bool HasType() const
Checks whether this provider has a known type.
Definition: PVRProvider.h:97
"C" PVR add-on provider.
Definition: pvr_providers.h:79
bool IsClientProvider() const
Whether a provider is a default provider of a PVR Client add-on or not.
Definition: PVRProvider.h:203
0 : Unknown type.
Definition: pvr_providers.h:49