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.
21 enum class AddonInstanceSupport
;
22 enum class AddonLifecycleState
;
29 struct DependencyInfo
;
31 using AddonInstanceId
= uint32_t;
33 constexpr const char* ADDON_SETTING_INSTANCE_GROUP
= "kodi_addon_instance";
34 constexpr const char* ADDON_SETTING_INSTANCE_NAME_VALUE
= "kodi_addon_instance_name";
35 constexpr const char* ADDON_SETTING_INSTANCE_ENABLED_VALUE
= "kodi_addon_instance_enabled";
38 * @brief Identifier denoting default add-on instance.
40 * All numbers greater than 0 denote add-ons with support for multiple instances.
42 constexpr AddonInstanceId ADDON_SINGLETON_INSTANCE_ID
= 0;
45 * @brief Identifier denoting initial first add-on instance.
47 constexpr AddonInstanceId ADDON_FIRST_INSTANCE_ID
= 1;
50 * @brief Identifier denoting add-on instance id as unused.
52 * @sa ADDON::IAddonInstanceHandler
54 constexpr AddonInstanceId ADDON_INSTANCE_ID_UNUSED
= ADDON_SINGLETON_INSTANCE_ID
;
57 * @brief Identifier denoting default add-on settings.xml.
59 * All numbers greater than 0 denote add-on instances with an individual set of settings.
61 constexpr AddonInstanceId ADDON_SETTINGS_ID
= ADDON_SINGLETON_INSTANCE_ID
;
63 constexpr char const* ORIGIN_SYSTEM
= "b6a50484-93a0-4afb-a01c-8d17e059feda";
66 typedef std::shared_ptr
<IAddon
> AddonPtr
;
67 typedef std::vector
<AddonPtr
> VECADDONS
;
69 using InfoMap
= std::map
<std::string
, std::string
>;
70 using ArtMap
= std::map
<std::string
, std::string
>;
72 class IAddon
: public std::enable_shared_from_this
<IAddon
>
75 virtual ~IAddon() = default;
76 virtual AddonType
MainType() const = 0;
77 virtual AddonType
Type() const = 0;
78 virtual bool HasType(AddonType type
) const = 0;
79 virtual bool HasMainType(AddonType type
) const = 0;
80 virtual std::string
ID() const = 0;
81 virtual std::string
Name() const = 0;
82 virtual bool IsInUse() const = 0;
83 virtual bool IsBinary() const = 0;
84 virtual CAddonVersion
Version() const = 0;
85 virtual CAddonVersion
MinVersion() const = 0;
86 virtual std::string
Summary() const = 0;
87 virtual std::string
Description() const = 0;
88 virtual std::string
Path() const = 0;
89 virtual std::string
Profile() const = 0;
90 virtual std::string
LibPath() const = 0;
91 virtual std::string
ChangeLog() const = 0;
92 virtual std::string
FanArt() const = 0;
93 virtual ArtMap
Art() const = 0;
94 virtual std::vector
<std::string
> Screenshots() const = 0;
95 virtual std::string
Author() const = 0;
96 virtual std::string
Icon() const = 0;
97 virtual std::string
Disclaimer() const = 0;
98 virtual AddonLifecycleState
LifecycleState() const = 0;
99 virtual std::string
LifecycleStateDescription() const = 0;
100 virtual CDateTime
InstallDate() const = 0;
101 virtual CDateTime
LastUpdated() const = 0;
102 virtual CDateTime
LastUsed() const = 0;
103 virtual std::string
Origin() const = 0;
104 virtual std::string
OriginName() const = 0;
105 virtual uint64_t PackageSize() const = 0;
106 virtual const InfoMap
& ExtraInfo() const = 0;
107 virtual bool SupportsMultipleInstances() const = 0;
108 virtual AddonInstanceSupport
InstanceUseType() const = 0;
109 virtual std::vector
<AddonInstanceId
> GetKnownInstanceIds() const = 0;
110 virtual bool SupportsInstanceSettings() const = 0;
111 virtual bool DeleteInstanceSettings(AddonInstanceId instance
) = 0;
112 virtual bool CanHaveAddonOrInstanceSettings() = 0;
113 virtual bool HasSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
114 virtual bool HasUserSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
115 virtual bool SaveSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
116 virtual void UpdateSetting(const std::string
& key
,
117 const std::string
& value
,
118 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
119 virtual bool UpdateSettingBool(const std::string
& key
,
121 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
122 virtual bool UpdateSettingInt(const std::string
& key
,
124 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
125 virtual bool UpdateSettingNumber(const std::string
& key
,
127 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
128 virtual bool UpdateSettingString(const std::string
& key
,
129 const std::string
& value
,
130 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
131 virtual std::string
GetSetting(const std::string
& key
,
132 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
133 virtual bool GetSettingBool(const std::string
& key
,
135 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
136 virtual bool GetSettingInt(const std::string
& key
,
138 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
139 virtual bool GetSettingNumber(const std::string
& key
,
141 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
142 virtual bool GetSettingString(const std::string
& key
,
144 AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
145 virtual std::shared_ptr
<CAddonSettings
> GetSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
146 virtual const std::vector
<DependencyInfo
>& GetDependencies() const = 0;
147 virtual CAddonVersion
GetDependencyVersion(const std::string
& dependencyID
) const = 0;
148 virtual bool MeetsVersion(const CAddonVersion
& versionMin
,
149 const CAddonVersion
& version
) const = 0;
150 virtual bool ReloadSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
151 virtual void ResetSettings(AddonInstanceId id
= ADDON_SETTINGS_ID
) = 0;
152 virtual AddonPtr
GetRunningInstance() const = 0;
153 virtual void OnPreInstall() = 0;
154 virtual void OnPostInstall(bool update
, bool modal
) = 0;
155 virtual void OnPreUnInstall() = 0;
156 virtual void OnPostUnInstall() = 0;
159 }; // namespace ADDON