1 /*
2  *  Copyright (C) 2013-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #include "IListProvider.h"
10 
11 #include "DirectoryProvider.h"
12 #include "MultiProvider.h"
13 #include "StaticProvider.h"
14 #include "utils/XBMCTinyXML.h"
15 
Create(const TiXmlNode * node,int parentID)16 IListProvider *IListProvider::Create(const TiXmlNode *node, int parentID)
17 {
18   const TiXmlNode *root = node->FirstChild("content");
19   if (root)
20   {
21     const TiXmlNode *next = root->NextSibling("content");
22     if (next)
23       return new CMultiProvider(root, parentID);
24 
25     return CreateSingle(root, parentID);
26   }
27   return NULL;
28 }
29 
CreateSingle(const TiXmlNode * content,int parentID)30 IListProvider *IListProvider::CreateSingle(const TiXmlNode *content, int parentID)
31 {
32   const TiXmlElement *item = content->FirstChildElement("item");
33   if (item)
34     return new CStaticListProvider(content->ToElement(), parentID);
35 
36   if (!content->NoChildren())
37     return new CDirectoryProvider(content->ToElement(), parentID);
38 
39   return NULL;
40 }
41