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