2 * Copyright (C) 2013-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
9 #include "IListProvider.h"
11 #include "DirectoryProvider.h"
12 #include "MultiProvider.h"
13 #include "StaticProvider.h"
14 #include "utils/XBMCTinyXML.h"
16 std::unique_ptr
<IListProvider
> IListProvider::Create(const TiXmlNode
* node
, int parentID
)
18 const TiXmlNode
*root
= node
->FirstChild("content");
21 const TiXmlNode
*next
= root
->NextSibling("content");
23 return std::make_unique
<CMultiProvider
>(root
, parentID
);
25 return CreateSingle(root
, parentID
);
27 return std::unique_ptr
<IListProvider
>{};
30 std::unique_ptr
<IListProvider
> IListProvider::CreateSingle(const TiXmlNode
* content
, int parentID
)
32 const TiXmlElement
*item
= content
->FirstChildElement("item");
34 return std::make_unique
<CStaticListProvider
>(content
->ToElement(), parentID
);
36 if (!content
->NoChildren())
37 return std::make_unique
<CDirectoryProvider
>(content
->ToElement(), parentID
);
39 return std::unique_ptr
<IListProvider
>{};