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/Scraper.h"
12 #include "settings/dialogs/GUIDialogSettingsManualBase.h"
13 
14 #include <map>
15 #include <utility>
16 
17 namespace VIDEO
18 {
19   struct SScanSettings;
20 }
21 class CFileItemList;
22 
23 class CGUIDialogContentSettings : public CGUIDialogSettingsManualBase
24 {
25 public:
26   CGUIDialogContentSettings();
27 
28   // specialization of CGUIWindow
HasListItems()29   bool HasListItems() const override { return true; };
30 
GetContent()31   CONTENT_TYPE GetContent() const { return m_content; }
32   void SetContent(CONTENT_TYPE content);
33   void ResetContent();
34 
GetScraper()35   const ADDON::ScraperPtr& GetScraper() const { return m_scraper; }
SetScraper(ADDON::ScraperPtr scraper)36   void SetScraper(ADDON::ScraperPtr scraper) { m_scraper = std::move(scraper); }
37 
38   void SetScanSettings(const VIDEO::SScanSettings &scanSettings);
GetScanRecursive()39   bool GetScanRecursive() const { return m_scanRecursive; }
GetUseDirectoryNames()40   bool GetUseDirectoryNames() const { return m_useDirectoryNames; }
GetContainsSingleItem()41   bool GetContainsSingleItem() const { return m_containsSingleItem; }
GetExclude()42   bool GetExclude() const { return m_exclude; }
GetNoUpdating()43   bool GetNoUpdating() const { return m_noUpdating; }
GetUseAllExternalAudio()44   bool GetUseAllExternalAudio() const { return m_allExternalAudio; }
45 
46   static bool Show(ADDON::ScraperPtr& scraper, CONTENT_TYPE content = CONTENT_NONE);
47   static bool Show(ADDON::ScraperPtr& scraper, VIDEO::SScanSettings& settings, CONTENT_TYPE content = CONTENT_NONE);
48 
49 protected:
50   // specializations of CGUIWindow
51   void OnInitWindow() override;
52 
53   // implementations of ISettingCallback
54   void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
55   void OnSettingAction(const std::shared_ptr<const CSetting>& setting) override;
56 
57   // specialization of CGUIDialogSettingsBase
AllowResettingSettings()58   bool AllowResettingSettings() const override { return false; }
59   bool Save() override;
60   void SetupView() override;
61 
62   // specialization of CGUIDialogSettingsManualBase
63   void InitializeSettings() override;
64 
65 private:
66   void SetLabel2(const std::string &settingid, const std::string &label);
67   void ToggleState(const std::string &settingid, bool enabled);
68   using CGUIDialogSettingsManualBase::SetFocus;
69   void SetFocusToSetting(const std::string& settingid);
70 
71   /*!
72   * @brief The currently selected content type
73   */
74   CONTENT_TYPE m_content = CONTENT_NONE;
75   /*!
76   * @brief The selected content type at dialog creation
77   */
78   CONTENT_TYPE m_originalContent = CONTENT_NONE;
79   /*!
80   * @brief The currently selected scraper
81   */
82   ADDON::ScraperPtr m_scraper;
83 
84   bool m_showScanSettings = false;
85   bool m_scanRecursive = false;
86   bool m_useDirectoryNames = false;
87   bool m_containsSingleItem = false;
88   bool m_exclude = false;
89   bool m_noUpdating = false;
90   bool m_allExternalAudio = false;
91 };
92