xbmc
AddonSystemSettings.h
1 /*
2  * Copyright (C) 2015-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 "settings/lib/ISettingCallback.h"
12 
13 #include <map>
14 #include <memory>
15 #include <string>
16 
17 namespace ADDON
18 {
19 
20 const int AUTO_UPDATES_ON = 0;
21 const int AUTO_UPDATES_NOTIFY = 1;
22 const int AUTO_UPDATES_NEVER = 2;
23 
24 enum class AddonRepoUpdateMode
25 {
26  OFFICIAL_ONLY = 0,
27  ANY_REPOSITORY = 1
28 };
29 
30 enum class AddonType;
31 
32 class CAddonInfo;
33 using AddonInfoPtr = std::shared_ptr<CAddonInfo>;
34 
35 class IAddon;
36 using AddonPtr = std::shared_ptr<IAddon>;
37 
39 {
40 public:
41  static CAddonSystemSettings& GetInstance();
42  void OnSettingAction(const std::shared_ptr<const CSetting>& setting) override;
43  void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
44 
45  bool GetActive(AddonType type, AddonPtr& addon);
46  bool SetActive(AddonType type, const std::string& addonID);
47  bool IsActive(const IAddon& addon);
48 
54  int GetAddonAutoUpdateMode() const;
55 
56 
62  AddonRepoUpdateMode GetAddonRepoUpdateMode() const;
63 
68  bool UnsetActive(const AddonInfoPtr& addon);
69 
70 private:
73  CAddonSystemSettings& operator=(const CAddonSystemSettings&) = delete;
74  ~CAddonSystemSettings() override = default;
75 
76  const std::map<AddonType, std::string> m_activeSettings;
77 };
78 };
Definition: ISettingCallback.h:16
Definition: IAddon.h:72
Definition: AddonSystemSettings.h:38
Definition: Addon.cpp:39