2 * Copyright (C) 2005-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.
11 #include "addons/IAddon.h"
16 #include <unordered_map>
24 enum class AddonLifecycleState
;
27 class CAddonExtensions
;
30 struct DependencyInfo
;
31 struct RepositoryDirInfo
;
34 using AddonInfoPtr
= std::shared_ptr
<CAddonInfo
>;
36 class CAddonInfoBuilder
39 static AddonInfoPtr
Generate(const std::string
& id
, AddonType type
);
40 static AddonInfoPtr
Generate(const std::string
& addonPath
, bool platformCheck
= true);
41 static AddonInfoPtr
Generate(const TiXmlElement
* baseElement
,
42 const RepositoryDirInfo
& repo
,
43 bool platformCheck
= true);
46 * @brief Parts used from CAddonDatabase
49 static void SetInstallData(const AddonInfoPtr
& addon
, const CDateTime
& installDate
,
50 const CDateTime
& lastUpdated
, const CDateTime
& lastUsed
, const std::string
& origin
);
54 static bool ParseXML(const AddonInfoPtr
& addon
,
55 const TiXmlElement
* element
,
56 const std::string
& addonPath
);
57 static bool ParseXML(const AddonInfoPtr
& addon
,
58 const TiXmlElement
* element
,
59 const std::string
& addonPath
,
60 const RepositoryDirInfo
& repo
);
61 static bool ParseXMLTypes(CAddonType
& addonType
,
62 const AddonInfoPtr
& info
,
63 const TiXmlElement
* child
);
64 static bool ParseXMLExtension(CAddonExtensions
& addonExt
, const TiXmlElement
* element
);
65 static bool GetTextList(const TiXmlElement
* element
, const std::string
& tag
, std::unordered_map
<std::string
, std::string
>& translatedValues
);
66 static const char* GetPlatformLibraryName(const TiXmlElement
* element
);
67 static bool PlatformSupportsAddon(const AddonInfoPtr
& addon
);
70 class CAddonInfoBuilderFromDB
73 CAddonInfoBuilderFromDB();
75 void SetId(std::string id
);
76 void SetName(std::string name
);
77 void SetLicense(std::string license
);
78 void SetSummary(std::string summary
);
79 void SetDescription(std::string description
);
80 void SetDisclaimer(std::string disclaimer
);
81 void SetAuthor(std::string author
);
82 void SetSource(std::string source
);
83 void SetWebsite(std::string website
);
84 void SetForum(std::string forum
);
85 void SetEMail(std::string email
);
86 void SetIcon(std::string icon
);
87 void SetArt(const std::string
& type
, std::string value
);
88 void SetArt(std::map
<std::string
, std::string
> art
);
89 void SetScreenshots(std::vector
<std::string
> screenshots
);
90 void SetChangelog(std::string changelog
);
91 void SetLifecycleState(AddonLifecycleState state
, std::string description
);
92 void SetPath(std::string path
);
93 void SetLibName(std::string libname
);
94 void SetVersion(CAddonVersion version
);
95 void SetDependencies(std::vector
<DependencyInfo
> dependencies
);
96 void SetExtrainfo(InfoMap extrainfo
);
97 void SetInstallDate(const CDateTime
& installDate
);
98 void SetLastUpdated(const CDateTime
& lastUpdated
);
99 void SetLastUsed(const CDateTime
& lastUsed
);
100 void SetOrigin(std::string origin
);
101 void SetPackageSize(uint64_t size
);
102 void SetExtensions(CAddonType addonType
);
104 const AddonInfoPtr
& get() { return m_addonInfo
; }
107 AddonInfoPtr m_addonInfo
;