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