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 
13 class MythUIButtonList;
15 class MythUIButton;
16 class MythUIText;
17 
18 class VideoMetadata;
19 class VideoList;
20 
24 };
25 
29 };
30 
31 enum CastFilter {
34 };
35 
39 };
40 
41 enum YearFilter {
44 };
45 
49 };
50 
53 };
54 
57 };
58 
61 };
62 
66 };
67 
71 };
72 
74 {
76 
77  public:
79  kSortOrderChanged = (1 << 0),
81  kFilterGenreChanged = (1 << 2),
83  kFilterYearChanged = (1 << 4),
90  kFilterCastChanged = (1 << 11),
91  kFilterWatchedChanged = (1 << 12),
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
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;
236  QString m_textFilter;
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 
253 template <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:
270  T &m_type;
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:
286  void filterChanged();
287 
288  public slots:
289  void saveAndExit();
290  void saveAsDefault();
291  void SetYear(MythUIButtonListItem *item);
293  void SetCategory(MythUIButtonListItem *item);
294  void setCountry(MythUIButtonListItem *item);
295  void setGenre(MythUIButtonListItem *item);
296  void SetCast(MythUIButtonListItem *item);
297  void setRunTime(MythUIButtonListItem *item);
298  void SetBrowse(MythUIButtonListItem *item);
299  void SetWatched(MythUIButtonListItem *item);
300  void SetInetRef(MythUIButtonListItem *item);
302  void setOrderby(MythUIButtonListItem *item);
303  void setTextFilter();
304 
305  private:
306  void fillWidgets();
307  void update_numvideo();
309 
326 
329 };
330 
331 #endif
VideoFilterDialog::SetWatched
void SetWatched(MythUIButtonListItem *item)
Definition: videofilter.cpp:743
VideoFilterSettings::VideoFilterSettings
VideoFilterSettings(bool loaddefaultsettings=true, const QString &_prefix="")
Definition: videofilter.cpp:30
RuntimeFilter
RuntimeFilter
Definition: videofilter.h:46
VideoMetadata
Definition: videometadata.h:24
VideoFilterSettings::m_parentalLevel
ParentalLevel::Level m_parentalLevel
Definition: videofilter.h:234
VideoFilterDialog::setTextFilter
void setTextFilter()
Definition: videofilter.cpp:768
VideoFilterSettings::m_prefix
QString m_prefix
Definition: videofilter.h:235
VideoFilterSettings::kFilterCountryChanged
@ kFilterCountryChanged
Definition: videofilter.h:82
VideoFilterSettings::kOrderByTitle
@ kOrderByTitle
Definition: videofilter.h:110
VideoFilterDialog::SetCategory
void SetCategory(MythUIButtonListItem *item)
Definition: videofilter.cpp:707
VideoFilterSettings::SetCast
void SetCast(int lcast)
Definition: videofilter.h:135
VideoFilterSettings::setGenre
void setGenre(int lgenre)
Definition: videofilter.h:128
VideoFilterDialog::m_genreList
MythUIButtonList * m_genreList
Definition: videofilter.h:317
BasicFilterSettingsProxy::BasicFilterSettingsProxy
BasicFilterSettingsProxy(T &type)
Definition: videofilter.h:257
VideoFilterSettings::getInteRef
int getInteRef() const
Definition: videofilter.h:200
VideoFilterSettings::kReDate
static const QRegularExpression kReDate
Definition: videofilter.h:241
VideoFilterDialog::setGenre
void setGenre(MythUIButtonListItem *item)
Definition: videofilter.cpp:719
VideoFilterSettings::kFilterUserRatingChanged
@ kFilterUserRatingChanged
Definition: videofilter.h:85
kInetRefFilterUnknown
@ kInetRefFilterUnknown
Definition: videofilter.h:65
VideoFilterDialog::m_watchedList
MythUIButtonList * m_watchedList
Definition: videofilter.h:311
VideoFilterSettings::m_year
int m_year
Definition: videofilter.h:226
VideoFilterSettings::kFilterCoverFileChanged
@ kFilterCoverFileChanged
Definition: videofilter.h:88
VideoFilterSettings::GetUserRating
int GetUserRating() const
Definition: videofilter.h:162
VideoFilterSettings::m_episode
int m_episode
Definition: videofilter.h:238
VideoFilterDialog::SetCast
void SetCast(MythUIButtonListItem *item)
Definition: videofilter.cpp:725
VideoFilterDialog::m_orderByList
MythUIButtonList * m_orderByList
Definition: videofilter.h:312
InetRefFilter
InetRefFilter
Definition: videofilter.h:63
parentalcontrols.h
VideoFilterSettings::m_runtime
int m_runtime
Definition: videofilter.h:227
VideoFilterSettings::kOrderByUserRatingDescending
@ kOrderByUserRatingDescending
Definition: videofilter.h:112
VideoFilterSettings::getRuntime
int getRuntime() const
Definition: videofilter.h:155
VideoFilterSettings::getGenre
int getGenre() const
Definition: videofilter.h:127
kCategoryFilterUnknown
@ kCategoryFilterUnknown
Definition: videofilter.h:38
kCategoryFilterAll
@ kCategoryFilterAll
Definition: videofilter.h:37
VideoFilterDialog::m_doneButton
MythUIButton * m_doneButton
Definition: videofilter.h:323
VideoFilterSettings::Q_DECLARE_TR_FUNCTIONS
Q_DECLARE_TR_FUNCTIONS(VideoFilterSettings)
VideoFilterDialog::VideoFilterDialog
VideoFilterDialog(MythScreenStack *lparent, const QString &lname, VideoList *video_list)
Definition: videofilter.cpp:405
VideoFilterDialog::m_browseList
MythUIButtonList * m_browseList
Definition: videofilter.h:310
MythScreenStack
Definition: mythscreenstack.h:16
VideoFilterSettings::ordering
ordering
Definition: videofilter.h:106
VideoFilterSettings::kFilterGenreChanged
@ kFilterGenreChanged
Definition: videofilter.h:81
UserRatingFilter
UserRatingFilter
Definition: videofilter.h:51
MythUITextEdit
A text entry and edit widget.
Definition: mythuitextedit.h:34
VideoFilterSettings::kFilterBrowseChanged
@ kFilterBrowseChanged
Definition: videofilter.h:86
VideoFilterDialog::m_saveButton
MythUIButton * m_saveButton
Definition: videofilter.h:322
MythScreenType
Screen in which all other widgets are contained and rendered.
Definition: mythscreentype.h:45
VideoFilterSettings::getParentalLevel
ParentalLevel::Level getParentalLevel() const
Definition: videofilter.h:193
kYearFilterUnknown
@ kYearFilterUnknown
Definition: videofilter.h:43
CategoryFilter
CategoryFilter
Definition: videofilter.h:36
VideoFilterSettings::setOrderby
void setOrderby(ordering lorderby)
Definition: videofilter.h:184
VideoFilterSettings::m_browse
int m_browse
Definition: videofilter.h:229
FilterSettingsProxy::~FilterSettingsProxy
virtual ~FilterSettingsProxy()=default
VideoFilterSettings::m_inetRef
int m_inetRef
Definition: videofilter.h:231
VideoFilterSettings::SetCoverFile
void SetCoverFile(int coverfile)
Definition: videofilter.h:208
VideoFilterSettings::getYear
int getYear() const
Definition: videofilter.h:148
VideoFilterSettings::saveAsDefault
void saveAsDefault()
Definition: videofilter.cpp:181
VideoFilterSettings::SetInetRef
void SetInetRef(int inetref)
Definition: videofilter.h:201
VideoFilterDialog::Create
bool Create() override
Definition: videofilter.cpp:418
VideoFilterDialog::m_textFilter
MythUITextEdit * m_textFilter
Definition: videofilter.h:325
VideoFilterSettings::kFilterRuntimeChanged
@ kFilterRuntimeChanged
Definition: videofilter.h:84
MythUIButtonListItem
Definition: mythuibuttonlist.h:41
BasicFilterSettingsProxy::setSettings
void setSettings(const VideoFilterSettings &settings) override
Definition: videofilter.h:264
VideoFilterDialog::SetYear
void SetYear(MythUIButtonListItem *item)
Definition: videofilter.cpp:694
VideoFilterDialog::m_countryList
MythUIButtonList * m_countryList
Definition: videofilter.h:316
VideoFilterSettings::m_userRating
int m_userRating
Definition: videofilter.h:228
VideoFilterSettings::kOrderByID
@ kOrderByID
Definition: videofilter.h:115
VideoFilterDialog::fillWidgets
void fillWidgets()
Definition: videofilter.cpp:502
VideoFilterDialog::m_runtimeList
MythUIButtonList * m_runtimeList
Definition: videofilter.h:319
VideoFilterSettings::kReSeason
static const QRegularExpression kReSeason
Definition: videofilter.h:240
VideoFilterSettings::SetYear
void SetYear(int lyear)
Definition: videofilter.h:149
VideoFilterDialog::setRunTime
void setRunTime(MythUIButtonListItem *item)
Definition: videofilter.cpp:731
VideoFilterDialog::saveAsDefault
void saveAsDefault()
Definition: videofilter.cpp:679
ParentalLevel::plNone
@ plNone
Definition: parentalcontrols.h:12
kYearFilterAll
@ kYearFilterAll
Definition: videofilter.h:42
FilterSettingsProxy
Definition: videofilter.h:246
VideoFilterSettings::kFilterParentalLevelChanged
@ kFilterParentalLevelChanged
Definition: videofilter.h:89
VideoFilterDialog::SetUserRating
void SetUserRating(MythUIButtonListItem *item)
Definition: videofilter.cpp:701
VideoFilterSettings::getOrderby
ordering getOrderby() const
Definition: videofilter.h:183
kRuntimeFilterAll
@ kRuntimeFilterAll
Definition: videofilter.h:47
VideoFilterSettings::m_genre
int m_genre
Definition: videofilter.h:223
kCastFilterAll
@ kCastFilterAll
Definition: videofilter.h:32
VideoFilterSettings::GetCoverFile
int GetCoverFile() const
Definition: videofilter.h:207
VideoFilterDialog::m_videoList
const VideoList & m_videoList
Definition: videofilter.h:327
ParentalLevel::Level
Level
Definition: parentalcontrols.h:12
VideoFilterDialog::m_inetRefList
MythUIButtonList * m_inetRefList
Definition: videofilter.h:320
VideoFilterSettings::kFilterWatchedChanged
@ kFilterWatchedChanged
Definition: videofilter.h:91
VideoFilterSettings::m_season
int m_season
Definition: videofilter.h:237
VideoFilterSettings::getTextFilter
QString getTextFilter() const
Definition: videofilter.h:190
VideoFilterSettings::operator=
VideoFilterSettings & operator=(const VideoFilterSettings &rhs)
Definition: videofilter.cpp:76
kCountryFilterUnknown
@ kCountryFilterUnknown
Definition: videofilter.h:28
GenreFilter
GenreFilter
Definition: videofilter.h:21
VideoFilterSettings::m_category
int m_category
Definition: videofilter.h:222
kCoverFileFilterNone
@ kCoverFileFilterNone
Definition: videofilter.h:70
kBrowseFilterAll
@ kBrowseFilterAll
Definition: videofilter.h:56
MythUIButton
A single button widget.
Definition: mythuibutton.h:21
VideoFilterSettings::m_orderBy
ordering m_orderBy
Definition: videofilter.h:233
VideoFilterSettings::m_watched
int m_watched
Definition: videofilter.h:230
VideoFilterSettings::GetBrowse
int GetBrowse() const
Definition: videofilter.h:169
VideoFilterDialog::SetBrowse
void SetBrowse(MythUIButtonListItem *item)
Definition: videofilter.cpp:737
kGenreFilterAll
@ kGenreFilterAll
Definition: videofilter.h:22
VideoFilterSettings::m_cast
int m_cast
Definition: videofilter.h:225
VideoFilterDialog::m_settings
VideoFilterSettings m_settings
Definition: videofilter.h:308
VideoFilterSettings::m_changedState
unsigned int m_changedState
Definition: videofilter.h:243
VideoFilterSettings::GetCategory
int GetCategory() const
Definition: videofilter.h:120
FilterSettingsProxy::setSettings
virtual void setSettings(const VideoFilterSettings &settings)=0
VideoFilterSettings::GetWatched
int GetWatched() const
Definition: videofilter.h:176
kUserRatingFilterAll
@ kUserRatingFilterAll
Definition: videofilter.h:52
VideoFilterDialog::saveAndExit
void saveAndExit()
Definition: videofilter.cpp:685
VideoFilterSettings::setParentalLevel
void setParentalLevel(ParentalLevel::Level parental_level)
Definition: videofilter.h:194
VideoFilterSettings::m_coverFile
int m_coverFile
Definition: videofilter.h:232
CastFilter
CastFilter
Definition: videofilter.h:31
VideoFilterSettings::kOrderByDateAddedDescending
@ kOrderByDateAddedDescending
Definition: videofilter.h:117
VideoFilterSettings::kOrderByYearDescending
@ kOrderByYearDescending
Definition: videofilter.h:111
VideoList
Definition: videolist.h:23
kInetRefFilterAll
@ kInetRefFilterAll
Definition: videofilter.h:64
YearFilter
YearFilter
Definition: videofilter.h:41
WatchedFilter
WatchedFilter
Definition: videofilter.h:59
FilterSettingsProxy::getSettings
virtual const VideoFilterSettings & getSettings()=0
CountryFilter
CountryFilter
Definition: videofilter.h:26
kRuntimeFilterUnknown
@ kRuntimeFilterUnknown
Definition: videofilter.h:48
VideoFilterSettings
Definition: videofilter.h:73
VideoFilterDialog::m_yearList
MythUIButtonList * m_yearList
Definition: videofilter.h:313
VideoFilterSettings::m_country
int m_country
Definition: videofilter.h:224
VideoFilterSettings::getCountry
int getCountry() const
Definition: videofilter.h:141
BasicFilterSettingsProxy
Definition: videofilter.h:254
VideoFilterSettings::kSortOrderChanged
@ kSortOrderChanged
Definition: videofilter.h:79
VideoFilterDialog
Definition: videofilter.h:273
kCoverFileFilterAll
@ kCoverFileFilterAll
Definition: videofilter.h:69
VideoFilterSettings::setTextFilter
void setTextFilter(const QString &val)
Definition: videofilter.cpp:358
VideoFilterSettings::m_textFilter
QString m_textFilter
Definition: videofilter.h:236
MythUIText
All purpose text widget, displays a text string.
Definition: mythuitext.h:28
VideoFilterSettings::kFilterInetRefChanged
@ kFilterInetRefChanged
Definition: videofilter.h:87
VideoFilterSettings::SetBrowse
void SetBrowse(int lbrowse)
Definition: videofilter.h:170
CoverFileFilter
CoverFileFilter
Definition: videofilter.h:68
VideoFilterDialog::m_categoryList
MythUIButtonList * m_categoryList
Definition: videofilter.h:315
VideoFilterSettings::kFilterCastChanged
@ kFilterCastChanged
Definition: videofilter.h:90
VideoFilterSettings::kOrderByFilename
@ kOrderByFilename
Definition: videofilter.h:114
VideoFilterSettings::SetWatched
void SetWatched(int lwatched)
Definition: videofilter.h:177
kWatchedFilterAll
@ kWatchedFilterAll
Definition: videofilter.h:60
VideoFilterSettings::getChangedState
unsigned int getChangedState()
Definition: videofilter.h:214
VideoFilterDialog::m_fsp
FilterSettingsProxy * m_fsp
Definition: videofilter.h:328
VideoFilterSettings::SetUserRating
void SetUserRating(int luserrating)
Definition: videofilter.h:163
VideoFilterDialog::update_numvideo
void update_numvideo()
Definition: videofilter.cpp:487
VideoFilterSettings::kOrderByLength
@ kOrderByLength
Definition: videofilter.h:113
VideoFilterSettings::kFilterTextFilterChanged
@ kFilterTextFilterChanged
Definition: videofilter.h:92
VideoFilterDialog::SetInetRef
void SetInetRef(MythUIButtonListItem *item)
Definition: videofilter.cpp:749
VideoFilterSettings::GetCast
int GetCast() const
Definition: videofilter.h:134
VideoFilterDialog::m_coverFileList
MythUIButtonList * m_coverFileList
Definition: videofilter.h:321
VideoFilterSettings::SetCategory
void SetCategory(int lcategory)
Definition: videofilter.h:121
VideoFilterSettings::FilterChanges
FilterChanges
Definition: videofilter.h:78
VideoFilterSettings::kFilterYearChanged
@ kFilterYearChanged
Definition: videofilter.h:83
VideoFilterSettings::setRuntime
void setRuntime(int lruntime)
Definition: videofilter.h:156
VideoFilterDialog::filterChanged
void filterChanged()
kGenreFilterUnknown
@ kGenreFilterUnknown
Definition: videofilter.h:23
VideoFilterDialog::setOrderby
void setOrderby(MythUIButtonListItem *item)
Definition: videofilter.cpp:761
VideoFilterDialog::m_userRatingList
MythUIButtonList * m_userRatingList
Definition: videofilter.h:314
VideoFilterSettings::kFilterCategoryChanged
@ kFilterCategoryChanged
Definition: videofilter.h:80
VideoFilterDialog::m_numVideosText
MythUIText * m_numVideosText
Definition: videofilter.h:324
MythUIButtonList
List widget, displays list items in a variety of themeable arrangements and can trigger signals when ...
Definition: mythuibuttonlist.h:191
VideoFilterDialog::m_castList
MythUIButtonList * m_castList
Definition: videofilter.h:318
kCastFilterUnknown
@ kCastFilterUnknown
Definition: videofilter.h:33
VideoFilterSettings::matches_filter
bool matches_filter(const VideoMetadata &mdata) const
Definition: videofilter.cpp:198
VideoFilterSettings::m_insertDate
QDate m_insertDate
Definition: videofilter.h:239
VideoFilterDialog::~VideoFilterDialog
~VideoFilterDialog() override
Definition: videofilter.cpp:413
VideoFilterSettings::meta_less_than
bool meta_less_than(const VideoMetadata &lhs, const VideoMetadata &rhs) const
Compares two VideoMetadata instances.
Definition: videofilter.cpp:318
BasicFilterSettingsProxy::m_type
T & m_type
Definition: videofilter.h:270
kCountryFilterAll
@ kCountryFilterAll
Definition: videofilter.h:27
VideoFilterSettings::setCountry
void setCountry(int lcountry)
Definition: videofilter.h:142
VideoFilterSettings::kOrderBySeasonEp
@ kOrderBySeasonEp
Definition: videofilter.h:116
mythscreentype.h
VideoFilterDialog::SetCoverFile
void SetCoverFile(MythUIButtonListItem *item)
Definition: videofilter.cpp:755
VideoFilterDialog::setCountry
void setCountry(MythUIButtonListItem *item)
Definition: videofilter.cpp:713
BrowseFilter
BrowseFilter
Definition: videofilter.h:55
BasicFilterSettingsProxy::getSettings
const VideoFilterSettings & getSettings() override
Definition: videofilter.h:259