1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 2000 Reginald Stadlbauer <reggie@kde.org> |
3 | |
4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Library General Public |
6 | License version 2 as published by the Free Software Foundation. |
7 | |
8 | This library is distributed in the hope that it will be useful, |
9 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
10 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
11 | Library General Public License for more details. |
12 | |
13 | You should have received a copy of the GNU Library General Public License |
14 | along with this library; see the file COPYING.LIB. If not, write to |
15 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
16 | Boston, MA 02110-1301, USA. |
17 | */ |
18 | #ifndef KLISTWIDGET_H |
19 | #define KLISTWIDGET_H |
20 | |
21 | #include <kdeui_export.h> |
22 | |
23 | #include <QtGui/QListWidget> |
24 | |
25 | /** |
26 | * @short A variant of QListWidget that honors KDE's system-wide settings. |
27 | * |
28 | * Extends the functionality of QListWidget to honor the system |
29 | * wide settings for Single Click/Double Click mode, Auto Selection and |
30 | * Change Cursor over Link. |
31 | * |
32 | * There is a new signal executed(). It gets connected to either |
33 | * QListWidget::itemClicked() or QListWidget::itemDoubleClicked() |
34 | * depending on the KDE wide Single Click/Double Click settings. It is |
35 | * strongly recommended that you use this signal instead of the above |
36 | * mentioned. This way you don't need to care about the current |
37 | * settings. If you want to get informed when the user selects |
38 | * something connect to the QListWidget::itemSelectionChanged() signal. |
39 | **/ |
40 | class KDEUI_EXPORT KListWidget : public QListWidget |
41 | { |
42 | Q_OBJECT |
43 | |
44 | public: |
45 | explicit KListWidget( QWidget *parent = 0 ); |
46 | |
47 | ~KListWidget(); |
48 | |
49 | Q_SIGNALS: |
50 | |
51 | /** |
52 | * Emitted whenever the user executes an listbox item. |
53 | * |
54 | * That means depending on the KDE wide Single Click/Double Click |
55 | * setting the user clicked or double clicked on that item. |
56 | * @param item is the pointer to the executed listbox item. |
57 | * |
58 | * Note that you may not delete any QListWidgetItem objects in slots |
59 | * connected to this signal. |
60 | */ |
61 | void executed( QListWidgetItem *item ); |
62 | |
63 | /** |
64 | * Emitted whenever the user executes an listbox item. |
65 | * |
66 | * That means depending on the KDE wide Single Click/Double Click |
67 | * setting the user clicked or double clicked on that item. |
68 | * @param item is the pointer to the executed listbox item. |
69 | * @param pos is the position where the user has clicked |
70 | * |
71 | * Note that you may not delete any QListWidgetItem objects in slots |
72 | * connected to this signal. |
73 | */ |
74 | void executed( QListWidgetItem *item, const QPoint &pos ); |
75 | |
76 | /** |
77 | * This signal gets emitted whenever the user double clicks into the |
78 | * listbox. |
79 | * |
80 | * @param item The pointer to the clicked listbox item. |
81 | * @param pos The position where the user has clicked. |
82 | * |
83 | * Note that you may not delete any QListWidgetItem objects in slots |
84 | * connected to this signal. |
85 | * |
86 | * This signal is more or less here for the sake of completeness. |
87 | * You should normally not need to use this. In most cases it's better |
88 | * to use executed() instead. |
89 | */ |
90 | void doubleClicked( QListWidgetItem *item, const QPoint &pos ); |
91 | |
92 | protected: |
93 | virtual void keyPressEvent(QKeyEvent *e); |
94 | virtual void focusOutEvent(QFocusEvent *e); |
95 | virtual void leaveEvent(QEvent *e); |
96 | virtual void mousePressEvent(QMouseEvent *e); |
97 | virtual void mouseDoubleClickEvent(QMouseEvent *e); |
98 | virtual void mouseReleaseEvent(QMouseEvent *e); |
99 | |
100 | private: |
101 | class KListWidgetPrivate; |
102 | KListWidgetPrivate* const d; |
103 | |
104 | Q_PRIVATE_SLOT(d, void _k_slotItemEntered(QListWidgetItem*)) |
105 | Q_PRIVATE_SLOT(d, void _k_slotOnViewport()) |
106 | Q_PRIVATE_SLOT(d, void _k_slotSettingsChanged(int)) |
107 | Q_PRIVATE_SLOT(d, void _k_slotAutoSelect()) |
108 | Q_PRIVATE_SLOT(d, void _k_slotEmitExecute(QListWidgetItem*)) |
109 | }; |
110 | |
111 | #endif // KLISTWIDGET_H |
112 | |