#ifndef ELACOLORDIALOGPRIVATE_H #define ELACOLORDIALOGPRIVATE_H #include #include #include #include "ElaDef.h" class ElaAppBar; class ElaColorDialog; class ElaColorPicker; class ElaBaseListView; class ElaColorDisplayModel; class ElaColorDisplayDelegate; class ElaColorPreview; class ElaLineEdit; class ElaComboBox; class ElaText; class ElaPushButton; class ElaToolButton; class QSlider; class ElaColorValueSliderStyle; class ElaColorDialogPrivate : public QObject { Q_OBJECT Q_D_CREATE(ElaColorDialog) Q_PROPERTY_CREATE_D(QColor, CurrentColor) public: explicit ElaColorDialogPrivate(QObject* parent = nullptr); ~ElaColorDialogPrivate(); Q_SLOT void onColorPickerColorChanged(QColor selectedColor); Q_SLOT void onColorValueSliderChanged(int value); Q_SLOT void onColorModeChanged(int index); Q_SLOT void onHtmlEditFocusOut(QString text); Q_SLOT void onHtmlEditChanged(const QString& text); Q_SLOT void onColorEditChanged(const QString& text); Q_SLOT void onBasicColorViewClicked(const QModelIndex& index); Q_SLOT void onCustomColorViewClicked(const QModelIndex& index); Q_SLOT void onAddCustomColorButtonClicked(); Q_SLOT void onRemoveCustomColorButtonClicked(); private: ElaThemeType::ThemeMode _themeMode; ElaAppBar* _appBar{nullptr}; ElaColorPicker* _colorPicker{nullptr}; ElaColorPreview* _colorPreview{nullptr}; QSlider* _colorValueSlider{nullptr}; ElaColorValueSliderStyle* _colorValueSliderStyle{nullptr}; ElaLineEdit* _htmlEdit{nullptr}; ElaComboBox* _modeComboBox{nullptr}; ElaLineEdit* _firstEdit{nullptr}; ElaLineEdit* _secondEdit{nullptr}; ElaLineEdit* _thridEdit{nullptr}; ElaText* _firstText{nullptr}; ElaText* _secondText{nullptr}; ElaText* _thridText{nullptr}; ElaBaseListView* _basicColorView{nullptr}; ElaColorDisplayModel* _basicColorModel{nullptr}; ElaColorDisplayDelegate* _basicColorDelegate{nullptr}; ElaToolButton* _addCustomColorButton{nullptr}; ElaToolButton* _removeCustomColorButton{nullptr}; ElaBaseListView* _customColorView{nullptr}; ElaColorDisplayModel* _customColorModel{nullptr}; ElaColorDisplayDelegate* _customColorDelegate{nullptr}; ElaPushButton* _overButton{nullptr}; ElaPushButton* _cancelButton{nullptr}; void _initBasicColor(); void _initCustomColor(); void _updateHtmlEditValue(); void _updateEditValue(); void _updateColorPreview(); void _updateColorValueSlider(); QString _completeColorText(QString text) const; QString _getHexRgbValue() const; QColor _getColorFromEdit() const; }; #endif // ELACOLORDIALOGPRIVATE_H