digiKam
Loading...
Searching...
No Matches
comboboxutilities.h
Go to the documentation of this file.
1/* ============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Date : 2008-03-14
7 * Description : User interface for searches
8 *
9 * SPDX-FileCopyrightText: 2008-2012 by Marcel Wiesweg <marcel dot wiesweg at gmx dot de>
10 *
11 * SPDX-License-Identifier: GPL-2.0-or-later
12 *
13 * ============================================================ */
14
15#pragma once
16
17// Qt includes
18
19#include <QLabel>
20#include <QListView>
21#include <QComboBox>
22#include <QPersistentModelIndex>
23#include <QLineEdit>
24
25// Local includes
26
27#include "digikam_export.h"
28
29class QVBoxLayout;
30class QTreeView;
31
32namespace Digikam
33{
34
35class DIGIKAM_EXPORT ProxyLineEdit : public QLineEdit
36{
37 Q_OBJECT
38
39public:
40
48 explicit ProxyLineEdit(QWidget* const parent = nullptr);
49
53 virtual void setWidget(QWidget* widget);
54
55 void setClearButtonShown(bool show);
56
57Q_SIGNALS:
58
60
61private Q_SLOTS:
62
63 void slotTextChanged(const QString& text);
64
65protected:
66
67 QSize minimumSizeHint() const override;
68 QSize sizeHint() const override;
69
70 void mousePressEvent(QMouseEvent* event) override;
71 void mouseMoveEvent(QMouseEvent* event) override;
72 void mouseReleaseEvent(QMouseEvent* event) override;
73 void mouseDoubleClickEvent(QMouseEvent* event) override;
74 void keyPressEvent(QKeyEvent* event) override;
75 void focusInEvent(QFocusEvent* event) override;
76 void focusOutEvent(QFocusEvent* event) override;
77 void paintEvent(QPaintEvent* event) override;
78 void dragEnterEvent(QDragEnterEvent* event) override;
79 void dragMoveEvent(QDragMoveEvent* e) override;
80 void dragLeaveEvent(QDragLeaveEvent* e) override;
81 void dropEvent(QDropEvent* event) override;
82 void changeEvent(QEvent* event) override;
83 void contextMenuEvent(QContextMenuEvent* event) override;
84 void inputMethodEvent(QInputMethodEvent* event) override;
85
86protected:
87
88 QWidget* m_widget = nullptr;
89 QVBoxLayout* m_layout = nullptr;
90};
91
92// -------------------------------------------------------------------------
93
94class DIGIKAM_EXPORT ProxyClickLineEdit : public ProxyLineEdit
95{
96 Q_OBJECT
97
98public:
99
106 explicit ProxyClickLineEdit(QWidget* const parent = nullptr);
107
108Q_SIGNALS:
109
111
112protected:
113
114 void mouseReleaseEvent(QMouseEvent* event) override;
115};
116
117// -------------------------------------------------------------------------
118
119class DIGIKAM_EXPORT ModelIndexBasedComboBox : public QComboBox
120{
121 Q_OBJECT
122
123public:
124
131 explicit ModelIndexBasedComboBox(QWidget* const parent = nullptr);
132
133 QModelIndex currentIndex() const;
134 void setCurrentIndex(const QModelIndex& index);
135
136 void hidePopup() override;
137 void showPopup() override;
138
139protected:
140
141 QPersistentModelIndex m_currentIndex;
142};
143
144// -------------------------------------------------------------------------
145
147{
148 Q_OBJECT
149
150public:
151
163 explicit StayPoppedUpComboBox(QWidget* const parent = nullptr);
164
165protected:
166
172 void installView(QAbstractItemView* view);
173
182 virtual void sendViewportEventToView(QEvent* e) = 0;
183
184 bool eventFilter(QObject* watched, QEvent* event) override;
185
186protected:
187
188 QAbstractItemView* m_view = nullptr;
189};
190
191// -------------------------------------------------------------------------
192
193class DIGIKAM_EXPORT TreeViewComboBox : public StayPoppedUpComboBox
194{
195 Q_OBJECT
196
197public:
198
207 explicit TreeViewComboBox(QWidget* parent = nullptr);
208
213 virtual void installView(QAbstractItemView* view = nullptr);
214
218 QTreeView* view() const;
219
220protected:
221
222 void sendViewportEventToView(QEvent* e) override;
223};
224
225// -------------------------------------------------------------------------
226
227class DIGIKAM_EXPORT ListViewComboBox : public StayPoppedUpComboBox
228{
229 Q_OBJECT
230
231public:
232
241 explicit ListViewComboBox(QWidget* parent = nullptr);
242
246 QListView* view() const;
247
252 virtual void installView(QAbstractItemView* view = nullptr);
253
254protected:
255
256 void sendViewportEventToView(QEvent* e) override;
257};
258
259// -------------------------------------------------------------------------
260
261class DIGIKAM_EXPORT TreeViewLineEditComboBox : public TreeViewComboBox
262{
263 Q_OBJECT
264
265public:
266
277 explicit TreeViewLineEditComboBox(QWidget* const parent = nullptr);
278
284 void setLineEditText(const QString& text);
285
286 void setLineEdit(QLineEdit* edit);
287
292 void installView(QAbstractItemView* view = nullptr) override;
293
294protected:
295
301 virtual void installLineEdit();
302
303protected:
304
305 QLineEdit* m_comboLineEdit = nullptr;
306};
307
308} // namespace Digikam
Definition comboboxutilities.h:228
Definition comboboxutilities.h:120
QPersistentModelIndex m_currentIndex
Definition comboboxutilities.h:141
Definition comboboxutilities.h:95
Definition comboboxutilities.h:36
Definition comboboxutilities.h:147
virtual void sendViewportEventToView(QEvent *e)=0
Definition comboboxutilities.h:194
Definition comboboxutilities.h:262
Definition datefolderview.cpp:34