/* * Copyright (C) 2016-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 "utils/EventStream.h" #include #include class IContextMenuItem; namespace PVR { enum class PVRContextMenuEventAction { ADD_ITEM, REMOVE_ITEM }; struct PVRContextMenuEvent { PVRContextMenuEvent(const PVRContextMenuEventAction& a, const std::shared_ptr& i) : action(a), item(i) { } PVRContextMenuEventAction action; std::shared_ptr item; }; class CPVRClientMenuHook; class CPVRContextMenuManager { public: static CPVRContextMenuManager& GetInstance(); std::vector> GetMenuItems() const { return m_items; } void AddMenuHook(const CPVRClientMenuHook& hook); void RemoveMenuHook(const CPVRClientMenuHook& hook); /*! * @brief Query the events available for CEventStream */ CEventStream& Events() { return m_events; } private: CPVRContextMenuManager(); CPVRContextMenuManager(const CPVRContextMenuManager&) = delete; CPVRContextMenuManager const& operator=(CPVRContextMenuManager const&) = delete; virtual ~CPVRContextMenuManager() = default; std::vector> m_items; CEventSource m_events; }; } // namespace PVR