Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef KLFCOLORCHOOSER_H
00025 #define KLFCOLORCHOOSER_H
00026
00027 #include <QPushButton>
00028 #include <QColor>
00029 #include <QApplication>
00030 #include <QList>
00031 #include <QEvent>
00032 #include <QWidget>
00033 #include <QDialog>
00034 #include <QSpinBox>
00035 #include <QGridLayout>
00036 #include <QPainter>
00037
00038 #include <klfdefs.h>
00039
00040
00041 class KLFColorList;
00042
00043
00044
00045
00046
00047 class KLF_EXPORT KLFColorClickSquare : public QWidget
00048 {
00049 Q_OBJECT
00050
00051 Q_PROPERTY(QColor color READ color WRITE setColor USER true)
00052 public:
00053 KLFColorClickSquare(QColor color = Qt::white, int size = 16, bool removable = true, QWidget *parent = 0);
00054
00055 virtual QSize sizeHint() { return QSize(_size, _size); }
00056
00057 QColor color() const { return _color; }
00058
00059 signals:
00060 void activated();
00061 void colorActivated(const QColor& color);
00062 void wantRemove();
00063 void wantRemoveColor(const QColor& color);
00064
00065 public slots:
00066 void setColor(const QColor& col) { _color = col; }
00067 void activate() {
00068 emit activated();
00069 emit colorActivated(_color);
00070 }
00071
00072 protected:
00073 void paintEvent(QPaintEvent *event);
00074 void keyPressEvent(QKeyEvent *event);
00075 void mousePressEvent(QMouseEvent *event);
00076 void contextMenuEvent(QContextMenuEvent *event);
00077
00078 private:
00079 QColor _color;
00080 int _size;
00081 bool _removable;
00082
00083 private slots:
00084 void internalWantRemove();
00085 };
00086
00087
00088
00089
00133 class KLF_EXPORT KLFColorComponentsEditorBase
00134 {
00135 protected:
00137 int valueAFromNewColor(const QColor& color) const;
00139 int valueBFromNewColor(const QColor& color) const;
00141 inline int valueA() const { return valueAFromNewColor(_color); }
00143 inline int valueB() const { return valueBFromNewColor(_color); }
00145 inline int valueAMax() const { return valueMax(_colorcomponent); }
00147 inline int valueBMax() const { return valueMax(_colorcomponent_b); }
00148
00165 QColor colorFromValues(QColor color_base, int value_a, int value_b = -1);
00166
00172 bool refreshColorFromInternalValues(int value_a, int value_b = -1);
00173
00176 static int valueFromNewColor(const QColor& color, const QString& component);
00177
00183 static int valueMax(const QString& component);
00184
00186 QColor _color;
00187
00190 QString _colorcomponent, _colorcomponent_b;
00191 };
00192
00193
00194
00195
00218 class KLF_EXPORT KLFColorComponentSpinBox : public QSpinBox, public KLFColorComponentsEditorBase
00219 {
00220 Q_OBJECT
00221
00222 Q_PROPERTY(QString colorComponent READ colorComponent WRITE setColorComponent)
00223 Q_PROPERTY(QColor color READ color WRITE setColor USER true)
00224 public:
00225 KLFColorComponentSpinBox(QWidget *parent);
00226 virtual ~KLFColorComponentSpinBox() { }
00227
00228 QString colorComponent() const { return _colorcomponent; }
00229 QColor color() const { return _color; }
00230
00231 signals:
00232 void colorChanged(const QColor& color);
00233
00234 public slots:
00235 void setColorComponent(const QString& component);
00236 void setColor(const QColor& color);
00237
00238 private slots:
00239 void internalChanged(int newvalue);
00240
00241 };
00242
00243
00244
00245
00264 class KLF_EXPORT KLFColorChooseWidgetPane : public QWidget, public KLFColorComponentsEditorBase
00265 {
00266 Q_OBJECT
00267 Q_PROPERTY(QString paneType READ paneType WRITE setPaneType);
00268 Q_PROPERTY(QColor color READ color WRITE setColor USER true);
00269 public:
00270 KLFColorChooseWidgetPane(QWidget *parent = 0);
00271 virtual ~KLFColorChooseWidgetPane() { }
00272
00273 QString paneType() const { return _colorcomponent + "+" + _colorcomponent_b; }
00274 QColor color() const { return _color; }
00275
00276 signals:
00277 void colorChanged(const QColor& color);
00278
00279 public slots:
00280 void setColor(const QColor& newcolor);
00281 void setPaneType(const QString& panetype);
00282
00283 protected:
00284 virtual void paintEvent(QPaintEvent *e);
00285 virtual void mousePressEvent(QMouseEvent *e);
00286 virtual void mouseMoveEvent(QMouseEvent *e);
00287 virtual void wheelEvent(QWheelEvent *e);
00288
00289 private:
00290 QImage _img;
00291 };
00292
00293
00294
00295
00296 namespace Ui { class KLFColorChooseWidget; }
00297 class QListWidgetItem;
00298
00314 class KLF_EXPORT KLFColorChooseWidget : public QWidget
00315 {
00316 Q_OBJECT
00317
00318 Q_PROPERTY(QColor color READ color WRITE setColor USER true)
00319 Q_PROPERTY(bool alphaEnabled READ alphaEnabled WRITE setAlphaEnabled)
00320 public:
00321 KLFColorChooseWidget(QWidget *parent = 0);
00322 virtual ~KLFColorChooseWidget() { }
00323
00324 QColor color() const { return _color; }
00325
00326 bool alphaEnabled() const { return _alphaenabled; }
00327
00328 static void ensureColorListsInstance();
00329 static void setRecentCustomColors(QList<QColor> recentcolors, QList<QColor> customcolors);
00330 static void addRecentColor(const QColor& col);
00331 static QList<QColor> recentColors();
00332 static QList<QColor> customColors();
00333
00334 signals:
00335 void colorChanged(const QColor& color);
00336
00337 public slots:
00338 void setColor(const QColor& color);
00339 void setAlphaEnabled(bool alpha_enabled);
00340 void setCurrentToCustomColor();
00341
00342 void updatePalettes();
00343
00344 void updatePaletteRecent();
00345 void updatePaletteStandard();
00346 void updatePaletteCustom();
00347
00348 protected slots:
00349 virtual void internalColorChanged(const QColor& newcolor);
00350 virtual void internalColorNameSelected(QListWidgetItem *item);
00351 virtual void internalColorNameSet(const QString& colorname);
00352
00353
00354 private:
00355 Ui::KLFColorChooseWidget *u;
00356
00357 QColor _color;
00358 bool _alphaenabled;
00359
00360 QList<QObject*> _connectedColorChoosers;
00361
00362 void fillPalette(KLFColorList *colorlist, QWidget *w);
00363
00364 static KLFColorList *_recentcolors;
00365 static KLFColorList *_standardcolors;
00366 static KLFColorList *_customcolors;
00367 };
00368
00369
00370
00371
00372
00373 namespace Ui { class KLFColorDialog; }
00374
00383 class KLF_EXPORT KLFColorDialog : public QDialog
00384 {
00385 Q_OBJECT
00386 public:
00389 KLFColorDialog(QWidget *parent = 0);
00390 virtual ~KLFColorDialog();
00391
00393 KLFColorChooseWidget *colorChooseWidget();
00394
00401 static QColor getColor(QColor startwith = Qt::black, bool alphaenabled = true, QWidget *parent = 0);
00402
00403 private:
00404 Ui::KLFColorDialog *u;
00405 };
00406
00407
00408
00409
00410
00411
00412 class QStyle;
00413
00414 class KLF_EXPORT KLFColorChooser : public QPushButton
00415 {
00416 Q_OBJECT
00417
00418 Q_PROPERTY(QSize showSize READ showSize WRITE setShowSize)
00419 Q_PROPERTY(bool allowDefaultState READ allowDefaultState WRITE setAllowDefaultState)
00420 Q_PROPERTY(QString defaultStateString READ defaultStateString WRITE setDefaultStateString)
00421 Q_PROPERTY(bool autoAddToList READ autoAddToList WRITE setAutoAddToList)
00422 Q_PROPERTY(QColor color READ color WRITE setColor USER true)
00423 Q_PROPERTY(float pixXAlignFactor READ pixXAlignFactor WRITE setPixXAlignFactor)
00424 Q_PROPERTY(float pixYAlignFactor READ pixYAlignFactor WRITE setPixYAlignFactor)
00425 Q_PROPERTY(bool alphaEnabled READ alphaEnabled WRITE setAlphaEnabled)
00426
00427 public:
00428 KLFColorChooser(QWidget *parent);
00429 ~KLFColorChooser();
00430
00431 QSize showSize() const { return _size; }
00433
00437 bool allowDefaultState() const { return _allowdefaultstate; }
00438 QString defaultStateString() const { return _defaultstatestring; }
00439 bool autoAddToList() const { return _autoadd; }
00440 QColor color() const;
00441 float pixXAlignFactor() const { return _xalignfactor; }
00442 float pixYAlignFactor() const { return _yalignfactor; }
00444 bool alphaEnabled() const { return _alphaenabled; }
00445
00446 virtual QSize sizeHint() const;
00447
00450 static void setUserMaxColors(int maxcolors);
00451
00452 static void setColorList(const QList<QColor>& colorlist);
00453 static QList<QColor> colorList();
00454
00455 signals:
00456 void colorChanged(const QColor& newcolor);
00457
00458 public slots:
00462 void setColor(const QColor& color);
00463 void setAllowDefaultState(bool allow);
00464 void setDefaultStateString(const QString& str);
00465 void setAutoAddToList(bool autoadd) { _autoadd = autoadd; }
00466 void setShowSize(const QSize& size) { _size = size; }
00467 void setPixXAlignFactor(float xalignfactor) { _xalignfactor = xalignfactor; }
00468 void setPixYAlignFactor(float yalignfactor) { _yalignfactor = yalignfactor; }
00469 void setAlphaEnabled(bool alpha_enabled);
00471 void setDefaultColor();
00472
00473 void requestColor();
00474
00475 protected slots:
00476 void setSenderPropertyColor();
00477 void _makemenu();
00478
00479 protected:
00480 void paintEvent(QPaintEvent *event);
00481
00482 private:
00483 QColor _color;
00484 QPixmap _pix;
00485
00486 bool _allowdefaultstate;
00487 QString _defaultstatestring;
00488 bool _autoadd;
00489 QSize _size;
00490 float _xalignfactor, _yalignfactor;
00491
00492 bool _alphaenabled;
00493
00494 QMenu *mMenu;
00495
00496 void _setpix();
00497
00498 QPixmap colorPixmap(const QColor& color, const QSize& size);
00499
00500 static KLFColorList *_colorlist;
00501 static QStyle *mReplaceButtonStyle;
00502
00503 static int staticUserMaxColors;
00504
00505 static void ensureColorListInstance();
00506
00507 };
00508
00509
00510 #endif