1 /**************************************************************************** 2 ** 3 ** Copyright (C) 2016 The Qt Company Ltd. 4 ** Contact: https://www.qt.io/licensing/ 5 ** 6 ** This file is part of Qt Creator. 7 ** 8 ** Commercial License Usage 9 ** Licensees holding valid commercial Qt licenses may use this file in 10 ** accordance with the commercial license agreement provided with the 11 ** Software or, alternatively, in accordance with the terms contained in 12 ** a written agreement between you and The Qt Company. For licensing terms 13 ** and conditions see https://www.qt.io/terms-conditions. For further 14 ** information use the contact form at https://www.qt.io/contact-us. 15 ** 16 ** GNU General Public License Usage 17 ** Alternatively, this file may be used under the terms of the GNU 18 ** General Public License version 3 as published by the Free Software 19 ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT 20 ** included in the packaging of this file. Please review the following 21 ** information to ensure the GNU General Public License requirements will 22 ** be met: https://www.gnu.org/licenses/gpl-3.0.html. 23 ** 24 ****************************************************************************/ 25 26 #pragma once 27 28 #include "qmleditorwidgets_global.h" 29 30 #include <utils/porting.h> 31 32 #include <QFrame> 33 34 QT_BEGIN_NAMESPACE 35 class QDoubleSpinBox; 36 QT_END_NAMESPACE 37 38 namespace QmlEditorWidgets { 39 40 class ColorBox; 41 class HueControl; 42 43 class QMLEDITORWIDGETS_EXPORT CustomColorDialog : public QFrame { 44 45 Q_OBJECT 46 Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged) 47 48 public: 49 CustomColorDialog(QWidget *parent = nullptr); color()50 QColor color() const { return m_color; } 51 void setupColor(const QColor &color); setColor(const QColor & color)52 void setColor(const QColor &color) 53 { 54 if (color == m_color) 55 return; 56 57 m_color = color; 58 setupWidgets(); 59 emit colorChanged(); 60 } 61 changeColor(const QColor & color)62 void changeColor(const QColor &color) { setColor(color); } 63 void spinBoxChanged(); 64 void onColorBoxChanged(); onHueChanged(int newHue)65 void onHueChanged(int newHue) 66 { 67 if (m_blockUpdate) 68 return; 69 70 if (m_color.hsvHue() == newHue) 71 return; 72 m_color.setHsv(newHue, m_color.hsvSaturation(), m_color.value()); 73 setupWidgets(); 74 emit colorChanged(); 75 } onAccept()76 void onAccept() 77 { 78 emit accepted(m_color); 79 } 80 81 signals: 82 void colorChanged(); 83 void accepted(const QColor &color); 84 void rejected(); 85 86 protected: 87 void setupWidgets(); 88 void leaveEvent(QEvent *) override; 89 void enterEvent(Utils::EnterEvent *) override; 90 91 private: 92 QFrame *m_beforeColorWidget; 93 QFrame *m_currentColorWidget; 94 ColorBox *m_colorBox; 95 HueControl *m_hueControl; 96 97 QDoubleSpinBox *m_rSpinBox; 98 QDoubleSpinBox *m_gSpinBox; 99 QDoubleSpinBox *m_bSpinBox; 100 QDoubleSpinBox *m_alphaSpinBox; 101 102 QColor m_color; 103 bool m_blockUpdate; 104 }; 105 106 } //QmlEditorWidgets 107