00001 00022 #ifndef COLOR_WIDGETS_SWATCH_HPP 00023 #define COLOR_WIDGETS_SWATCH_HPP 00024 00025 #include <QWidget> 00026 #include <QPen> 00027 #include "color_palette.hpp" 00028 00029 namespace color_widgets { 00030 00034 class Swatch : public QWidget 00035 { 00036 Q_OBJECT 00037 00041 Q_PROPERTY(const ColorPalette& palette READ palette WRITE setPalette NOTIFY paletteChanged) 00045 Q_PROPERTY(int selected READ selected WRITE setSelected NOTIFY selectedChanged) 00046 00050 Q_PROPERTY(QSize colorSize READ colorSize WRITE setColorSize NOTIFY colorSizeChanged) 00051 00052 Q_PROPERTY(ColorSizePolicy colorSizePolicy READ colorSizePolicy WRITE setColorSizePolicy NOTIFY colorSizePolicyChanged) 00053 00057 Q_PROPERTY(QPen border READ border WRITE setBorder NOTIFY borderChanged) 00058 00069 Q_PROPERTY(int forcedRows READ forcedRows WRITE setForcedRows NOTIFY forcedRowsChanged) 00070 00081 Q_PROPERTY(int forcedColumns READ forcedColumns WRITE setForcedColumns NOTIFY forcedColumnsChanged) 00082 00087 Q_PROPERTY(bool readOnly READ readOnly WRITE setReadOnly NOTIFY readOnlyChanged) 00088 00089 00090 public: 00091 enum ColorSizePolicy 00092 { 00093 Hint, 00094 Minimum, 00095 Fixed 00096 }; 00097 Q_ENUMS(ColorSizePolicy) 00098 00099 Swatch(QWidget* parent = 0); 00100 ~Swatch(); 00101 00102 QSize sizeHint() const Q_DECL_OVERRIDE; 00103 QSize minimumSizeHint() const Q_DECL_OVERRIDE; 00104 00105 const ColorPalette& palette() const; 00106 ColorPalette& palette(); 00107 int selected() const; 00111 QColor selectedColor() const; 00112 00118 int indexAt(const QPoint& p); 00119 00124 QColor colorAt(const QPoint& p); 00125 00126 QSize colorSize() const; 00127 ColorSizePolicy colorSizePolicy() const; 00128 QPen border() const; 00129 00130 int forcedRows() const; 00131 int forcedColumns() const; 00132 00133 bool readOnly() const; 00134 00135 public slots: 00136 void setPalette(const ColorPalette& palette); 00137 void setSelected(int selected); 00138 void clearSelection(); 00139 void setColorSize(const QSize& colorSize); 00140 void setColorSizePolicy(ColorSizePolicy colorSizePolicy); 00141 void setBorder(const QPen& border); 00142 void setForcedRows(int forcedRows); 00143 void setForcedColumns(int forcedColumns); 00144 void setReadOnly(bool readOnly); 00148 void removeSelected(); 00149 00150 signals: 00151 void paletteChanged(const ColorPalette& palette); 00152 void selectedChanged(int selected); 00153 void colorSelected(const QColor& color); 00154 void colorSizeChanged(const QSize& colorSize); 00155 void colorSizePolicyChanged(ColorSizePolicy colorSizePolicy); 00156 void doubleClicked(int index); 00157 void rightClicked(int index); 00158 void forcedRowsChanged(int forcedRows); 00159 void forcedColumnsChanged(int forcedColumns); 00160 void readOnlyChanged(bool readOnly); 00161 void borderChanged(const QPen& border); 00162 00163 protected: 00164 bool event(QEvent* event) Q_DECL_OVERRIDE; 00165 00166 void paintEvent(QPaintEvent* event) Q_DECL_OVERRIDE; 00167 00168 void keyPressEvent(QKeyEvent* event) Q_DECL_OVERRIDE; 00169 00170 void mousePressEvent(QMouseEvent *event) Q_DECL_OVERRIDE; 00171 void mouseReleaseEvent(QMouseEvent *event) Q_DECL_OVERRIDE; 00172 void mouseMoveEvent(QMouseEvent *event) Q_DECL_OVERRIDE; 00173 void mouseDoubleClickEvent(QMouseEvent *event) Q_DECL_OVERRIDE; 00174 void wheelEvent(QWheelEvent* event) Q_DECL_OVERRIDE; 00175 00176 void dragEnterEvent(QDragEnterEvent *event) Q_DECL_OVERRIDE; 00177 void dragMoveEvent(QDragMoveEvent* event) Q_DECL_OVERRIDE; 00178 void dragLeaveEvent(QDragLeaveEvent *event) Q_DECL_OVERRIDE; 00179 void dropEvent(QDropEvent* event) Q_DECL_OVERRIDE; 00180 00181 protected slots: 00185 void paletteModified(); 00186 00187 private: 00188 class Private; 00189 Private* p; 00190 }; 00191 00192 00193 } // namespace color_widgets 00194 #endif // COLOR_WIDGETS_SWATCH_HPP