1 | /* This file is part of the KDE libraries |
2 | Copyright (C) 1997 Martin Jones (mjones@kde.org) |
3 | Copyright (c) 2007 David Jarvie (software@astrojar.org.uk) |
4 | |
5 | This library is free software; you can redistribute it and/or |
6 | modify it under the terms of the GNU Library General Public |
7 | License as published by the Free Software Foundation; either |
8 | version 2 of the License, or (at your option) any later version. |
9 | |
10 | This library is distributed in the hope that it will be useful, |
11 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
12 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
13 | Library General Public License for more details. |
14 | |
15 | You should have received a copy of the GNU Library General Public License |
16 | along with this library; see the file COPYING.LIB. If not, write to |
17 | the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
18 | Boston, MA 02110-1301, USA. |
19 | */ |
20 | //----------------------------------------------------------------------------- |
21 | // KDE color selection combo box |
22 | |
23 | // layout management added Oct 1997 by Mario Weilguni |
24 | // <mweilguni@sime.com> |
25 | |
26 | |
27 | #ifndef KCOLORCOMBO_H |
28 | #define KCOLORCOMBO_H |
29 | |
30 | #include <QtGui/QComboBox> |
31 | #include <QtCore/QList> |
32 | |
33 | #include <kdeui_export.h> |
34 | |
35 | class KColorComboPrivate; |
36 | |
37 | /** |
38 | * Combobox for colors. |
39 | * |
40 | * The combobox provides some preset colors to be selected, and an entry to |
41 | * select a custom color using a color dialog. |
42 | * |
43 | * \image html kcolorcombo.png "KDE Color Combo Box" |
44 | */ |
45 | class KDEUI_EXPORT KColorCombo : public QComboBox |
46 | { |
47 | Q_OBJECT |
48 | Q_PROPERTY( QColor color READ color WRITE setColor NOTIFY activated USER true ) |
49 | Q_PROPERTY( QList<QColor> colors READ colors WRITE setColors ) |
50 | |
51 | public: |
52 | /** |
53 | * Constructs a color combo box. |
54 | */ |
55 | explicit KColorCombo(QWidget *parent = 0); |
56 | ~KColorCombo(); |
57 | |
58 | /** |
59 | * Selects the color @p col. |
60 | */ |
61 | void setColor( const QColor &col ); |
62 | /** |
63 | * Returns the currently selected color. |
64 | **/ |
65 | QColor color() const; |
66 | |
67 | /** |
68 | * Find whether the currently selected color is a custom color selected |
69 | * using a color dialog. |
70 | **/ |
71 | bool isCustomColor() const; |
72 | |
73 | /** |
74 | * Set a custom list of colors to choose from, in place of the standard |
75 | * list. |
76 | * @param cols list of colors. If empty, the selection list reverts to |
77 | * the standard list. |
78 | **/ |
79 | void setColors(const QList<QColor> &colors ); |
80 | |
81 | /** |
82 | * Return the list of colors available for selection. |
83 | * @return list of colors |
84 | **/ |
85 | QList<QColor> colors() const; |
86 | |
87 | /** |
88 | * Clear the color list and don't show it, till the next setColor() call |
89 | **/ |
90 | void showEmptyList(); |
91 | |
92 | Q_SIGNALS: |
93 | /** |
94 | * Emitted when a new color box has been selected. |
95 | */ |
96 | void activated( const QColor &col ); |
97 | /** |
98 | * Emitted when a new item has been highlighted. |
99 | */ |
100 | void highlighted( const QColor &col ); |
101 | |
102 | protected: |
103 | virtual void paintEvent(QPaintEvent *event); |
104 | |
105 | private: |
106 | friend class KColorComboPrivate; |
107 | KColorComboPrivate *const d; |
108 | |
109 | Q_DISABLE_COPY(KColorCombo) |
110 | |
111 | Q_PRIVATE_SLOT(d, void _k_slotActivated(int)) |
112 | Q_PRIVATE_SLOT(d, void _k_slotHighlighted(int)) |
113 | }; |
114 | |
115 | #endif // KCOLORCOMBO_H |
116 | |