/* * Copyright (C) 2012-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 #include #include #include struct PVR_MENUHOOK; namespace PVR { class CPVRClientMenuHook { public: CPVRClientMenuHook() = delete; virtual ~CPVRClientMenuHook() = default; CPVRClientMenuHook(const std::string& addonId, const PVR_MENUHOOK& hook); bool operator ==(const CPVRClientMenuHook& right) const; bool IsAllHook() const; bool IsChannelHook() const; bool IsTimerHook() const; bool IsEpgHook() const; bool IsRecordingHook() const; bool IsDeletedRecordingHook() const; bool IsSettingsHook() const; std::string GetAddonId() const; unsigned int GetId() const; unsigned int GetLabelId() const; std::string GetLabel() const; private: std::string m_addonId; std::shared_ptr m_hook; }; class CPVRClientMenuHooks { public: CPVRClientMenuHooks() = default; virtual ~CPVRClientMenuHooks() = default; explicit CPVRClientMenuHooks(const std::string& addonId) : m_addonId(addonId) {} void AddHook(const PVR_MENUHOOK& addonHook); void Clear(); std::vector GetChannelHooks() const; std::vector GetTimerHooks() const; std::vector GetEpgHooks() const; std::vector GetRecordingHooks() const; std::vector GetDeletedRecordingHooks() const; std::vector GetSettingsHooks() const; private: std::vector GetHooks( const std::function& function) const; std::string m_addonId; std::unique_ptr> m_hooks; }; }