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";
42 constexpr AddonInstanceId ADDON_SINGLETON_INSTANCE_ID = 0;
47 constexpr AddonInstanceId ADDON_FIRST_INSTANCE_ID = 1;
54 constexpr AddonInstanceId ADDON_INSTANCE_ID_UNUSED = ADDON_SINGLETON_INSTANCE_ID;
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;
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;
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 void 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;
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;
Definition: AddonVersion.h:27
Definition: addon_base.h:267
DateTime class, which uses FileTime as it's base.
Definition: XBDateTime.h:63