Merge pull request #26350 from jjd-uk/estuary_media_align
[xbmc.git] / xbmc / guilib / listproviders / IListProvider.cpp
blob3979319ba7c746b6c2fd557b525132a264786fce
1 /*
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.
7 */
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");
19 if (root)
21 const TiXmlNode *next = root->NextSibling("content");
22 if (next)
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");
33 if (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>{};