11 #include "XBDateTime.h" 12 #include "addons/AddonVersion.h" 17 #include <unordered_map> 29 typedef std::shared_ptr<CAddonInfo> AddonInfoPtr;
30 typedef std::vector<AddonInfoPtr> AddonInfos;
32 using AddonInstanceId = uint32_t;
38 constexpr
const char* KODI_ADDON_DEFAULT_LANGUAGE_CODE =
"en_GB";
40 enum class AddonDisabledReason
51 enum class AddonOriginType
62 enum class AddonUpdateRule
65 USER_DISABLED_AUTO_UPDATE = 1,
75 enum class AddonInstanceSupport
81 SUPPORT_MANDATORY = 1,
101 enum class AddonLifecycleState
118 versionMin(versionMin.empty() ? version : versionMin),
126 return id == rhs.id && versionMin == rhs.versionMin && version == rhs.version &&
127 optional == rhs.optional;
132 return !(rhs == *
this);
136 typedef std::map<std::string, std::string> InfoMap;
137 typedef std::map<std::string, std::string> ArtMap;
147 void SetMainType(AddonType type) { m_mainType = type; }
148 void SetBinary(
bool isBinary) { m_isBinary = isBinary; }
149 void SetLibName(
const std::string& libname) { m_libname = libname; }
150 void SetPath(
const std::string& path) { m_path = path; }
151 void AddExtraInfo(
const std::string& idName,
const std::string& value) { m_extrainfo[idName] = value; }
152 void SetLastUsed(
const CDateTime& dateTime) { m_lastUsed = dateTime; }
154 const std::string& ID()
const {
return m_id; }
172 bool HasType(AddonType type,
bool mainOnly =
false)
const;
181 const std::vector<CAddonType>&
Types()
const {
return m_types; }
203 bool ProvidesSubContent(AddonType content, AddonType mainType)
const;
204 bool ProvidesSeveralSubContents()
const;
207 const CAddonVersion& MinVersion()
const {
return m_minversion; }
208 bool IsBinary()
const {
return m_isBinary; }
209 const CAddonVersion& DependencyMinVersion(
const std::string& dependencyID)
const;
210 const CAddonVersion& DependencyVersion(
const std::string& dependencyID)
const;
211 const std::string& Name()
const {
return m_name; }
212 const std::string& License()
const {
return m_license; }
213 const std::string& Summary()
const {
return GetTranslatedText(m_summary); }
214 const std::string& Description()
const {
return GetTranslatedText(m_description); }
215 const std::string& LibName()
const {
return m_libname; }
216 const std::string& Author()
const {
return m_author; }
217 const std::string& Source()
const {
return m_source; }
218 const std::string& Website()
const {
return m_website; }
219 const std::string& Forum()
const {
return m_forum; }
220 const std::string& EMail()
const {
return m_email; }
221 const std::string& Path()
const {
return m_path; }
222 const std::string& ProfilePath()
const {
return m_profilePath; }
223 const std::string& ChangeLog()
const {
return GetTranslatedText(m_changelog); }
224 const std::string& Icon()
const {
return m_icon; }
225 const ArtMap& Art()
const {
return m_art; }
226 const std::vector<std::string>& Screenshots()
const {
return m_screenshots; }
227 const std::string& Disclaimer()
const {
return GetTranslatedText(m_disclaimer); }
228 const std::vector<DependencyInfo>& GetDependencies()
const {
return m_dependencies; }
229 AddonLifecycleState LifecycleState()
const {
return m_lifecycleState; }
230 const std::string& LifecycleStateDescription()
const 232 return GetTranslatedText(m_lifecycleStateDescription);
234 const std::string& Origin()
const {
return m_origin; }
235 const std::string& OriginName()
const;
237 const InfoMap& ExtraInfo()
const {
return m_extrainfo; }
240 uint64_t PackageSize()
const {
return m_packageSize; }
241 CDateTime InstallDate()
const {
return m_installDate; }
242 CDateTime LastUpdated()
const {
return m_lastUpdated; }
243 CDateTime LastUsed()
const {
return m_lastUsed; }
245 bool SupportsMultipleInstances()
const;
246 AddonInstanceSupport InstanceUseType()
const {
return m_addonInstanceSupportType; }
248 bool SupportsAddonSettings()
const {
return m_supportsAddonSettings; }
249 bool SupportsInstanceSettings()
const {
return m_supportsInstanceSettings; }
250 std::vector<AddonInstanceId> GetKnownInstanceIds()
const;
256 static std::string TranslateType(AddonType type,
bool pretty =
false);
257 static std::string TranslateIconType(AddonType type);
258 static AddonType TranslateType(
const std::string&
string);
259 static AddonType TranslateSubContent(
const std::string& content);
260 static AddonInstanceSupport InstanceSupportType(AddonType type);
268 AddonType m_mainType{};
269 std::vector<CAddonType> m_types;
273 bool m_isBinary =
false;
275 std::string m_license;
276 std::unordered_map<std::string, std::string> m_summary;
277 std::unordered_map<std::string, std::string> m_description;
278 std::string m_author;
279 std::string m_source;
280 std::string m_website;
284 std::string m_profilePath;
285 std::unordered_map<std::string, std::string> m_changelog;
288 std::vector<std::string> m_screenshots;
289 std::unordered_map<std::string, std::string> m_disclaimer;
290 std::vector<DependencyInfo> m_dependencies;
291 AddonLifecycleState m_lifecycleState = AddonLifecycleState::NORMAL;
292 std::unordered_map<std::string, std::string> m_lifecycleStateDescription;
296 std::string m_origin;
297 mutable std::unique_ptr<std::string> m_originName;
298 uint64_t m_packageSize = 0;
299 std::string m_libname;
301 std::vector<std::string> m_platforms;
302 AddonInstanceSupport m_addonInstanceSupportType{AddonInstanceSupport::SUPPORT_NONE};
303 bool m_supportsAddonSettings{
false};
304 bool m_supportsInstanceSettings{
false};
306 const std::string& GetTranslatedText(
const std::unordered_map<std::string, std::string>& locales)
const;
Definition: AddonType.h:77
Definition: AddonInfo.h:108
Definition: AddonVersion.h:27
Definition: AddonInfoBuilder.h:70
Definition: AddonInfo.h:141
AddonType MainType() const
To get the main type of this addon.
Definition: AddonInfo.h:163
DateTime class, which uses FileTime as it's base.
Definition: XBDateTime.h:63
const std::vector< CAddonType > & Types() const
To get all available types inside the addon.
Definition: AddonInfo.h:181
Definition: AddonInfoBuilder.h:36