diff options
Diffstat (limited to 'xbmc/addons/IAddon.h')
-rw-r--r-- | xbmc/addons/IAddon.h | 159 |
1 files changed, 159 insertions, 0 deletions
diff --git a/xbmc/addons/IAddon.h b/xbmc/addons/IAddon.h new file mode 100644 index 0000000..6953b20 --- /dev/null +++ b/xbmc/addons/IAddon.h @@ -0,0 +1,159 @@ +/* + * Copyright (C) 2005-2018 Team Kodi + * This file is part of Kodi - https://kodi.tv + * + * SPDX-License-Identifier: GPL-2.0-or-later + * See LICENSES/README.md for more information. + */ + +#pragma once + +#include <map> +#include <memory> +#include <string> +#include <vector> + +class CDateTime; +class TiXmlElement; + +namespace ADDON +{ +enum class AddonInstanceSupport; +enum class AddonLifecycleState; +enum class AddonType; + +class CAddonMgr; +class CAddonSettings; +class CAddonVersion; + +struct DependencyInfo; + +using AddonInstanceId = uint32_t; + +constexpr const char* ADDON_SETTING_INSTANCE_GROUP = "kodi_addon_instance"; +constexpr const char* ADDON_SETTING_INSTANCE_NAME_VALUE = "kodi_addon_instance_name"; +constexpr const char* ADDON_SETTING_INSTANCE_ENABLED_VALUE = "kodi_addon_instance_enabled"; + +/*! + * @brief Identifier denoting default add-on instance. + * + * All numbers greater than 0 denote add-ons with support for multiple instances. + */ +constexpr AddonInstanceId ADDON_SINGLETON_INSTANCE_ID = 0; + +/*! + * @brief Identifier denoting initial first add-on instance. + */ +constexpr AddonInstanceId ADDON_FIRST_INSTANCE_ID = 1; + +/*! + * @brief Identifier denoting add-on instance id as unused. + * + * @sa ADDON::IAddonInstanceHandler + */ +constexpr AddonInstanceId ADDON_INSTANCE_ID_UNUSED = ADDON_SINGLETON_INSTANCE_ID; + +/*! + * @brief Identifier denoting default add-on settings.xml. + * + * All numbers greater than 0 denote add-on instances with an individual set of settings. + */ +constexpr AddonInstanceId ADDON_SETTINGS_ID = ADDON_SINGLETON_INSTANCE_ID; + +constexpr char const* ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda"; + +class IAddon; +typedef std::shared_ptr<IAddon> AddonPtr; +typedef std::vector<AddonPtr> VECADDONS; + +using InfoMap = std::map<std::string, std::string>; +using ArtMap = std::map<std::string, std::string>; + +class IAddon : public std::enable_shared_from_this<IAddon> +{ +public: + virtual ~IAddon() = default; + virtual AddonType MainType() const = 0; + virtual AddonType Type() const = 0; + virtual bool HasType(AddonType type) const = 0; + virtual bool HasMainType(AddonType type) const = 0; + virtual std::string ID() const = 0; + virtual std::string Name() const = 0; + virtual bool IsInUse() const = 0; + virtual bool IsBinary() const = 0; + virtual CAddonVersion Version() const = 0; + virtual CAddonVersion MinVersion() const = 0; + virtual std::string Summary() const = 0; + virtual std::string Description() const = 0; + virtual std::string Path() const = 0; + virtual std::string Profile() const = 0; + virtual std::string LibPath() const = 0; + virtual std::string ChangeLog() const = 0; + virtual std::string FanArt() const = 0; + virtual ArtMap Art() const = 0; + virtual std::vector<std::string> Screenshots() const = 0; + virtual std::string Author() const = 0; + virtual std::string Icon() const = 0; + virtual std::string Disclaimer() const = 0; + virtual AddonLifecycleState LifecycleState() const = 0; + virtual std::string LifecycleStateDescription() const = 0; + virtual CDateTime InstallDate() const = 0; + virtual CDateTime LastUpdated() const = 0; + virtual CDateTime LastUsed() const = 0; + virtual std::string Origin() const = 0; + virtual std::string OriginName() const = 0; + virtual uint64_t PackageSize() const = 0; + virtual const InfoMap& ExtraInfo() const = 0; + virtual bool SupportsMultipleInstances() const = 0; + virtual AddonInstanceSupport InstanceUseType() const = 0; + virtual std::vector<AddonInstanceId> GetKnownInstanceIds() const = 0; + virtual bool SupportsInstanceSettings() const = 0; + virtual bool DeleteInstanceSettings(AddonInstanceId instance) = 0; + virtual bool CanHaveAddonOrInstanceSettings() = 0; + virtual bool HasSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool HasUserSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual void SaveSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual void UpdateSetting(const std::string& key, + const std::string& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool UpdateSettingBool(const std::string& key, + bool value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool UpdateSettingInt(const std::string& key, + int value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool UpdateSettingNumber(const std::string& key, + double value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool UpdateSettingString(const std::string& key, + const std::string& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual std::string GetSetting(const std::string& key, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool GetSettingBool(const std::string& key, + bool& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool GetSettingInt(const std::string& key, + int& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool GetSettingNumber(const std::string& key, + double& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual bool GetSettingString(const std::string& key, + std::string& value, + AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual std::shared_ptr<CAddonSettings> GetSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual const std::vector<DependencyInfo>& GetDependencies() const = 0; + virtual CAddonVersion GetDependencyVersion(const std::string& dependencyID) const = 0; + virtual bool MeetsVersion(const CAddonVersion& versionMin, + const CAddonVersion& version) const = 0; + virtual bool ReloadSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual void ResetSettings(AddonInstanceId id = ADDON_SETTINGS_ID) = 0; + virtual AddonPtr GetRunningInstance() const = 0; + virtual void OnPreInstall() = 0; + virtual void OnPostInstall(bool update, bool modal) = 0; + virtual void OnPreUnInstall() = 0; + virtual void OnPostUnInstall() = 0; +}; + +}; // namespace ADDON |