Merge pull request #26287 from CrystalP/ref-savefilestatejob
[xbmc.git] / xbmc / video / dialogs / GUIDialogSubtitleSettings.h
blob588973493971deae14fc25a10710420e03d6aa40
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #pragma once
11 #include "cores/VideoPlayer/Interface/StreamInfo.h"
12 #include "settings/dialogs/GUIDialogSettingsManualBase.h"
14 #include <string>
15 #include <utility>
16 #include <vector>
18 enum class IPlayerSubtitleCaps;
19 class CVariant;
20 struct IntegerSettingOption;
22 class CGUIDialogSubtitleSettings : public CGUIDialogSettingsManualBase
24 public:
25 CGUIDialogSubtitleSettings();
26 ~CGUIDialogSubtitleSettings() override;
27 bool OnMessage(CGUIMessage& message) override;
29 // specialization of CGUIWindow
30 void FrameMove() override;
32 static std::string BrowseForSubtitle();
34 protected:
35 // implementations of ISettingCallback
36 void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
37 void OnSettingAction(const std::shared_ptr<const CSetting>& setting) override;
39 // specialization of CGUIDialogSettingsBase
40 bool AllowResettingSettings() const override { return false; }
41 bool Save() override;
42 void SetupView() override;
44 // specialization of CGUIDialogSettingsManualBase
45 void InitializeSettings() override;
47 private:
48 bool SupportsSubtitleFeature(IPlayerSubtitleCaps feature);
50 void AddSubtitleStreams(const std::shared_ptr<CSettingGroup>& group,
51 const std::string& settingId);
53 int m_subtitleStream;
54 bool m_subtitleVisible;
55 std::shared_ptr<CSettingInt> m_subtitleStreamSetting;
57 std::vector<IPlayerSubtitleCaps> m_subtitleCapabilities;
58 static std::string FormatFlags(StreamFlags flags);
60 static void SubtitleStreamsOptionFiller(const std::shared_ptr<const CSetting>& setting,
61 std::vector<IntegerSettingOption>& list,
62 int& current,
63 void* data);
65 static std::string SettingFormatterDelay(
66 const std::shared_ptr<const CSettingControlSlider>& control,
67 const CVariant& value,
68 const CVariant& minimum,
69 const CVariant& step,
70 const CVariant& maximum);