1 /*
2    Drawpile - a collaborative drawing program.
3 
4    Copyright (C) 2019 Calle Laakkonen
5 
6    Drawpile is free software: you can redistribute it and/or modify
7    it under the terms of the GNU General Public License as published by
8    the Free Software Foundation, either version 3 of the License, or
9    (at your option) any later version.
10 
11    Drawpile is distributed in the hope that it will be useful,
12    but WITHOUT ANY WARRANTY; without even the implied warranty of
13    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14    GNU General Public License for more details.
15 
16    You should have received a copy of the GNU General Public License
17    along with Drawpile.  If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #ifndef SESSIONFILTERPROXYMODEL_H
21 #define SESSIONFILTERPROXYMODEL_H
22 
23 #include <QSortFilterProxyModel>
24 
25 /**
26  * A custom SortFilter proxy model that has special support for
27  *  - SessionListingModel
28  *  - LoginSessionModel
29  *
30  * Otherwise works like normal QSortFilterProxyModel
31  */
32 class SessionFilterProxyModel : public QSortFilterProxyModel
33 {
34 	Q_OBJECT
35 public:
36 	SessionFilterProxyModel(QObject *parent=nullptr);
37 
showNsfw()38 	bool showNsfw() const { return m_showNsfw; }
showPassworded()39 	bool showPassworded() const { return m_showPassworded; }
40 
41 public slots:
42 	void setShowNsfw(bool show);
43 	void setShowPassworded(bool show);
44 	void setShowClosed(bool show);
45 
46 protected:
47 	bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
48 
49 private:
50 	bool m_showPassworded;
51 	bool m_showNsfw;
52 	bool m_showClosed;
53 };
54 
55 #endif
56 
57