[videodb] remove unused seasons table from episode_view
[xbmc.git] / xbmc / dialogs / GUIDialogMediaFilter.h
blob8bf931bdd7085f76d0a658a6bc293cd0287b7a94
1 /*
2 * Copyright (C) 2012-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 "dbwrappers/Database.h"
12 #include "dbwrappers/DatabaseQuery.h"
13 #include "settings/dialogs/GUIDialogSettingsManualBase.h"
14 #include "settings/lib/SettingType.h"
15 #include "utils/DatabaseUtils.h"
17 #include <map>
18 #include <string>
19 #include <utility>
20 #include <vector>
22 class CDbUrl;
23 class CSetting;
24 namespace KODI::PLAYLIST
26 class CSmartPlaylist;
27 class CSmartPlaylistRule;
28 } // namespace KODI::PLAYLIST
29 struct StringSettingOption;
31 class CGUIDialogMediaFilter : public CGUIDialogSettingsManualBase
33 public:
34 CGUIDialogMediaFilter();
35 ~CGUIDialogMediaFilter() override;
37 // specializations of CGUIControl
38 bool OnMessage(CGUIMessage &message) override;
40 static void ShowAndEditMediaFilter(const std::string& path,
41 KODI::PLAYLIST::CSmartPlaylist& filter);
43 struct Filter
45 std::string mediaType;
46 Field field;
47 uint32_t label;
48 SettingType settingType;
49 std::string controlType;
50 std::string controlFormat;
51 CDatabaseQueryRule::SEARCH_OPERATOR ruleOperator;
52 std::shared_ptr<CSetting> setting = nullptr;
53 KODI::PLAYLIST::CSmartPlaylistRule* rule = nullptr;
54 void* data = nullptr;
57 protected:
58 // specializations of CGUIWindow
59 void OnWindowLoaded() override;
60 void OnInitWindow() override;
62 // implementations of ISettingCallback
63 void OnSettingChanged(const std::shared_ptr<const CSetting>& setting) override;
65 // specialization of CGUIDialogSettingsBase
66 bool AllowResettingSettings() const override { return false; }
67 bool Save() override { return true; }
68 std::chrono::milliseconds GetDelayMs() const override { return std::chrono::milliseconds(500); }
70 // specialization of CGUIDialogSettingsManualBase
71 void SetupView() override;
72 void InitializeSettings() override;
74 bool SetPath(const std::string &path);
75 void UpdateControls();
76 void TriggerFilter() const;
77 void Reset(bool filtersOnly = false);
79 int GetItems(const Filter &filter, std::vector<std::string> &items, bool countOnly = false);
80 void GetRange(const Filter &filter, int &min, int &interval, int &max);
81 void GetRange(const Filter &filter, float &min, float &interval, float &max);
82 bool GetMinMax(const std::string &table, const std::string &field, int &min, int &max, const CDatabase::Filter &filter = CDatabase::Filter());
84 KODI::PLAYLIST::CSmartPlaylistRule* AddRule(
85 Field field,
86 CDatabaseQueryRule::SEARCH_OPERATOR ruleOperator = CDatabaseQueryRule::OPERATOR_CONTAINS);
87 void DeleteRule(Field field);
89 static void GetStringListOptions(const std::shared_ptr<const CSetting>& setting,
90 std::vector<StringSettingOption>& list,
91 std::string& current,
92 void* data);
94 CDbUrl* m_dbUrl;
95 std::string m_mediaType;
96 KODI::PLAYLIST::CSmartPlaylist* m_filter;
97 std::map<std::string, Filter> m_filters;