Kodi Development 22.0
for Binary and Script based Add-Ons
 
Loading...
Searching...
No Matches
EPG.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
14//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
15// "C++" Definitions group 4 - PVR EPG
16#ifdef __cplusplus
17
18namespace kodi
19{
20namespace addon
21{
22
23//==============================================================================
39class PVREPGTag : public CStructHdl<PVREPGTag, EPG_TAG>
40{
41 friend class CInstancePVRClient;
42
43public:
45 PVREPGTag()
46 {
47 memset(m_cStructure, 0, sizeof(EPG_TAG));
48 m_cStructure->iSeriesNumber = EPG_TAG_INVALID_SERIES_EPISODE;
49 m_cStructure->iEpisodeNumber = EPG_TAG_INVALID_SERIES_EPISODE;
50 m_cStructure->iEpisodePartNumber = EPG_TAG_INVALID_SERIES_EPISODE;
51 }
52 PVREPGTag(const PVREPGTag& epg)
53 : CStructHdl(epg),
54 m_title(epg.m_title),
55 m_plotOutline(epg.m_plotOutline),
56 m_plot(epg.m_plot),
57 m_originalTitle(epg.m_originalTitle),
58 m_cast(epg.m_cast),
59 m_director(epg.m_director),
60 m_writer(epg.m_writer),
61 m_IMDBNumber(epg.m_IMDBNumber),
62 m_episodeName(epg.m_episodeName),
63 m_iconPath(epg.m_iconPath),
64 m_seriesLink(epg.m_seriesLink),
65 m_genreDescription(epg.m_genreDescription),
66 m_parentalRatingCode(epg.m_parentalRatingCode),
67 m_firstAired(epg.m_firstAired)
68 {
69 }
106
109
113 {
114 m_cStructure->iUniqueBroadcastId = uniqueBroadcastId;
115 }
116
118 unsigned int GetUniqueBroadcastId() const { return m_cStructure->iUniqueBroadcastId; }
119
123 {
124 m_cStructure->iUniqueChannelId = uniqueChannelId;
125 }
126
128 unsigned int GetUniqueChannelId() const { return m_cStructure->iUniqueChannelId; }
129
132 void SetTitle(const std::string& title) { m_title = title; }
133
135 std::string GetTitle() const { return m_title; }
136
141 void SetStartTime(time_t startTime) { m_cStructure->startTime = startTime; }
142
144 time_t GetStartTime() const { return m_cStructure->startTime; }
145
150 void SetEndTime(time_t endTime) { m_cStructure->endTime = endTime; }
151
153 time_t GetEndTime() const { return m_cStructure->endTime; }
154
157 void SetPlotOutline(const std::string& plotOutline) { m_plotOutline = plotOutline; }
158
160 std::string GetPlotOutline() const { return m_plotOutline; }
161
164 void SetPlot(const std::string& plot) { m_plot = plot; }
165
167 std::string GetPlot() const { return m_plot; }
168
171 void SetOriginalTitle(const std::string& originalTitle) { m_originalTitle = originalTitle; }
172
174 std::string GetOriginalTitle() const { return m_originalTitle; }
175
180 void SetCast(const std::string& cast) { m_cast = cast; }
181
183 std::string GetCast() const { return m_cast; }
184
189 void SetDirector(const std::string& director) { m_director = director; }
190
192 std::string GetDirector() const { return m_director; }
193
198 void SetWriter(const std::string& writer) { m_writer = writer; }
199
201 std::string GetWriter() const { return m_writer; }
202
205 void SetYear(int year) { m_cStructure->iYear = year; }
206
208 int GetYear() const { return m_cStructure->iYear; }
209
212 void SetIMDBNumber(const std::string& IMDBNumber) { m_IMDBNumber = IMDBNumber; }
213
215 std::string GetIMDBNumber() const { return m_IMDBNumber; }
216
219 void SetIconPath(const std::string& iconPath) { m_iconPath = iconPath; }
220
222 std::string GetIconPath() const { return m_iconPath; }
223
255 void SetGenreType(int genreType) { m_cStructure->iGenreType = genreType; }
256
258 int GetGenreType() const { return m_cStructure->iGenreType; }
259
292 void SetGenreSubType(int genreSubType) { m_cStructure->iGenreSubType = genreSubType; }
293
295 int GetGenreSubType() const { return m_cStructure->iGenreSubType; }
296
314 void SetGenreDescription(const std::string& genreDescription)
315 {
316 m_genreDescription = genreDescription;
317 }
318
320 std::string GetGenreDescription() const { return m_genreDescription; }
321
324 void SetFirstAired(const std::string& firstAired) { m_firstAired = firstAired; }
325
327 std::string GetFirstAired() const { return m_firstAired; }
328
331 void SetParentalRating(int parentalRating) { m_cStructure->iParentalRating = parentalRating; }
332
334 int GetParentalRating() const { return m_cStructure->iParentalRating; }
335
339 {
340 m_parentalRatingCode = parentalRatingCode;
341 }
342
344 std::string GetParentalRatingCode() const { return m_parentalRatingCode; }
345
348 void SetStarRating(int starRating) { m_cStructure->iStarRating = starRating; }
349
351 int GetStarRating() const { return m_cStructure->iStarRating; }
352
355 void SetSeriesNumber(int seriesNumber) { m_cStructure->iSeriesNumber = seriesNumber; }
356
358 int GetSeriesNumber() const { return m_cStructure->iSeriesNumber; }
359
362 void SetEpisodeNumber(int episodeNumber) { m_cStructure->iEpisodeNumber = episodeNumber; }
363
365 int GetEpisodeNumber() const { return m_cStructure->iEpisodeNumber; }
366
370 {
371 m_cStructure->iEpisodePartNumber = episodePartNumber;
372 }
373
375 int GetEpisodePartNumber() const { return m_cStructure->iEpisodePartNumber; }
376
379 void SetEpisodeName(const std::string& episodeName) { m_episodeName = episodeName; }
380
382 std::string GetEpisodeName() const { return m_episodeName; }
383
393 void SetFlags(unsigned int flags) { m_cStructure->iFlags = flags; }
394
396 unsigned int GetFlags() const { return m_cStructure->iFlags; }
397
400 void SetSeriesLink(const std::string& seriesLink) { m_seriesLink = seriesLink; }
401
403 std::string GetSeriesLink() const { return m_seriesLink; }
404
406
407 // Internal used, as this have own memory for strings and to translate them to "C"
408 EPG_TAG* GetTag() const
409 {
410 m_cStructure->strTitle = m_title.c_str();
411 m_cStructure->strPlotOutline = m_plotOutline.c_str();
412 m_cStructure->strPlot = m_plot.c_str();
413 m_cStructure->strOriginalTitle = m_originalTitle.c_str();
414 m_cStructure->strCast = m_cast.c_str();
415 m_cStructure->strDirector = m_director.c_str();
416 m_cStructure->strWriter = m_writer.c_str();
417 m_cStructure->strIMDBNumber = m_IMDBNumber.c_str();
418 m_cStructure->strIconPath = m_iconPath.c_str();
419 m_cStructure->strGenreDescription = m_genreDescription.c_str();
420 m_cStructure->strParentalRatingCode = m_parentalRatingCode.c_str();
421 m_cStructure->strEpisodeName = m_episodeName.c_str();
422 m_cStructure->strSeriesLink = m_seriesLink.c_str();
423 m_cStructure->strFirstAired = m_firstAired.c_str();
424
425 return m_cStructure;
426 }
427
428private:
429 PVREPGTag(const EPG_TAG* epg) : CStructHdl(epg) { SetData(epg); }
430 PVREPGTag(EPG_TAG* epg) : CStructHdl(epg) { SetData(epg); }
431
432 const PVREPGTag& operator=(const PVREPGTag& right);
433 const PVREPGTag& operator=(const EPG_TAG& right);
434 operator EPG_TAG*();
435
436 std::string m_title;
437 std::string m_plotOutline;
438 std::string m_plot;
439 std::string m_originalTitle;
440 std::string m_cast;
441 std::string m_director;
442 std::string m_writer;
443 std::string m_IMDBNumber;
444 std::string m_episodeName;
445 std::string m_iconPath;
446 std::string m_seriesLink;
447 std::string m_genreDescription;
448 std::string m_parentalRatingCode;
449 std::string m_firstAired;
450
451 void SetData(const EPG_TAG* tag)
452 {
453 m_title = tag->strTitle == nullptr ? "" : tag->strTitle;
454 m_plotOutline = tag->strPlotOutline == nullptr ? "" : tag->strPlotOutline;
455 m_plot = tag->strPlot == nullptr ? "" : tag->strPlot;
456 m_originalTitle = tag->strOriginalTitle == nullptr ? "" : tag->strOriginalTitle;
457 m_cast = tag->strCast == nullptr ? "" : tag->strCast;
458 m_director = tag->strDirector == nullptr ? "" : tag->strDirector;
459 m_writer = tag->strWriter == nullptr ? "" : tag->strWriter;
460 m_IMDBNumber = tag->strIMDBNumber == nullptr ? "" : tag->strIMDBNumber;
461 m_iconPath = tag->strIconPath == nullptr ? "" : tag->strIconPath;
462 m_genreDescription = tag->strGenreDescription == nullptr ? "" : tag->strGenreDescription;
463 m_parentalRatingCode = tag->strParentalRatingCode == nullptr ? "" : tag->strParentalRatingCode;
464 m_episodeName = tag->strEpisodeName == nullptr ? "" : tag->strEpisodeName;
465 m_seriesLink = tag->strSeriesLink == nullptr ? "" : tag->strSeriesLink;
466 m_firstAired = tag->strFirstAired == nullptr ? "" : tag->strFirstAired;
467 }
468};
470//------------------------------------------------------------------------------
471
472//==============================================================================
482{
483public:
485 PVREPGTagsResultSet() = delete;
486 PVREPGTagsResultSet(const AddonInstance_PVR* instance, PVR_HANDLE handle)
487 : m_instance(instance), m_handle(handle)
488 {
489 }
494
499 {
500 m_instance->toKodi->TransferEpgEntry(m_instance->toKodi->kodiInstance, m_handle, tag.GetTag());
501 }
502
504
505private:
506 const AddonInstance_PVR* m_instance = nullptr;
507 const PVR_HANDLE m_handle;
508};
510//------------------------------------------------------------------------------
511
512} /* namespace addon */
513} /* namespace kodi */
514
515#endif /* __cplusplus */
Definition AddonBase.h:120
Definition EPG.h:40
Definition PeripheralUtils.h:48
unsigned int GetUniqueBroadcastId() const
To get with SetUniqueBroadcastId changed values.
Definition EPG.h:118
void SetUniqueBroadcastId(unsigned int uniqueBroadcastId)
required Identifier for this event. Event uids must be unique for a channel. Valid uids must be great...
Definition EPG.h:112
void SetGenreSubType(int genreSubType)
optional Genre sub type.
Definition EPG.h:292
void SetEpisodeNumber(int episodeNumber)
optional Episode number.
Definition EPG.h:362
std::string GetIMDBNumber() const
To get with SetIMDBNumber changed values.
Definition EPG.h:215
int GetYear() const
To get with SetYear changed values.
Definition EPG.h:208
void SetStartTime(time_t startTime)
required Start time in UTC.
Definition EPG.h:141
void SetCast(const std::string &cast)
optional Cast name(s).
Definition EPG.h:180
void SetFirstAired(const std::string &firstAired)
optional First aired in UTC.
Definition EPG.h:324
std::string GetPlotOutline() const
To get with SetPlotOutline changed values.
Definition EPG.h:160
void SetSeriesNumber(int seriesNumber)
optional Series number.
Definition EPG.h:355
void SetWriter(const std::string &writer)
optional Writer name(s).
Definition EPG.h:198
void SetTitle(const std::string &title)
required This event's title.
Definition EPG.h:132
std::string GetFirstAired() const
To get with SetFirstAired changed values.
Definition EPG.h:327
void SetFlags(unsigned int flags)
optional Bit field of independent flags associated with the EPG entry.
Definition EPG.h:393
void SetEpisodeName(const std::string &episodeName)
optional Episode name.
Definition EPG.h:379
void SetSeriesLink(const std::string &seriesLink)
optional Series link for this event.
Definition EPG.h:400
time_t GetEndTime() const
To get with SetEndTime changed values.
Definition EPG.h:153
void SetIconPath(const std::string &iconPath)
optional Icon path.
Definition EPG.h:219
unsigned int GetUniqueChannelId() const
To get with SetUniqueChannelId changed values.
Definition EPG.h:128
std::string GetCast() const
To get with SetCast changed values.
Definition EPG.h:183
void SetParentalRatingCode(const std::string &parentalRatingCode)
required This event's parental rating code.
Definition EPG.h:338
void SetOriginalTitle(const std::string &originalTitle)
optional Original title.
Definition EPG.h:171
int GetParentalRating() const
To get with SetParentalRatinge changed values.
Definition EPG.h:334
int GetEpisodePartNumber() const
To get with SetEpisodePartNumber changed values.
Definition EPG.h:375
void SetPlotOutline(const std::string &plotOutline)
optional Plot outline name.
Definition EPG.h:157
std::string GetOriginalTitle() const
To get with SetOriginalTitle changed values.
Definition EPG.h:174
int GetStarRating() const
To get with SetStarRating changed values.
Definition EPG.h:351
std::string GetTitle() const
To get with SetTitle changed values.
Definition EPG.h:135
std::string GetEpisodeName() const
To get with SetEpisodeName changed values.
Definition EPG.h:382
std::string GetGenreDescription() const
To get with SetGenreDescription changed values.
Definition EPG.h:320
std::string GetDirector() const
To get with SetDirector changed values.
Definition EPG.h:192
void SetStarRating(int starRating)
optional Star rating.
Definition EPG.h:348
int GetSeriesNumber() const
To get with SetSeriesNumber changed values.
Definition EPG.h:358
std::string GetPlot() const
To get with GetPlot changed values.
Definition EPG.h:167
time_t GetStartTime() const
To get with SetStartTime changed values.
Definition EPG.h:144
void SetDirector(const std::string &director)
optional Director name(s).
Definition EPG.h:189
std::string GetParentalRatingCode() const
To get with SetParentalRatingCode changed values.
Definition EPG.h:344
std::string GetWriter() const
To get with SetDirector changed values.
Definition EPG.h:201
void SetEpisodePartNumber(int episodePartNumber)
optional Episode part number.
Definition EPG.h:369
int GetEpisodeNumber() const
To get with SetEpisodeNumber changed values.
Definition EPG.h:365
void SetParentalRating(int parentalRating)
optional Parental rating.
Definition EPG.h:331
void SetGenreType(int genreType)
optional Genre type.
Definition EPG.h:255
std::string GetIconPath() const
To get with SetIconPath changed values.
Definition EPG.h:222
void SetYear(int year)
optional Year.
Definition EPG.h:205
unsigned int GetFlags() const
To get with SetFlags changed values.
Definition EPG.h:396
void SetUniqueChannelId(unsigned int uniqueChannelId)
required Unique identifier of the channel this event belongs to.
Definition EPG.h:122
int GetGenreType() const
To get with SetGenreType changed values.
Definition EPG.h:258
int GetGenreSubType() const
To get with SetGenreSubType changed values.
Definition EPG.h:295
void SetPlot(const std::string &plot)
optional Plot name.
Definition EPG.h:164
void SetGenreDescription(const std::string &genreDescription)
optional genre. Will be used only when genreType == EPG_GENRE_USE_STRING or genreSubType == EPG_GENR...
Definition EPG.h:314
void SetEndTime(time_t endTime)
required End time in UTC.
Definition EPG.h:150
void SetIMDBNumber(const std::string &IMDBNumber)
optional IMDB identification number.
Definition EPG.h:212
std::string GetSeriesLink() const
To get with SetSeriesLink changed values.
Definition EPG.h:403
void Add(const kodi::addon::PVREPGTag &tag)
To add and give content from addon to Kodi on related call.
Definition EPG.h:498
#define EPG_TAG_INVALID_SERIES_EPISODE
Special kodi::addon::PVREPGTag::SetSeriesNumber(), kodi::addon::PVREPGTag::SetEpisodeNumber() and kod...
Definition pvr_epg.h:582
Definition pvr.h:333
"C" PVR add-on channel group member.
Definition pvr_epg.h:623