From c04dcc2e7d834218ef2d4194331e383402495ae1 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 10 Apr 2024 20:07:22 +0200 Subject: Adding upstream version 2:20.4+dfsg. Signed-off-by: Daniel Baumann --- xbmc/listproviders/MultiProvider.h | 45 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 xbmc/listproviders/MultiProvider.h (limited to 'xbmc/listproviders/MultiProvider.h') diff --git a/xbmc/listproviders/MultiProvider.h b/xbmc/listproviders/MultiProvider.h new file mode 100644 index 0000000..9eeddc0 --- /dev/null +++ b/xbmc/listproviders/MultiProvider.h @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2013-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 "IListProvider.h" +#include "threads/CriticalSection.h" + +#include +#include + +typedef std::unique_ptr IListProviderPtr; + +/*! + \ingroup listproviders + \brief A listprovider that handles multiple individual providers. + */ +class CMultiProvider : public IListProvider +{ +public: + CMultiProvider(const TiXmlNode *first, int parentID); + explicit CMultiProvider(const CMultiProvider& other); + + // Implementation of IListProvider + std::unique_ptr Clone() override; + bool Update(bool forceRefresh) override; + void Fetch(std::vector &items) override; + bool IsUpdating() const override; + void Reset() override; + bool OnClick(const CGUIListItemPtr &item) override; + bool OnInfo(const CGUIListItemPtr &item) override; + bool OnContextMenu(const CGUIListItemPtr &item) override; + +protected: + typedef size_t item_key_type; + static item_key_type GetItemKey(CGUIListItemPtr const &item); + std::vector m_providers; + std::map m_itemMap; + CCriticalSection m_section; // protects m_itemMap +}; -- cgit v1.2.3