kodi
AddonInfoBuilder.h
1 /*
2  * Copyright (C) 2005-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 #pragma once
10 
11 #include "addons/IAddon.h"
12 
13 #include <map>
14 #include <memory>
15 #include <string>
16 #include <unordered_map>
17 #include <vector>
18 
19 class CDateTime;
20 class TiXmlElement;
21 
22 namespace ADDON
23 {
24 enum class AddonLifecycleState;
25 enum class AddonType;
26 
27 class CAddonExtensions;
28 class CAddonType;
29 
30 struct DependencyInfo;
31 struct RepositoryDirInfo;
32 
33 class CAddonInfo;
34 using AddonInfoPtr = std::shared_ptr<CAddonInfo>;
35 
37 {
38 public:
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);
44 
49  static void SetInstallData(const AddonInfoPtr& addon, const CDateTime& installDate,
50  const CDateTime& lastUpdated, const CDateTime& lastUsed, const std::string& origin);
52 
53 private:
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);
68 };
69 
71 {
72 public:
74 
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);
103 
104  const AddonInfoPtr& get() { return m_addonInfo; }
105 
106 private:
107  AddonInfoPtr m_addonInfo;
108 };
109 }
Definition: AddonType.h:77
Definition: AddonExtensions.h:54
Definition: AddonVersion.h:27
Definition: AddonInfoBuilder.h:70
DateTime class, which uses FileTime as it&#39;s base.
Definition: XBDateTime.h:63
Definition: Addon.cpp:39
static void SetInstallData(const AddonInfoPtr &addon, const CDateTime &installDate, const CDateTime &lastUpdated, const CDateTime &lastUsed, const std::string &origin)
Parts used from CAddonDatabase.
Definition: AddonInfoBuilder.cpp:246
Definition: Repository.h:23
Definition: AddonInfoBuilder.h:36