1 | /* |
2 | This file is part of the KDE libraries |
3 | SPDX-FileCopyrightText: Stephan Kulow <coolo@kde.org> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-or-later |
6 | */ |
7 | |
8 | #ifndef KFILEFILTERCOMBO_H |
9 | #define KFILEFILTERCOMBO_H |
10 | |
11 | #include "kiofilewidgets_export.h" |
12 | |
13 | #include <QStringList> |
14 | |
15 | #include <KComboBox> |
16 | #include <KFileFilter> |
17 | |
18 | class KFileFilterComboPrivate; |
19 | |
20 | /** |
21 | * @class KFileFilterCombo kfilefiltercombo.h <KFileFilterCombo> |
22 | * |
23 | * File filter combo box. |
24 | */ |
25 | class KIOFILEWIDGETS_EXPORT KFileFilterCombo : public KComboBox |
26 | { |
27 | Q_OBJECT |
28 | |
29 | public: |
30 | /** |
31 | * Creates a new filter combo box. |
32 | * |
33 | * @param parent The parent widget. |
34 | */ |
35 | explicit KFileFilterCombo(QWidget *parent = nullptr); |
36 | |
37 | /** |
38 | * Destroys the filter combo box. |
39 | */ |
40 | ~KFileFilterCombo() override; |
41 | |
42 | /** |
43 | * Sets the filters to be used. |
44 | * |
45 | * @param filters each item in the list corresponds to one item in the combobox. |
46 | * Entries for "All files" and "All supported files" are added automatically as needed. |
47 | * |
48 | * @param defaultFilter if not empty this will be the by default active filter |
49 | * |
50 | * @since 6.0 |
51 | * |
52 | */ |
53 | void setFilters(const QList<KFileFilter> &filters, const KFileFilter &defaultFilter = KFileFilter()); |
54 | |
55 | /** |
56 | * The currently selected/active filter. |
57 | * |
58 | * @since 6.0 |
59 | */ |
60 | KFileFilter currentFilter() const; |
61 | |
62 | /** |
63 | * The current filters. |
64 | * |
65 | * This is not necessarily the same as the list set by setFileFilters() since |
66 | * entries for "All files" and "All supported files" are added automatically as needed. |
67 | * |
68 | * @since 6.0 |
69 | */ |
70 | QList<KFileFilter> filters() const; |
71 | |
72 | /** |
73 | * This method allows to set a default-filter, that is used when an |
74 | * empty filter is set. Make sure you call this before calling |
75 | * setFileFilter(). |
76 | * |
77 | * By default, this is set to match all files. |
78 | * @see defaultFileFilter |
79 | * |
80 | * @since 6.0 |
81 | */ |
82 | void setDefaultFilter(const KFileFilter &filter); |
83 | |
84 | /** |
85 | * @return the default filter, used when an empty filter is set. |
86 | * @see setDefaultFileFilter |
87 | * |
88 | * @since 6.0 |
89 | */ |
90 | KFileFilter defaultFilter() const; |
91 | |
92 | /** |
93 | * Sets the current filter. Filter must match one of the filter items |
94 | * passed before to this widget. |
95 | * |
96 | * @since 6.0 |
97 | */ |
98 | void setCurrentFilter(const KFileFilter &filter); |
99 | |
100 | /** |
101 | * @return true if the filter's first item is the list of all MIME types |
102 | */ |
103 | bool showsAllTypes() const; |
104 | |
105 | protected: |
106 | bool eventFilter(QObject *, QEvent *) override; |
107 | |
108 | Q_SIGNALS: |
109 | /** |
110 | * This signal is emitted whenever the filter has been changed. |
111 | */ |
112 | void filterChanged(); |
113 | |
114 | private: |
115 | std::unique_ptr<KFileFilterComboPrivate> const d; |
116 | }; |
117 | |
118 | #endif |
119 | |