From be933ef2241d79558f91796cc5b3a161f72ebf9c Mon Sep 17 00:00:00 2001 From: manuel Date: Mon, 19 Oct 2020 00:52:24 +0200 Subject: sync with upstream --- .../include/kodi/addon-instance/pvr/Timers.h | 896 --------------------- 1 file changed, 896 deletions(-) delete mode 100644 xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/pvr/Timers.h (limited to 'xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/pvr/Timers.h') diff --git a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/pvr/Timers.h b/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/pvr/Timers.h deleted file mode 100644 index 6e05e55..0000000 --- a/xbmc/addons/kodi-addon-dev-kit/include/kodi/addon-instance/pvr/Timers.h +++ /dev/null @@ -1,896 +0,0 @@ -/* - * Copyright (C) 2005-2018 Team Kodi - * This file is part of Kodi - https://kodi.tv - * - * SPDX-License-Identifier: GPL-2.0-or-later - * See LICENSES/README.md for more information. - */ - -#pragma once - -#include "General.h" -#include "../../AddonBase.h" -#include "../../c-api/addon-instance/pvr.h" - -//¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ -// "C++" Definitions group 6 - PVR timers -#ifdef __cplusplus - -namespace kodi -{ -namespace addon -{ - -//============================================================================== -/// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimer class PVRTimer -/// @ingroup cpp_kodi_addon_pvr_Defs_Timer -/// @brief **PVR add-on timer type**\n -/// Representation of a timer event. -/// -/// The related values here are automatically initiated to defaults and need -/// only be set if supported and used. -/// -/// ---------------------------------------------------------------------------- -/// -/// @copydetails cpp_kodi_addon_pvr_Defs_Timer_PVRTimer_Help -/// -///@{ -class PVRTimer : public CStructHdl -{ - friend class CInstancePVRClient; - -public: - /*! \cond PRIVATE */ - PVRTimer() - { - m_cStructure->iClientIndex = 0; - m_cStructure->state = PVR_TIMER_STATE_NEW; - m_cStructure->iTimerType = PVR_TIMER_TYPE_NONE; - m_cStructure->iParentClientIndex = 0; - m_cStructure->iClientChannelUid = PVR_TIMER_VALUE_NOT_AVAILABLE; - m_cStructure->startTime = 0; - m_cStructure->endTime = 0; - m_cStructure->bStartAnyTime = false; - m_cStructure->bEndAnyTime = false; - m_cStructure->bFullTextEpgSearch = false; - m_cStructure->iPriority = PVR_TIMER_VALUE_NOT_AVAILABLE; - m_cStructure->iLifetime = PVR_TIMER_VALUE_NOT_AVAILABLE; - m_cStructure->iMaxRecordings = PVR_TIMER_VALUE_NOT_AVAILABLE; - m_cStructure->iRecordingGroup = 0; - m_cStructure->firstDay = 0; - m_cStructure->iWeekdays = PVR_WEEKDAY_NONE; - m_cStructure->iPreventDuplicateEpisodes = 0; - m_cStructure->iEpgUid = 0; - m_cStructure->iMarginStart = 0; - m_cStructure->iMarginEnd = 0; - m_cStructure->iGenreType = PVR_TIMER_VALUE_NOT_AVAILABLE; - m_cStructure->iGenreSubType = PVR_TIMER_VALUE_NOT_AVAILABLE; - } - PVRTimer(const PVRTimer& data) : CStructHdl(data) {} - /*! \endcond */ - - /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimer_Help Value Help - /// @ingroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimer - /// - /// The following table contains values that can be set with @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimer : - /// | Name | Type | Set call | Get call | Usage - /// |------|------|----------|----------|----------- - /// | **Client index** | `unsigned int` | @ref PVRTimer::SetClientIndex "SetClientIndex" | @ref PVRTimer::GetClientIndex "GetClientIndex" | *required to set* - /// | **State** | @ref PVR_TIMER_STATE | @ref PVRTimer::SetState "SetState" | @ref PVRTimer::GetState "GetState" | *required to set* - /// | **Type** | `unsigned int` | @ref PVRTimer::SetTimerType "SetTimerType" | @ref PVRTimer::GetTimerType "GetTimerType" | *required to set* - /// | **Title** | `std::string` | @ref PVRTimer::SetTitle "SetTitle" | @ref PVRTimer::GetTitle "GetTitle" | *required to set* - /// | **Parent client index** | `unsigned int` | @ref PVRTimer::SetParentClientIndex "SetParentClientIndex" | @ref PVRTimer::GetParentClientIndex "GetParentClientIndex" | *optional* - /// | **Client channel unique identifier** | `int` | @ref PVRTimer::SetClientChannelUid "SetClientChannelUid" | @ref PVRTimer::GetClientChannelUid "GetClientChannelUid" | *optional* - /// | **Start time** | `time_t` | @ref PVRTimer::SetStartTime "SetStartTime" | @ref PVRTimer::GetStartTime "GetStartTime" | *optional* - /// | **End time** | `time_t` | @ref PVRTimer::SetEndTime "SetEndTime" | @ref PVRTimer::GetEndTime "GetEndTime" | *optional* - /// | **Start any time** | `bool` | @ref PVRTimer::SetStartAnyTime "SetStartAnyTime" | @ref PVRTimer::GetStartAnyTime "GetStartAnyTime" | *optional* - /// | **End any time** | `bool` | @ref PVRTimer::SetEndAnyTime "SetEndAnyTime" | @ref PVRTimer::GetEndAnyTime "GetEndAnyTime" | *optional* - /// | **EPG search string** | `std::string` | @ref PVRTimer::SetEPGSearchString "SetEPGSearchString" | @ref PVRTimer::GetEPGSearchString "GetEPGSearchString" | *optional* - /// | **Full text EPG search** | `bool` | @ref PVRTimer::SetFullTextEpgSearch "SetFullTextEpgSearch" | @ref PVRTimer::GetFullTextEpgSearch "GetFullTextEpgSearch" | *optional* - /// | **Recording store directory** | `std::string` | @ref PVRTimer::SetDirectory "SetDirectory" | @ref PVRTimer::GetDirectory "GetDirectory" | *optional* - /// | **Timer priority** | `int` | @ref PVRTimer::SetPriority "SetPriority" | @ref PVRTimer::GetPriority "GetPriority" | *optional* - /// | **Timer lifetime** | `int` | @ref PVRTimer::SetLifetime "SetLifetime" | @ref PVRTimer::GetLifetime "GetLifetime" | *optional* - /// | **Max recordings** | `int` | @ref PVRTimer::SetMaxRecordings "SetMaxRecordings" | @ref PVRTimer::GetMaxRecordings "GetMaxRecordings" | *optional* - /// | **Recording group** | `unsigned int` | @ref PVRTimer::SetRecordingGroup "SetRecordingGroup" | @ref PVRTimer::GetRecordingGroup "GetRecordingGroup" | *optional* - /// | **First start day** | `time_t` | @ref PVRTimer::SetFirstDay "SetFirstDay" | @ref PVRTimer::GetFirstDay "GetFirstDay" | *optional* - /// | **Used timer weekdays** | `unsigned int` | @ref PVRTimer::SetWeekdays "SetWeekdays" | @ref PVRTimer::GetWeekdays "GetWeekdays" | *optional* - /// | **Prevent duplicate episodes** | `unsigned int` | @ref PVRTimer::SetPreventDuplicateEpisodes "SetPreventDuplicateEpisodes" | @ref PVRTimer::GetPreventDuplicateEpisodes "GetPreventDuplicateEpisodes" | *optional* - /// | **EPG unique identifier** | `unsigned int` | @ref PVRTimer::SetEPGUid "SetEPGUid" | @ref PVRTimer::GetEPGUid "GetEPGUid" | *optional* - /// | **Margin start** | `unsigned int` | @ref PVRTimer::SetMarginStart "SetMarginStart" | @ref PVRTimer::GetMarginStart "GetMarginStart" | *optional* - /// | **Margin end** | `unsigned int` | @ref PVRTimer::SetMarginEnd "SetMarginEnd" | @ref PVRTimer::GetMarginEnd "GetMarginEnd" | *optional* - /// | **Genre type** | `int` | @ref PVRTimer::SetGenreType "SetGenreType" | @ref PVRTimer::GetGenreType "GetGenreType" | *optional* - /// | **Genre sub type** | `int` | @ref PVRTimer::SetGenreSubType "SetGenreSubType" | @ref PVRTimer::GetGenreSubType "GetGenreSubType" | *optional* - /// | **Series link** | `std::string` | @ref PVRTimer::SetSeriesLink "SetSeriesLink" | @ref PVRTimer::GetSeriesLink "GetSeriesLink" | *optional* - - /// @addtogroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimer - ///@{ - - /// @brief **required**\n - /// The index of this timer given by the client. - /// - /// @ref PVR_TIMER_NO_CLIENT_INDEX indicates that the index was not yet set - /// by the client, for example for new timers created by Kodi and passed the - /// first time to the client. A valid index must be greater than - /// @ref PVR_TIMER_NO_CLIENT_INDEX. - /// - void SetClientIndex(unsigned int clientIndex) { m_cStructure->iClientIndex = clientIndex; } - - /// @brief To get with @ref SetClientIndex changed values. - unsigned int GetClientIndex() const { return m_cStructure->iClientIndex; } - - /// @brief **required**\n - /// The state of this timer. - /// - /// @note @ref PVR_TIMER_STATE_NEW is default. - /// - /// - /// -------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// kodi::addon::PVRTimer tag; - /// tag.SetState(PVR_TIMER_STATE_RECORDING); - /// ~~~~~~~~~~~~~ - /// - void SetState(PVR_TIMER_STATE state) { m_cStructure->state = state; } - - /// @brief To get with @ref SetState changed values. - PVR_TIMER_STATE GetState() const { return m_cStructure->state; } - - /// @brief **required**\n - /// The type of this timer. - /// - /// It is private to the addon and can be freely defined by the addon. - /// The value must be greater than @ref PVR_TIMER_TYPE_NONE. - /// - /// Kodi does not interpret this value (except for checking for @ref PVR_TIMER_TYPE_NONE), - /// but will pass the right id to the addon with every @ref PVRTimer instance, - /// thus the addon easily can determine the timer type. - /// - /// @note @ref PVR_TIMER_TYPE_NONE is default. - /// - /// - /// -------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// kodi::addon::PVRTimer tag; - /// tag.SetTimerType(123); - /// ~~~~~~~~~~~~~ - /// - void SetTimerType(unsigned int timerType) { m_cStructure->iTimerType = timerType; } - - /// @brief To get with @ref SetTimerType changed values. - unsigned int GetTimerType() const { return m_cStructure->iTimerType; } - - /// @brief **required**\n - /// A title for this timer. - void SetTitle(const std::string& title) - { - strncpy(m_cStructure->strTitle, title.c_str(), sizeof(m_cStructure->strTitle) - 1); - } - - /// @brief To get with @ref SetTitle changed values. - std::string GetTitle() const { return m_cStructure->strTitle; } - - /// @brief **optional**\n - /// For timers scheduled by a repeating timer. - /// - /// The index of the repeating timer that scheduled this timer (it's - /// @ref clientIndex value). Use @ref PVR_TIMER_NO_PARENT to indicate that - /// this timer was no scheduled by a repeating timer. - void SetParentClientIndex(unsigned int parentClientIndex) - { - m_cStructure->iParentClientIndex = parentClientIndex; - } - - /// @brief To get with @ref SetParentClientIndex changed values. - unsigned int GetParentClientIndex() const { return m_cStructure->iParentClientIndex; } - - /// @brief **optional**\n - /// Unique identifier of the channel to record on. - /// - /// @ref PVR_TIMER_ANY_CHANNEL will denote "any channel", not a specific one. - /// @ref PVR_CHANNEL_INVALID_UID denotes that channel uid is not available. - void SetClientChannelUid(int clientChannelUid) - { - m_cStructure->iClientChannelUid = clientChannelUid; - } - - /// @brief To get with @ref SetClientChannelUid changed values - int GetClientChannelUid() const { return m_cStructure->iClientChannelUid; } - - /// @brief **optional**\n - /// Start time of the recording in UTC. - /// - /// Instant timers that are sent to the add-on by Kodi will have this value - /// set to 0. - void SetStartTime(time_t startTime) { m_cStructure->startTime = startTime; } - - /// @brief To get with @ref SetStartTime changed values. - time_t GetStartTime() const { return m_cStructure->startTime; } - - /// @brief **optional**\n - /// End time of the recording in UTC. - void SetEndTime(time_t endTime) { m_cStructure->endTime = endTime; } - - /// @brief To get with @ref SetEndTime changed values. - time_t GetEndTime() const { return m_cStructure->endTime; } - - /// @brief **optional**\n - /// For EPG based (not Manual) timers indicates startTime does not apply. - /// - /// Default = false. - void SetStartAnyTime(bool startAnyTime) { m_cStructure->bStartAnyTime = startAnyTime; } - - /// @brief To get with @ref SetStartAnyTime changed values. - bool GetStartAnyTime() const { return m_cStructure->bStartAnyTime; } - - /// @brief **optional**\n - /// For EPG based (not Manual) timers indicates endTime does not apply. - /// - /// Default = false - void SetEndAnyTime(bool endAnyTime) { m_cStructure->bEndAnyTime = endAnyTime; } - - /// @brief To get with @ref SetEndAnyTime changed values. - bool GetEndAnyTime() const { return m_cStructure->bEndAnyTime; } - - /// @brief **optional**\n - /// A string used to search epg data for repeating epg-based timers. - /// - /// Format is backend-dependent, for example regexp. - void SetEPGSearchString(const std::string& epgSearchString) - { - strncpy(m_cStructure->strEpgSearchString, epgSearchString.c_str(), - sizeof(m_cStructure->strEpgSearchString) - 1); - } - - /// @brief To get with @ref SetEPGSearchString changed values - std::string GetEPGSearchString() const { return m_cStructure->strEpgSearchString; } - - /// @brief **optional**\n - /// Indicates, whether @ref SetEPGSearchString() is to match against the epg - /// episode title only or also against "other" epg data (backend-dependent). - void SetFullTextEpgSearch(bool fullTextEpgSearch) - { - m_cStructure->bFullTextEpgSearch = fullTextEpgSearch; - } - - /// @brief To get with @ref SetFullTextEpgSearch changed values. - bool GetFullTextEpgSearch() const { return m_cStructure->bFullTextEpgSearch; } - - /// @brief **optional**\n - /// The (relative) directory where the recording will be stored in. - void SetDirectory(const std::string& directory) - { - strncpy(m_cStructure->strDirectory, directory.c_str(), sizeof(m_cStructure->strDirectory) - 1); - } - - /// @brief To get with @ref SetDirectory changed values. - std::string GetDirectory() const { return m_cStructure->strDirectory; } - - /// @brief **optional**\n - /// The summary for this timer. - void SetSummary(const std::string& summary) - { - strncpy(m_cStructure->strSummary, summary.c_str(), sizeof(m_cStructure->strSummary) - 1); - } - - /// @brief To get with @ref SetDirectory changed values. - std::string GetSummary() const { return m_cStructure->strSummary; } - - /// @brief **optional**\n - /// The priority of this timer. - void SetPriority(int priority) { m_cStructure->iPriority = priority; } - - /// @brief To get with @ref SetPriority changed values. - int GetPriority() const { return m_cStructure->iPriority; } - - /// @brief **optional**\n - /// Lifetime of recordings created by this timer. - /// - /// Value > 0 days after which recordings will be deleted by the backend, < 0 - /// addon defined integer list reference, == 0 disabled. - void SetLifetime(int priority) { m_cStructure->iLifetime = priority; } - - /// @brief To get with @ref SetLifetime changed values. - int GetLifetime() const { return m_cStructure->iLifetime; } - - /// @brief **optional**\n - /// Maximum number of recordings this timer shall create. - /// - /// Value > 0 number of recordings, < 0 addon defined integer list reference, == 0 disabled. - void SetMaxRecordings(int maxRecordings) { m_cStructure->iMaxRecordings = maxRecordings; } - - /// @brief To get with @ref SetMaxRecordings changed values. - int GetMaxRecordings() const { return m_cStructure->iMaxRecordings; } - - /// @brief **optional**\n - /// Integer ref to addon/backend defined list of recording groups. - void SetRecordingGroup(unsigned int recordingGroup) - { - m_cStructure->iRecordingGroup = recordingGroup; - } - - /// @brief To get with @ref SetRecordingGroup changed values. - unsigned int GetRecordingGroup() const { return m_cStructure->iRecordingGroup; } - - /// @brief **optional**\n - /// The first day this timer is active, for repeating timers. - void SetFirstDay(time_t firstDay) { m_cStructure->firstDay = firstDay; } - - /// @brief To get with @ref SetFirstDay changed values. - time_t GetFirstDay() const { return m_cStructure->firstDay; } - - /// @brief **optional**\n - /// Week days, for repeating timers (see - /// @ref cpp_kodi_addon_pvr_Defs_Timer_PVR_WEEKDAY "PVR_WEEKDAY_*" constant values) - /// - /// @note @ref PVR_WEEKDAY_NONE is default. - /// - /// - /// -------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// ... - /// kodi::addon::PVRTimer tag; - /// tag.SetWeekdays(PVR_WEEKDAY_MONDAY | PVR_WEEKDAY_SATURDAY); - /// ... - /// ~~~~~~~~~~~~~ - void SetWeekdays(unsigned int weekdays) { m_cStructure->iWeekdays = weekdays; } - - /// @brief To get with @ref SetFirstDay changed values. - unsigned int GetWeekdays() const { return m_cStructure->iWeekdays; } - - /// @brief **optional**\n - /// Prevent duplicate episodes. - /// - /// Should 1 if backend should only record new episodes in case of a repeating - /// epg-based timer, 0 if all episodes shall be recorded (no duplicate detection). - /// - /// Actual algorithm for duplicate detection is defined by the backend. - /// Addons may define own values for different duplicate detection - /// algorithms, thus this is not just a bool. - void SetPreventDuplicateEpisodes(unsigned int preventDuplicateEpisodes) - { - m_cStructure->iPreventDuplicateEpisodes = preventDuplicateEpisodes; - } - - /// @brief To get with @ref SetPreventDuplicateEpisodes changed values. - unsigned int GetPreventDuplicateEpisodes() const - { - return m_cStructure->iPreventDuplicateEpisodes; - } - - /// @brief **optional**\n - /// EPG event id associated with this timer. Event ids must be unique for a - /// channel. - /// - /// Valid ids must be greater than @ref EPG_TAG_INVALID_UID. - void SetEPGUid(unsigned int epgUid) { m_cStructure->iEpgUid = epgUid; } - - /// @brief To get with @ref SetEPGUid changed values. - unsigned int GetEPGUid() const { return m_cStructure->iEpgUid; } - - /// @brief **optional**\n - /// If set, the backend starts the recording selected minutes before - /// @ref SetStartTime. - void SetMarginStart(unsigned int marginStart) { m_cStructure->iMarginStart = marginStart; } - - /// @brief To get with @ref SetMarginStart changed values. - unsigned int GetMarginStart() const { return m_cStructure->iMarginStart; } - - /// @brief **optional**\n - /// If set, the backend ends the recording selected minutes after - /// @ref SetEndTime. - void SetMarginEnd(unsigned int marginEnd) { m_cStructure->iMarginEnd = marginEnd; } - - /// @brief To get with @ref SetMarginEnd changed values. - unsigned int GetMarginEnd() const { return m_cStructure->iMarginEnd; } - - /// @brief **optional**\n - /// Genre type. - /// - /// @copydetails EPG_EVENT_CONTENTMASK - /// - /// -------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// ... - /// kodi::addon::PVRTimer tag; - /// tag.SetGenreType(EPG_EVENT_CONTENTMASK_MOVIEDRAMA); - /// ... - /// ~~~~~~~~~~~~~ - /// - /// @note If confirmed that backend brings the types in [ETSI EN 300 468](https://www.etsi.org/deliver/etsi_en/300400_300499/300468/01.14.01_60/en_300468v011401p.pdf) - /// conform values, can be @ref EPG_EVENT_CONTENTMASK ignored and to set here - /// with backend value. - /// - void SetGenreType(int genreType) { m_cStructure->iGenreType = genreType; } - - /// @brief To get with @ref SetGenreType changed values. - int GetGenreType() const { return m_cStructure->iGenreType; } - - /// @brief **optional**\n - /// Genre sub type. - /// - /// @copydetails EPG_EVENT_CONTENTMASK - /// - /// Subtypes groups related to set by @ref SetGenreType: - /// | Main genre type | List with available sub genre types - /// |-----------------|----------------------------------------- - /// | @ref EPG_EVENT_CONTENTMASK_UNDEFINED | Nothing, should be 0 - /// | @ref EPG_EVENT_CONTENTMASK_MOVIEDRAMA | @ref EPG_EVENT_CONTENTSUBMASK_MOVIEDRAMA - /// | @ref EPG_EVENT_CONTENTMASK_NEWSCURRENTAFFAIRS | @ref EPG_EVENT_CONTENTSUBMASK_NEWSCURRENTAFFAIRS - /// | @ref EPG_EVENT_CONTENTMASK_SHOW | @ref EPG_EVENT_CONTENTSUBMASK_SHOW - /// | @ref EPG_EVENT_CONTENTMASK_SPORTS | @ref EPG_EVENT_CONTENTSUBMASK_SPORTS - /// | @ref EPG_EVENT_CONTENTMASK_CHILDRENYOUTH | @ref EPG_EVENT_CONTENTSUBMASK_CHILDRENYOUTH - /// | @ref EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE | @ref EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE - /// | @ref EPG_EVENT_CONTENTMASK_ARTSCULTURE | @ref EPG_EVENT_CONTENTSUBMASK_ARTSCULTURE - /// | @ref EPG_EVENT_CONTENTMASK_SOCIALPOLITICALECONOMICS | @ref EPG_EVENT_CONTENTSUBMASK_SOCIALPOLITICALECONOMICS - /// | @ref EPG_EVENT_CONTENTMASK_EDUCATIONALSCIENCE | @ref EPG_EVENT_CONTENTSUBMASK_EDUCATIONALSCIENCE - /// | @ref EPG_EVENT_CONTENTMASK_LEISUREHOBBIES | @ref EPG_EVENT_CONTENTSUBMASK_LEISUREHOBBIES - /// | @ref EPG_EVENT_CONTENTMASK_SPECIAL | @ref EPG_EVENT_CONTENTSUBMASK_SPECIAL - /// | @ref EPG_EVENT_CONTENTMASK_USERDEFINED | Can be defined by you - /// - /// -------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// ... - /// kodi::addon::PVRTimer tag; - /// tag.SetGenreType(EPG_EVENT_CONTENTMASK_MUSICBALLETDANCE); - /// tag.SetGenreSubType(EPG_EVENT_CONTENTSUBMASK_MUSICBALLETDANCE_JAZZ); - /// ... - /// ~~~~~~~~~~~~~ - /// - void SetGenreSubType(int genreSubType) { m_cStructure->iGenreSubType = genreSubType; } - - /// @brief To get with @ref SetGenreType changed values. - int GetGenreSubType() const { return m_cStructure->iGenreSubType; } - - /// @brief **optional**\n - /// Series link for this timer. - /// - /// If set for an epg-based timer rule, matching events will be found by - /// checking with here, instead of @ref SetTitle() (and @ref SetFullTextEpgSearch()). - void SetSeriesLink(const std::string& seriesLink) - { - strncpy(m_cStructure->strSeriesLink, seriesLink.c_str(), - sizeof(m_cStructure->strSeriesLink) - 1); - } - - /// @brief To get with @ref SetSeriesLink changed values. - std::string GetSeriesLink() const { return m_cStructure->strSeriesLink; } - ///@} - -private: - PVRTimer(const PVR_TIMER* data) : CStructHdl(data) {} - PVRTimer(PVR_TIMER* data) : CStructHdl(data) {} -}; - -///@} -//------------------------------------------------------------------------------ - -//============================================================================== -/// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimersResultSet class PVRTimersResultSet -/// @ingroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimer -/// @brief **PVR add-on timer transfer class**\n -/// To transfer the content of @ref kodi::addon::CInstancePVRClient::GetTimers(). -/// -/// @note This becomes only be used on addon call above, not usable outside on -/// addon itself. -///@{ -class PVRTimersResultSet -{ -public: - /*! \cond PRIVATE */ - PVRTimersResultSet() = delete; - PVRTimersResultSet(const AddonInstance_PVR* instance, ADDON_HANDLE handle) - : m_instance(instance), m_handle(handle) - { - } - /*! \endcond */ - - /// @addtogroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimersResultSet - ///@{ - - /// @brief To add and give content from addon to Kodi on related call. - /// - /// @param[in] tag The to transferred data. - void Add(const kodi::addon::PVRTimer& tag) - { - m_instance->toKodi->TransferTimerEntry(m_instance->toKodi->kodiInstance, m_handle, tag); - } - - ///@} - -private: - const AddonInstance_PVR* m_instance = nullptr; - const ADDON_HANDLE m_handle; -}; -///@} -//------------------------------------------------------------------------------ - -//============================================================================== -/// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType class PVRTimerType -/// @ingroup cpp_kodi_addon_pvr_Defs_Timer -/// @brief **PVR add-on timer type**\n -/// To define the content of @ref kodi::addon::CInstancePVRClient::GetTimerTypes() -/// given groups. -/// -/// ---------------------------------------------------------------------------- -/// -/// @copydetails cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType_Help -/// -///@{ -class PVRTimerType : public CStructHdl -{ - friend class CInstancePVRClient; - -public: - /*! \cond PRIVATE */ - PVRTimerType() - { - memset(m_cStructure, 0, sizeof(PVR_TIMER_TYPE)); - m_cStructure->iPrioritiesDefault = -1; - m_cStructure->iLifetimesDefault = -1; - m_cStructure->iPreventDuplicateEpisodesDefault = -1; - m_cStructure->iRecordingGroupDefault = -1; - m_cStructure->iMaxRecordingsDefault = -1; - } - PVRTimerType(const PVRTimerType& type) : CStructHdl(type) {} - /*! \endcond */ - - /// @defgroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType_Help Value Help - /// @ingroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType - /// ---------------------------------------------------------------------------- - /// - /// The following table contains values that can be set with @ref cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType : - /// | Name | Type | Set call | Get call | Usage - /// |------|------|----------|----------|----------- - /// | **Identifier** | `unsigned int` | @ref PVRTimerType::SetId "SetId" | @ref PVRTimerType::GetId "GetId" | *required to set* - /// | **Attributes** | `unsigned int` | @ref PVRTimerType::SetAttributes "SetAttributes" | @ref PVRTimerType::GetAttributes "GetAttributes" | *required to set* - /// | **Description** | `std::string` | @ref PVRTimerType::SetDescription "SetDescription" | @ref PVRTimerType::GetDescription "GetDescription" | *optional* - /// | | | | | | - /// | **Priority selection** | @ref cpp_kodi_addon_pvr_Defs_PVRTypeIntValue "PVRTypeIntValue" | @ref PVRTimerType::SetPriorities "SetPriorities" | @ref PVRTimerType::GetPriorities "GetPriorities" | *optional* - /// | **Priority default selection** | `int`| @ref PVRTimerType::SetPrioritiesDefault "SetPrioritiesDefault" | @ref PVRTimerType::GetPrioritiesDefault "GetPrioritiesDefault" | *optional* - /// | | | | | | - /// | **Lifetime selection** | @ref cpp_kodi_addon_pvr_Defs_PVRTypeIntValue "PVRTypeIntValue" | @ref PVRTimerType::SetLifetimes "SetLifetimes" | @ref PVRTimerType::GetLifetimes "GetLifetimes" | *optional* - /// | **Lifetime default selection** | `int`| @ref PVRTimerType::SetLifetimesDefault "SetLifetimesDefault" | @ref PVRTimerType::GetLifetimesDefault "GetLifetimesDefault" | *optional* - /// | | | | | | - /// | **Prevent duplicate episodes selection** | @ref cpp_kodi_addon_pvr_Defs_PVRTypeIntValue "PVRTypeIntValue" | @ref PVRTimerType::SetPreventDuplicateEpisodes "SetPreventDuplicateEpisodes" | @ref PVRTimerType::GetPreventDuplicateEpisodes "GetPreventDuplicateEpisodes" | *optional* - /// | **Prevent duplicate episodes default** | `int`| @ref PVRTimerType::SetPreventDuplicateEpisodesDefault "SetPreventDuplicateEpisodesDefault" | @ref PVRTimerType::GetPreventDuplicateEpisodesDefault "GetPreventDuplicateEpisodesDefault" | *optional* - /// | | | | | | - /// | **Recording group selection**| @ref cpp_kodi_addon_pvr_Defs_PVRTypeIntValue "PVRTypeIntValue" | @ref PVRTimerType::SetRecordingGroups "SetRecordingGroups" | @ref PVRTimerType::GetRecordingGroups "GetRecordingGroups" | *optional* - /// | **Recording group default** | `int`| @ref PVRTimerType::SetRecordingGroupDefault "SetRecordingGroupDefault" | @ref PVRTimerType::GetRecordingGroupDefault "GetRecordingGroupDefault" | *optional* - /// | | | | | | - /// | **Max recordings selection** | @ref cpp_kodi_addon_pvr_Defs_PVRTypeIntValue "PVRTypeIntValue" | @ref PVRTimerType::SetMaxRecordings "SetMaxRecordings" | @ref PVRTimerType::GetMaxRecordings "GetMaxRecordings" | *optional* - /// | **Max recordings default** | `int`| @ref PVRTimerType::SetMaxRecordingsDefault "SetMaxRecordingsDefault" | @ref PVRTimerType::GetMaxRecordingsDefault "GetMaxRecordingsDefault" | *optional* - /// - - /// @addtogroup cpp_kodi_addon_pvr_Defs_Timer_PVRTimerType - ///@{ - - /// @brief **required**\n - /// This type's identifier. Ids must be > @ref PVR_TIMER_TYPE_NONE. - void SetId(unsigned int id) { m_cStructure->iId = id; } - - /// @brief To get with @ref SetAttributes changed values. - unsigned int GetId() const { return m_cStructure->iId; } - - /// @brief **required**\n - /// Defines the attributes for this type (@ref cpp_kodi_addon_pvr_Defs_Timer_PVR_TIMER_TYPE "PVR_TIMER_TYPE_*" constants). - /// - /// To defines the attributes for a type. These values are bit fields that can be - /// used together. - /// - ///-------------------------------------------------------------------------- - /// - /// **Example:** - /// ~~~~~~~~~~~~~{.cpp} - /// kodi::addon::PVRTimerType tag; - /// tag.SetAttributes(PVR_TIMER_TYPE_IS_MANUAL | PVR_TIMER_TYPE_IS_REPEATING); - /// ~~~~~~~~~~~~~ - /// - void SetAttributes(uint64_t attributes) { m_cStructure->iAttributes = attributes; } - - /// @brief To get with @ref SetAttributes changed values. - uint64_t GetAttributes() const { return m_cStructure->iAttributes; } - - /// @brief **optional**\n - /// A short localized string describing the purpose of the type. (e.g. - /// "Any time at this channel if title matches"). - /// - /// If left blank, Kodi will generate a description based on the attributes - /// REPEATING and MANUAL. (e.g. "Repeating EPG-based.") - void SetDescription(const std::string& description) - { - strncpy(m_cStructure->strDescription, description.c_str(), - sizeof(m_cStructure->strDescription) - 1); - } - - /// @brief To get with @ref SetDescription changed values. - std::string GetDescription() const { return m_cStructure->strDescription; } - - //---------------------------------------------------------------------------- - - /// @brief **optional**\n - /// Priority value definitions. - /// - /// Array containing the possible values for @ref PVRTimer::SetPriority(). - /// - /// @param[in] priorities List of priority values - /// @param[in] prioritiesDefault [opt] The default value in list, can also be - /// set by @ref SetPrioritiesDefault() - /// - /// -------------------------------------------------------------------------- - /// - /// @copydetails cpp_kodi_addon_pvr_Defs_PVRTypeIntValue_Help - void SetPriorities(const std::vector& priorities, int prioritiesDefault = -1) - { - m_cStructure->iPrioritiesSize = static_cast(priorities.size()); - for (unsigned int i = 0; - i < m_cStructure->iPrioritiesSize && i < sizeof(m_cStructure->priorities); ++i) - { - m_cStructure->priorities[i].iValue = priorities[i].GetCStructure()->iValue; - strncpy(m_cStructure->priorities[i].strDescription, - priorities[i].GetCStructure()->strDescription, - sizeof(m_cStructure->priorities[i].strDescription) - 1); - } - if (prioritiesDefault != -1) - m_cStructure->iPrioritiesDefault = prioritiesDefault; - } - - /// @brief To get with @ref SetPriorities changed values. - std::vector GetPriorities() const - { - std::vector ret; - for (unsigned int i = 0; i < m_cStructure->iPrioritiesSize; ++i) - ret.emplace_back(m_cStructure->priorities[i].iValue, - m_cStructure->priorities[i].strDescription); - return ret; - } - - /// @brief **optional**\n - /// The default value for @ref PVRTimer::SetPriority(). - /// - /// @note Must be filled if @ref SetPriorities contain values and not - /// defined there on second function value. - void SetPrioritiesDefault(int prioritiesDefault) - { - m_cStructure->iPrioritiesDefault = prioritiesDefault; - } - - /// @brief To get with @ref SetPrioritiesDefault changed values. - int GetPrioritiesDefault() const { return m_cStructure->iPrioritiesDefault; } - - //---------------------------------------------------------------------------- - - /// @brief **optional**\n - /// Lifetime value definitions. - /// - /// Array containing the possible values for @ref PVRTimer::SetLifetime(). - /// - /// @param[in] lifetimes List of lifetimes values - /// @param[in] lifetimesDefault [opt] The default value in list, can also be - /// set by @ref SetLifetimesDefault() - /// - /// -------------------------------------------------------------------------- - /// - /// @copydetails cpp_kodi_addon_pvr_Defs_PVRTypeIntValue_Help - void SetLifetimes(const std::vector& lifetimes, int lifetimesDefault = -1) - { - m_cStructure->iLifetimesSize = static_cast(lifetimes.size()); - for (unsigned int i = 0; - i < m_cStructure->iLifetimesSize && i < sizeof(m_cStructure->lifetimes); ++i) - { - m_cStructure->lifetimes[i].iValue = lifetimes[i].GetCStructure()->iValue; - strncpy(m_cStructure->lifetimes[i].strDescription, - lifetimes[i].GetCStructure()->strDescription, - sizeof(m_cStructure->lifetimes[i].strDescription) - 1); - } - if (lifetimesDefault != -1) - m_cStructure->iLifetimesDefault = lifetimesDefault; - } - - /// @brief To get with @ref SetLifetimes changed values. - std::vector GetLifetimes() const - { - std::vector ret; - for (unsigned int i = 0; i < m_cStructure->iLifetimesSize; ++i) - ret.emplace_back(m_cStructure->lifetimes[i].iValue, - m_cStructure->lifetimes[i].strDescription); - return ret; - } - - /// @brief **optional**\n - /// The default value for @ref SetLifetimes(). - /// - /// @note Must be filled if @ref SetLifetimes contain values and not - /// defined there on second function value. - void SetLifetimesDefault(int lifetimesDefault) - { - m_cStructure->iLifetimesDefault = lifetimesDefault; - } - - /// @brief To get with @ref SetLifetimesDefault changed values. - int GetLifetimesDefault() const { return m_cStructure->iLifetimesDefault; } - - //---------------------------------------------------------------------------- - - /// @brief **optional**\n - /// Prevent duplicate episodes value definitions. - /// - /// Array containing the possible values for @ref PVRTimer::SetPreventDuplicateEpisodes(). - /// - /// @note Must be filled if @ref PVRTimer::SetPreventDuplicateEpisodes() is not empty. - /// - /// @param[in] preventDuplicateEpisodes List of duplicate episodes values - /// @param[in] preventDuplicateEpisodesDefault [opt] The default value in list, can also be - /// set by @ref SetPreventDuplicateEpisodesDefault() - /// - /// -------------------------------------------------------------------------- - /// - /// @copydetails cpp_kodi_addon_pvr_Defs_PVRTypeIntValue_Help - void SetPreventDuplicateEpisodes( - const std::vector& preventDuplicateEpisodes, - int preventDuplicateEpisodesDefault = -1) - { - m_cStructure->iPreventDuplicateEpisodesSize = - static_cast(preventDuplicateEpisodes.size()); - for (unsigned int i = 0; i < m_cStructure->iPreventDuplicateEpisodesSize && - i < sizeof(m_cStructure->preventDuplicateEpisodes); - ++i) - { - m_cStructure->preventDuplicateEpisodes[i].iValue = - preventDuplicateEpisodes[i].GetCStructure()->iValue; - strncpy(m_cStructure->preventDuplicateEpisodes[i].strDescription, - preventDuplicateEpisodes[i].GetCStructure()->strDescription, - sizeof(m_cStructure->preventDuplicateEpisodes[i].strDescription) - 1); - } - if (preventDuplicateEpisodesDefault != -1) - m_cStructure->iPreventDuplicateEpisodesDefault = preventDuplicateEpisodesDefault; - } - - /// @brief To get with @ref SetPreventDuplicateEpisodes changed values. - std::vector GetPreventDuplicateEpisodes() const - { - std::vector ret; - for (unsigned int i = 0; i < m_cStructure->iPreventDuplicateEpisodesSize; ++i) - ret.emplace_back(m_cStructure->preventDuplicateEpisodes[i].iValue, - m_cStructure->preventDuplicateEpisodes[i].strDescription); - return ret; - } - - /// @brief **optional**\n - /// The default value for @ref PVRTimer::SetPreventDuplicateEpisodes(). - /// - /// @note Must be filled if @ref SetPreventDuplicateEpisodes contain values and not - /// defined there on second function value. - void SetPreventDuplicateEpisodesDefault(int preventDuplicateEpisodesDefault) - { - m_cStructure->iPreventDuplicateEpisodesDefault = preventDuplicateEpisodesDefault; - } - - /// @brief To get with @ref SetPreventDuplicateEpisodesDefault changed values. - int GetPreventDuplicateEpisodesDefault() const - { - return m_cStructure->iPreventDuplicateEpisodesDefault; - } - - //---------------------------------------------------------------------------- - - /// @brief **optional**\n - /// Array containing the possible values of @ref PVRTimer::SetRecordingGroup() - /// - /// @param[in] recordingGroup List of recording group values - /// @param[in] recordingGroupDefault [opt] The default value in list, can also be - /// set by @ref SetRecordingGroupDefault() - /// - /// -------------------------------------------------------------------------- - /// - /// @copydetails cpp_kodi_addon_pvr_Defs_PVRTypeIntValue_Help - void SetRecordingGroups(const std::vector& recordingGroup, - int recordingGroupDefault = -1) - { - m_cStructure->iRecordingGroupSize = static_cast(recordingGroup.size()); - for (unsigned int i = 0; - i < m_cStructure->iRecordingGroupSize && i < sizeof(m_cStructure->recordingGroup); ++i) - { - m_cStructure->recordingGroup[i].iValue = recordingGroup[i].GetCStructure()->iValue; - strncpy(m_cStructure->recordingGroup[i].strDescription, - recordingGroup[i].GetCStructure()->strDescription, - sizeof(m_cStructure->recordingGroup[i].strDescription) - 1); - } - if (recordingGroupDefault != -1) - m_cStructure->iRecordingGroupDefault = recordingGroupDefault; - } - - /// @brief To get with @ref SetRecordingGroups changed values - std::vector GetRecordingGroups() const - { - std::vector ret; - for (unsigned int i = 0; i < m_cStructure->iRecordingGroupSize; ++i) - ret.emplace_back(m_cStructure->recordingGroup[i].iValue, - m_cStructure->recordingGroup[i].strDescription); - return ret; - } - - /// @brief **optional**\n - /// The default value for @ref PVRTimer::SetRecordingGroup(). - /// - /// @note Must be filled if @ref SetRecordingGroups contain values and not - /// defined there on second function value. - void SetRecordingGroupDefault(int recordingGroupDefault) - { - m_cStructure->iRecordingGroupDefault = recordingGroupDefault; - } - - /// @brief To get with @ref SetRecordingGroupDefault changed values - int GetRecordingGroupDefault() const { return m_cStructure->iRecordingGroupDefault; } - - //---------------------------------------------------------------------------- - - /// @brief **optional**\n - /// Array containing the possible values of @ref PVRTimer::SetMaxRecordings(). - /// - /// @param[in] maxRecordings List of lifetimes values - /// @param[in] maxRecordingsDefault [opt] The default value in list, can also be - /// set by @ref SetMaxRecordingsDefault() - /// - /// -------------------------------------------------------------------------- - /// - /// @copydetails cpp_kodi_addon_pvr_Defs_PVRTypeIntValue_Help - void SetMaxRecordings(const std::vector& maxRecordings, - int maxRecordingsDefault = -1) - { - m_cStructure->iMaxRecordingsSize = static_cast(maxRecordings.size()); - for (unsigned int i = 0; - i < m_cStructure->iMaxRecordingsSize && i < sizeof(m_cStructure->maxRecordings); ++i) - { - m_cStructure->maxRecordings[i].iValue = maxRecordings[i].GetCStructure()->iValue; - strncpy(m_cStructure->maxRecordings[i].strDescription, - maxRecordings[i].GetCStructure()->strDescription, - sizeof(m_cStructure->maxRecordings[i].strDescription) - 1); - } - if (maxRecordingsDefault != -1) - m_cStructure->iMaxRecordingsDefault = maxRecordingsDefault; - } - - /// @brief To get with @ref SetMaxRecordings changed values - std::vector GetMaxRecordings() const - { - std::vector ret; - for (unsigned int i = 0; i < m_cStructure->iMaxRecordingsSize; ++i) - ret.emplace_back(m_cStructure->maxRecordings[i].iValue, - m_cStructure->maxRecordings[i].strDescription); - return ret; - } - - /// @brief **optional**\n - /// The default value for @ref SetMaxRecordings(). - /// - /// Can be set with here if on @ref SetMaxRecordings not given as second value. - void SetMaxRecordingsDefault(int maxRecordingsDefault) - { - m_cStructure->iMaxRecordingsDefault = maxRecordingsDefault; - } - - /// @brief To get with @ref SetMaxRecordingsDefault changed values - int GetMaxRecordingsDefault() const { return m_cStructure->iMaxRecordingsDefault; } - ///@} - -private: - PVRTimerType(const PVR_TIMER_TYPE* type) : CStructHdl(type) {} - PVRTimerType(PVR_TIMER_TYPE* type) : CStructHdl(type) {} -}; -///@} -//------------------------------------------------------------------------------ - -} /* namespace addon */ -} /* namespace kodi */ - -#endif /* __cplusplus */ -- cgit v1.2.3