1 /**************************************************************************** 2 ** 3 ** This file is part of a Qt Solutions component. 4 ** 5 ** Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 6 ** 7 ** Contact: Qt Software Information (qt-info@nokia.com) 8 ** 9 ** Commercial Usage 10 ** Licensees holding valid Qt Commercial licenses may use this file in 11 ** accordance with the Qt Solutions Commercial License Agreement provided 12 ** with the Software or, alternatively, in accordance with the terms 13 ** contained in a written agreement between you and Nokia. 14 ** 15 ** GNU Lesser General Public License Usage 16 ** Alternatively, this file may be used under the terms of the GNU Lesser 17 ** General Public License version 2.1 as published by the Free Software 18 ** Foundation and appearing in the file LICENSE.LGPL included in the 19 ** packaging of this file. Please review the following information to 20 ** ensure the GNU Lesser General Public License version 2.1 requirements 21 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. 22 ** 23 ** In addition, as a special exception, Nokia gives you certain 24 ** additional rights. These rights are described in the Nokia Qt LGPL 25 ** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this 26 ** package. 27 ** 28 ** GNU General Public License Usage 29 ** Alternatively, this file may be used under the terms of the GNU 30 ** General Public License version 3.0 as published by the Free Software 31 ** Foundation and appearing in the file LICENSE.GPL included in the 32 ** packaging of this file. Please review the following information to 33 ** ensure the GNU General Public License version 3.0 requirements will be 34 ** met: http://www.gnu.org/copyleft/gpl.html. 35 ** 36 ** Please note Third Party Software included with Qt Solutions may impose 37 ** additional restrictions and it is the user's responsibility to ensure 38 ** that they have met the licensing requirements of the GPL, LGPL, or Qt 39 ** Solutions Commercial license and the relevant license of the Third 40 ** Party Software they are using. 41 ** 42 ** If you are unsure which license is appropriate for your use, please 43 ** contact the sales department at qt-sales@nokia.com. 44 ** 45 ****************************************************************************/ 46 47 #ifndef QTCOLORPICKER_H 48 #define QTCOLORPICKER_H 49 #include <QPushButton> 50 #include <QString> 51 #include <QColor> 52 53 #include <QLabel> 54 #include <QEvent> 55 #include <QFocusEvent> 56 57 #if defined(Q_WS_WIN) 58 # if !defined(QT_QTCOLORPICKER_EXPORT) && !defined(QT_QTCOLORPICKER_IMPORT) 59 # define QT_QTCOLORPICKER_EXPORT 60 # elif defined(QT_QTCOLORPICKER_IMPORT) 61 # if defined(QT_QTCOLORPICKER_EXPORT) 62 # undef QT_QTCOLORPICKER_EXPORT 63 # endif 64 # define QT_QTCOLORPICKER_EXPORT __declspec(dllimport) 65 # elif defined(QT_QTCOLORPICKER_EXPORT) 66 # undef QT_QTCOLORPICKER_EXPORT 67 # define QT_QTCOLORPICKER_EXPORT __declspec(dllexport) 68 # endif 69 #else 70 # define QT_QTCOLORPICKER_EXPORT 71 #endif 72 73 class ColorPickerPopup; 74 75 class QT_QTCOLORPICKER_EXPORT QtColorPicker : public QPushButton 76 { 77 Q_OBJECT 78 79 Q_PROPERTY(bool colorDialog READ colorDialogEnabled WRITE setColorDialogEnabled) 80 81 public: 82 QtColorPicker(QWidget *parent = 0, 83 int columns = -1, bool enableColorDialog = true); 84 85 ~QtColorPicker(); 86 87 void insertColor(const QColor &color, const QString &text = QString(), int index = -1); 88 89 QColor currentColor() const; 90 91 QColor color(int index) const; 92 93 void setColorDialogEnabled(bool enabled); 94 bool colorDialogEnabled() const; 95 96 void setStandardColors(); 97 98 static QColor getColor(const QPoint &pos, bool allowCustomColors = true); 99 100 public slots: 101 void setCurrentColor(const QColor &col); 102 103 signals: 104 void colorChanged(const QColor &); 105 106 protected: 107 void paintEvent(QPaintEvent *e); 108 109 private slots: 110 void buttonPressed(bool toggled); 111 void popupClosed(); 112 113 private: 114 ColorPickerPopup *popup; 115 QColor col; 116 bool withColorDialog; 117 bool dirty; 118 bool firstInserted; 119 }; 120 121 #endif 122