kodi
GUIDialogAddonSettings.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 "addons/IAddon.h"
12 #include "settings/dialogs/GUIDialogSettingsManagerBase.h"
13 
15 {
16 public:
18  ~CGUIDialogAddonSettings() override = default;
19 
20  // specializations of CGUIControl
21  bool OnMessage(CGUIMessage& message) override;
22  bool OnAction(const CAction& action) override;
23 
24  static bool ShowForAddon(const ADDON::AddonPtr& addon, bool saveToDisk = true);
25  static void SaveAndClose();
26 
27  std::string GetCurrentAddonID() const;
28 
29 protected:
30  // implementation of CGUIDialogSettingsBase
31  void SetupView() override;
32  std::string GetLocalizedString(uint32_t labelId) const override;
33  std::string GetSettingsLabel(const std::shared_ptr<ISetting>& setting) override;
34  int GetSettingLevel() const override;
35  std::shared_ptr<CSettingSection> GetSection() override;
36 
37  // implementation of CGUIDialogSettingsManagerBase
38  bool AllowResettingSettings() const override { return false; }
39  bool Save() override { return true; }
40  CSettingsManager* GetSettingsManager() const override;
41 
42  // implementation of ISettingCallback
43  void OnSettingAction(const std::shared_ptr<const CSetting>& setting) override;
44 
45 private:
46  static bool ShowForSingleInstance(const ADDON::AddonPtr& addon,
47  bool saveToDisk,
48  ADDON::AddonInstanceId instanceId = ADDON::ADDON_SETTINGS_ID);
49  static bool ShowForMultipleInstances(const ADDON::AddonPtr& addon, bool saveToDisk);
50 
51  ADDON::AddonPtr m_addon;
52  ADDON::AddonInstanceId m_instanceId{ADDON::ADDON_SETTINGS_ID};
53  bool m_saveToDisk = false;
54 };
Definition: GUIDialogAddonSettings.h:14
Definition: GUIDialogSettingsManagerBase.h:15
void OnSettingAction(const std::shared_ptr< const CSetting > &setting) override
The given setting has been activated.
Definition: GUIDialogAddonSettings.cpp:487
std::string GetSettingsLabel(const std::shared_ptr< ISetting > &setting) override
Get the name for the setting entry.
Definition: GUIDialogAddonSettings.cpp:444
Class encapsulating information regarding a particular user action to be sent to windows and controls...
Definition: Action.h:21
Definition: GUIMessage.h:365
Settings manager responsible for initializing, loading and handling all settings. ...
Definition: SettingsManager.h:41