xbmc
IAddon.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include <map>
12 #include <memory>
13 #include <string>
14 #include <vector>
15 
16 class CDateTime;
17 class TiXmlElement;
18 
19 namespace ADDON
20 {
21 enum class AddonInstanceSupport;
22 enum class AddonLifecycleState;
23 enum class AddonType;
24 
25 class CAddonMgr;
26 class CAddonSettings;
27 class CAddonVersion;
28 
29 struct DependencyInfo;
30 
31 using AddonInstanceId = uint32_t;
32 
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";
36 
42 constexpr AddonInstanceId ADDON_SINGLETON_INSTANCE_ID = 0;
43 
47 constexpr AddonInstanceId ADDON_FIRST_INSTANCE_ID = 1;
48 
54 constexpr AddonInstanceId ADDON_INSTANCE_ID_UNUSED = ADDON_SINGLETON_INSTANCE_ID;
55 
61 constexpr AddonInstanceId ADDON_SETTINGS_ID = ADDON_SINGLETON_INSTANCE_ID;
62 
63 constexpr char const* ORIGIN_SYSTEM = "b6a50484-93a0-4afb-a01c-8d17e059feda";
64 
65 class IAddon;
66 typedef std::shared_ptr<IAddon> AddonPtr;
67 typedef std::vector<AddonPtr> VECADDONS;
68 
69 using InfoMap = std::map<std::string, std::string>;
70 using ArtMap = std::map<std::string, std::string>;
71 
72 class IAddon : public std::enable_shared_from_this<IAddon>
73 {
74 public:
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 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,
120  bool value,
121  AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
122  virtual bool UpdateSettingInt(const std::string& key,
123  int value,
124  AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
125  virtual bool UpdateSettingNumber(const std::string& key,
126  double value,
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,
134  bool& value,
135  AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
136  virtual bool GetSettingInt(const std::string& key,
137  int& value,
138  AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
139  virtual bool GetSettingNumber(const std::string& key,
140  double& value,
141  AddonInstanceId id = ADDON_SETTINGS_ID) = 0;
142  virtual bool GetSettingString(const std::string& key,
143  std::string& value,
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;
157 };
158 
159 }; // namespace ADDON
Definition: AddonVersion.h:27
Definition: IAddon.h:72
Definition: addon_base.h:267
DateTime class, which uses FileTime as it&#39;s base.
Definition: XBDateTime.h:63
Definition: Addon.cpp:39