MythTV master
videofilter.h
Go to the documentation of this file.
1#ifndef VIDEOFILTER_H_
2#define VIDEOFILTER_H_
3
4// Qt headers
5#include <QCoreApplication>
6#include <QDate>
7#include <QRegularExpression>
8
9// MythTV headers
12
15class MythUIButton;
16class MythUIText;
17
18class VideoMetadata;
19class VideoList;
20
21enum GenreFilter : std::int8_t {
24};
25
26enum CountryFilter : std::int8_t {
29};
30
31enum CastFilter : std::int8_t {
34};
35
36enum CategoryFilter : std::int8_t {
39};
40
41enum YearFilter : std::int8_t {
44};
45
46enum RuntimeFilter : std::int8_t {
49};
50
51enum UserRatingFilter : std::int8_t {
53};
54
55enum BrowseFilter : std::int8_t {
57};
58
59enum WatchedFilter : std::int8_t {
61};
62
63enum InetRefFilter : std::int8_t {
66};
67
68enum CoverFileFilter : std::int8_t {
71};
72
74{
76
77 public:
90 kFilterCastChanged = (1 << 11),
92 kFilterTextFilterChanged = (1 << 13)
93 };
94
95 public:
96 explicit VideoFilterSettings(bool loaddefaultsettings = true,
97 const QString &_prefix = "");
100
101 bool matches_filter(const VideoMetadata &mdata) const;
102 bool meta_less_than(const VideoMetadata &lhs, const VideoMetadata &rhs) const;
103
104 void saveAsDefault();
105
106 enum ordering : std::uint8_t
107 {
108 // These values must be explicitly assigned; they represent
109 // database values
118 };
119
120 int GetCategory() const { return m_category; }
121 void SetCategory(int lcategory)
122 {
124 m_category = lcategory;
125 }
126
127 int getGenre() const { return m_genre; }
128 void setGenre(int lgenre)
129 {
131 m_genre = lgenre;
132 }
133
134 int GetCast() const { return m_cast; }
135 void SetCast(int lcast)
136 {
138 m_cast = lcast;
139 }
140
141 int getCountry() const { return m_country; }
142 void setCountry(int lcountry)
143 {
145 m_country = lcountry;
146 }
147
148 int getYear() const { return m_year; }
149 void SetYear(int lyear)
150 {
152 m_year = lyear;
153 }
154
155 int getRuntime() const { return m_runtime; }
156 void setRuntime(int lruntime)
157 {
159 m_runtime = lruntime;
160 }
161
162 int GetUserRating() const { return m_userRating; }
163 void SetUserRating(int luserrating)
164 {
166 m_userRating = luserrating;
167 }
168
169 int GetBrowse() const {return m_browse; }
170 void SetBrowse(int lbrowse)
171 {
173 m_browse = lbrowse;
174 }
175
176 int GetWatched() const {return m_watched; }
177 void SetWatched(int lwatched)
178 {
180 m_watched = lwatched;
181 }
182
183 ordering getOrderby() const { return m_orderBy; }
184 void setOrderby(ordering lorderby)
185 {
187 m_orderBy = lorderby;
188 }
189
190 QString getTextFilter() const { return m_textFilter; }
191 void setTextFilter(const QString& val);
192
195 {
197 m_parentalLevel = parental_level;
198 }
199
200 int getInteRef() const { return m_inetRef; }
201 void SetInetRef(int inetref)
202 {
203 m_inetRef = inetref;
205 }
206
207 int GetCoverFile() const { return m_coverFile; }
208 void SetCoverFile(int coverfile)
209 {
210 m_coverFile = coverfile;
212 }
213
214 unsigned int getChangedState()
215 {
216 unsigned int ret = m_changedState;
217 m_changedState = 0;
218 return ret;
219 }
220
221 private:
235 QString m_prefix;
237 int m_season {-1};
238 int m_episode {-1};
240 static const QRegularExpression kReSeason;
241 static const QRegularExpression kReDate;
242
243 unsigned int m_changedState {0};
244};
245
247{
248 virtual ~FilterSettingsProxy() = default;
249 virtual const VideoFilterSettings &getSettings() = 0;
250 virtual void setSettings(const VideoFilterSettings &settings) = 0;
251};
252
253template <typename T>
255{
256 public:
258
259 const VideoFilterSettings &getSettings() override // FilterSettingsProxy
260 {
261 return m_type.getCurrentVideoFilter();
262 }
263
264 void setSettings(const VideoFilterSettings &settings) override // FilterSettingsProxy
265 {
266 m_type.setCurrentVideoFilter(settings);
267 }
268
269 private:
271};
272
274{
275
276 Q_OBJECT
277
278 public:
279 VideoFilterDialog( MythScreenStack *lparent, const QString& lname,
280 VideoList *video_list);
281 ~VideoFilterDialog() override;
282
283 bool Create() override; // MythScreenType
284
285 signals:
287
288 public slots:
289 void saveAndExit();
290 void saveAsDefault();
291 void SetYear(MythUIButtonListItem *item);
295 void setGenre(MythUIButtonListItem *item);
296 void SetCast(MythUIButtonListItem *item);
303 void setTextFilter();
304
305 private:
306 void fillWidgets();
307 void update_numvideo();
309
326
329};
330
331#endif
const VideoFilterSettings & getSettings() override
Definition: videofilter.h:259
void setSettings(const VideoFilterSettings &settings) override
Definition: videofilter.h:264
BasicFilterSettingsProxy(T &type)
Definition: videofilter.h:257
Screen in which all other widgets are contained and rendered.
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
A single button widget.
Definition: mythuibutton.h:22
A text entry and edit widget.
All purpose text widget, displays a text string.
Definition: mythuitext.h:29
MythUIButton * m_doneButton
Definition: videofilter.h:323
void SetUserRating(MythUIButtonListItem *item)
void setRunTime(MythUIButtonListItem *item)
void SetCoverFile(MythUIButtonListItem *item)
VideoFilterDialog(MythScreenStack *lparent, const QString &lname, VideoList *video_list)
void SetYear(MythUIButtonListItem *item)
MythUIButtonList * m_castList
Definition: videofilter.h:318
void setCountry(MythUIButtonListItem *item)
MythUIButtonList * m_userRatingList
Definition: videofilter.h:314
FilterSettingsProxy * m_fsp
Definition: videofilter.h:328
void SetCategory(MythUIButtonListItem *item)
~VideoFilterDialog() override
MythUIText * m_numVideosText
Definition: videofilter.h:324
MythUIButton * m_saveButton
Definition: videofilter.h:322
MythUIButtonList * m_watchedList
Definition: videofilter.h:311
void SetBrowse(MythUIButtonListItem *item)
MythUIButtonList * m_orderByList
Definition: videofilter.h:312
void SetInetRef(MythUIButtonListItem *item)
MythUIButtonList * m_coverFileList
Definition: videofilter.h:321
MythUIButtonList * m_genreList
Definition: videofilter.h:317
void SetWatched(MythUIButtonListItem *item)
MythUIButtonList * m_yearList
Definition: videofilter.h:313
bool Create() override
void setOrderby(MythUIButtonListItem *item)
MythUIButtonList * m_categoryList
Definition: videofilter.h:315
MythUIButtonList * m_inetRefList
Definition: videofilter.h:320
MythUIButtonList * m_countryList
Definition: videofilter.h:316
MythUIButtonList * m_runtimeList
Definition: videofilter.h:319
MythUITextEdit * m_textFilter
Definition: videofilter.h:325
const VideoList & m_videoList
Definition: videofilter.h:327
void SetCast(MythUIButtonListItem *item)
MythUIButtonList * m_browseList
Definition: videofilter.h:310
void setGenre(MythUIButtonListItem *item)
VideoFilterSettings m_settings
Definition: videofilter.h:308
void SetYear(int lyear)
Definition: videofilter.h:149
int getInteRef() const
Definition: videofilter.h:200
void setRuntime(int lruntime)
Definition: videofilter.h:156
int GetBrowse() const
Definition: videofilter.h:169
int getRuntime() const
Definition: videofilter.h:155
void SetInetRef(int inetref)
Definition: videofilter.h:201
void SetUserRating(int luserrating)
Definition: videofilter.h:163
void setGenre(int lgenre)
Definition: videofilter.h:128
static const QRegularExpression kReSeason
Definition: videofilter.h:240
VideoFilterSettings & operator=(const VideoFilterSettings &rhs)
Definition: videofilter.cpp:73
static const QRegularExpression kReDate
Definition: videofilter.h:241
void SetCategory(int lcategory)
Definition: videofilter.h:121
int GetWatched() const
Definition: videofilter.h:176
void setCountry(int lcountry)
Definition: videofilter.h:142
Q_DECLARE_TR_FUNCTIONS(VideoFilterSettings)
void SetCast(int lcast)
Definition: videofilter.h:135
bool matches_filter(const VideoMetadata &mdata) const
unsigned int getChangedState()
Definition: videofilter.h:214
unsigned int m_changedState
Definition: videofilter.h:243
ParentalLevel::Level m_parentalLevel
Definition: videofilter.h:234
int GetCategory() const
Definition: videofilter.h:120
bool meta_less_than(const VideoMetadata &lhs, const VideoMetadata &rhs) const
Compares two VideoMetadata instances.
int getYear() const
Definition: videofilter.h:148
ParentalLevel::Level getParentalLevel() const
Definition: videofilter.h:193
VideoFilterSettings(bool loaddefaultsettings=true, const QString &_prefix="")
Definition: videofilter.cpp:27
void SetCoverFile(int coverfile)
Definition: videofilter.h:208
int getGenre() const
Definition: videofilter.h:127
int GetCast() const
Definition: videofilter.h:134
QString getTextFilter() const
Definition: videofilter.h:190
int GetCoverFile() const
Definition: videofilter.h:207
void SetBrowse(int lbrowse)
Definition: videofilter.h:170
int GetUserRating() const
Definition: videofilter.h:162
ordering getOrderby() const
Definition: videofilter.h:183
void setParentalLevel(ParentalLevel::Level parental_level)
Definition: videofilter.h:194
void SetWatched(int lwatched)
Definition: videofilter.h:177
void setOrderby(ordering lorderby)
Definition: videofilter.h:184
void setTextFilter(const QString &val)
int getCountry() const
Definition: videofilter.h:141
unsigned short uint16_t
Definition: iso6937tables.h:3
virtual const VideoFilterSettings & getSettings()=0
virtual void setSettings(const VideoFilterSettings &settings)=0
virtual ~FilterSettingsProxy()=default
WatchedFilter
Definition: videofilter.h:59
@ kWatchedFilterAll
Definition: videofilter.h:60
CoverFileFilter
Definition: videofilter.h:68
@ kCoverFileFilterAll
Definition: videofilter.h:69
@ kCoverFileFilterNone
Definition: videofilter.h:70
CategoryFilter
Definition: videofilter.h:36
@ kCategoryFilterAll
Definition: videofilter.h:37
@ kCategoryFilterUnknown
Definition: videofilter.h:38
RuntimeFilter
Definition: videofilter.h:46
@ kRuntimeFilterAll
Definition: videofilter.h:47
@ kRuntimeFilterUnknown
Definition: videofilter.h:48
CastFilter
Definition: videofilter.h:31
@ kCastFilterUnknown
Definition: videofilter.h:33
@ kCastFilterAll
Definition: videofilter.h:32
GenreFilter
Definition: videofilter.h:21
@ kGenreFilterUnknown
Definition: videofilter.h:23
@ kGenreFilterAll
Definition: videofilter.h:22
BrowseFilter
Definition: videofilter.h:55
@ kBrowseFilterAll
Definition: videofilter.h:56
InetRefFilter
Definition: videofilter.h:63
@ kInetRefFilterAll
Definition: videofilter.h:64
@ kInetRefFilterUnknown
Definition: videofilter.h:65
UserRatingFilter
Definition: videofilter.h:51
@ kUserRatingFilterAll
Definition: videofilter.h:52
CountryFilter
Definition: videofilter.h:26
@ kCountryFilterUnknown
Definition: videofilter.h:28
@ kCountryFilterAll
Definition: videofilter.h:27
YearFilter
Definition: videofilter.h:41
@ kYearFilterAll
Definition: videofilter.h:42
@ kYearFilterUnknown
Definition: videofilter.h:43