kodi
PVRClientCapabilities.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.h"
12 
13 #include <memory>
14 #include <string>
15 #include <utility>
16 #include <vector>
17 
18 namespace PVR
19 {
20 
22 {
23 public:
24  CPVRClientCapabilities() = default;
25  virtual ~CPVRClientCapabilities() = default;
26 
28  const CPVRClientCapabilities& operator=(const CPVRClientCapabilities& other);
29 
30  const CPVRClientCapabilities& operator=(const PVR_ADDON_CAPABILITIES& addonCapabilities);
31 
32  void clear();
33 
35  //
36  // Channels
37  //
39 
44  bool SupportsTV() const { return m_addonCapabilities && m_addonCapabilities->bSupportsTV; }
45 
50  bool SupportsRadio() const { return m_addonCapabilities && m_addonCapabilities->bSupportsRadio; }
51 
56  bool SupportsProviders() const
57  {
58  return m_addonCapabilities && m_addonCapabilities->bSupportsProviders;
59  }
60 
65  bool SupportsChannelGroups() const
66  {
67  return m_addonCapabilities && m_addonCapabilities->bSupportsChannelGroups;
68  }
69 
74  bool SupportsChannelScan() const
75  {
76  return m_addonCapabilities && m_addonCapabilities->bSupportsChannelScan;
77  }
78 
86  {
87  return m_addonCapabilities && m_addonCapabilities->bSupportsChannelSettings;
88  }
89 
95  {
96  return m_addonCapabilities && m_addonCapabilities->bSupportsDescrambleInfo;
97  }
98 
100  //
101  // EPG
102  //
104 
109  bool SupportsEPG() const { return m_addonCapabilities && m_addonCapabilities->bSupportsEPG; }
110 
116  {
117  return m_addonCapabilities && m_addonCapabilities->bSupportsAsyncEPGTransfer;
118  }
119 
121  //
122  // Timers
123  //
125 
130  bool SupportsTimers() const
131  {
132  return m_addonCapabilities && m_addonCapabilities->bSupportsTimers;
133  }
134 
136  //
137  // Recordings
138  //
140 
145  bool SupportsRecordings() const
146  {
147  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings;
148  }
149 
155  {
156  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
157  m_addonCapabilities->bSupportsRecordingsUndelete;
158  }
159 
165  {
166  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
167  m_addonCapabilities->bSupportsRecordingPlayCount;
168  }
169 
175  {
176  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
177  m_addonCapabilities->bSupportsLastPlayedPosition;
178  }
179 
185  {
186  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
187  m_addonCapabilities->bSupportsRecordingEdl;
188  }
189 
194  bool SupportsEpgTagEdl() const
195  {
196  return m_addonCapabilities && m_addonCapabilities->bSupportsEPG &&
197  m_addonCapabilities->bSupportsEPGEdl;
198  }
199 
205  {
206  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
207  m_addonCapabilities->bSupportsRecordingsRename;
208  }
209 
215  {
216  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
217  m_addonCapabilities->bSupportsRecordingsLifetimeChange;
218  }
219 
224  void GetRecordingsLifetimeValues(std::vector<std::pair<std::string, int>>& list) const;
225 
231  {
232  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
233  m_addonCapabilities->bSupportsRecordingSize;
234  }
235 
241  {
242  return m_addonCapabilities && m_addonCapabilities->bSupportsRecordings &&
243  m_addonCapabilities->bSupportsRecordingsDelete;
244  }
245 
247  //
248  // Streams
249  //
251 
256  bool HandlesInputStream() const
257  {
258  return m_addonCapabilities && m_addonCapabilities->bHandlesInputStream;
259  }
260 
265  bool HandlesDemuxing() const
266  {
267  return m_addonCapabilities && m_addonCapabilities->bHandlesDemuxing;
268  }
269 
270 private:
271  void InitRecordingsLifetimeValues();
272 
273  std::unique_ptr<PVR_ADDON_CAPABILITIES> m_addonCapabilities;
274  std::vector<std::pair<std::string, int>> m_recordingsLifetimeValues;
275 };
276 
277 } // namespace PVR
"C" PVR add-on capabilities.
Definition: pvr_general.h:267
bool SupportsRecordingsPlayCount() const
Check whether this add-on supports play count for recordings.
Definition: PVRClientCapabilities.h:164
Definition: ContextMenuManager.h:24
bool SupportsRecordingsLastPlayedPosition() const
Check whether this add-on supports store/retrieve of last played position for recordings..
Definition: PVRClientCapabilities.h:174
void GetRecordingsLifetimeValues(std::vector< std::pair< std::string, int >> &list) const
Obtain a list with all possible values for recordings lifetime.
Definition: PVRClientCapabilities.cpp:81
bool SupportsChannelSettings() const
Check whether this add-on supports the following functions: DeleteChannel, RenameChannel, DialogChannelSettings and DialogAddChannel.
Definition: PVRClientCapabilities.h:85
bool SupportsRecordingsUndelete() const
Check whether this add-on supports undelete of deleted recordings.
Definition: PVRClientCapabilities.h:154
bool SupportsAsyncEPGTransfer() const
Check whether this add-on supports asynchronous transfer of epg events.
Definition: PVRClientCapabilities.h:115
bool SupportsTV() const
Check whether this add-on supports TV channels.
Definition: PVRClientCapabilities.h:44
bool SupportsRecordingsLifetimeChange() const
Check whether this add-on supports changing lifetime of recording.
Definition: PVRClientCapabilities.h:214
Definition: PVRClientCapabilities.h:21
bool SupportsRecordingsEdl() const
Check whether this add-on supports retrieving an edit decision list for recordings.
Definition: PVRClientCapabilities.h:184
bool SupportsTimers() const
Check whether this add-on supports the creation and editing of timers.
Definition: PVRClientCapabilities.h:130
bool SupportsRecordings() const
Check whether this add-on supports recordings.
Definition: PVRClientCapabilities.h:145
bool HandlesInputStream() const
Check whether this add-on provides an input stream. false if Kodi handles the stream.
Definition: PVRClientCapabilities.h:256
bool SupportsEpgTagEdl() const
Check whether this add-on supports retrieving an edit decision list for epg tags. ...
Definition: PVRClientCapabilities.h:194
bool SupportsDescrambleInfo() const
Check whether this add-on supports descramble information for playing channels.
Definition: PVRClientCapabilities.h:94
bool SupportsRadio() const
Check whether this add-on supports radio channels.
Definition: PVRClientCapabilities.h:50
bool SupportsChannelGroups() const
Check whether this add-on supports channel groups.
Definition: PVRClientCapabilities.h:65
bool SupportsChannelScan() const
Check whether this add-on supports scanning for new channels on the backend.
Definition: PVRClientCapabilities.h:74
bool SupportsRecordingsDelete() const
Check whether this add-on supports deleting recordings.
Definition: PVRClientCapabilities.h:240
bool HandlesDemuxing() const
Check whether this add-on demultiplexes packets.
Definition: PVRClientCapabilities.h:265
bool SupportsRecordingsSize() const
Check whether this add-on supports retrieving the size recordings..
Definition: PVRClientCapabilities.h:230
bool SupportsEPG() const
Check whether this add-on provides EPG information.
Definition: PVRClientCapabilities.h:109
bool SupportsRecordingsRename() const
Check whether this add-on supports renaming recordings..
Definition: PVRClientCapabilities.h:204
bool SupportsProviders() const
Check whether this add-on supports providers.
Definition: PVRClientCapabilities.h:56