kselect.h
00001 /* This file is part of the KDE libraries 00002 Copyright (C) 1997 Martin Jones (mjones@kde.org) 00003 00004 This library is free software; you can redistribute it and/or 00005 modify it under the terms of the GNU Library General Public 00006 License as published by the Free Software Foundation; either 00007 version 2 of the License, or (at your option) any later version. 00008 00009 This library is distributed in the hope that it will be useful, 00010 but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00012 Library General Public License for more details. 00013 00014 You should have received a copy of the GNU Library General Public License 00015 along with this library; see the file COPYING.LIB. If not, write to 00016 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00017 Boston, MA 02110-1301, USA. 00018 */ 00019 //----------------------------------------------------------------------------- 00020 // Selector widgets for KDE Color Selector, but probably useful for other 00021 // stuff also. 00022 00023 #ifndef __KSELECT_H__ 00024 #define __KSELECT_H__ 00025 00026 #include <qwidget.h> 00027 #include <qrangecontrol.h> 00028 #include <qpixmap.h> 00029 00030 #include <kdelibs_export.h> 00031 00043 class KDEUI_EXPORT KXYSelector : public QWidget 00044 { 00045 Q_OBJECT 00046 Q_PROPERTY( int xValue READ xValue WRITE setXValue ) 00047 Q_PROPERTY( int yValue READ yValue WRITE setYValue ) 00048 00049 public: 00054 KXYSelector( QWidget *parent=0, const char *name=0 ); 00058 ~KXYSelector(); 00059 00066 void setValues( int xPos, int yPos ); 00067 00072 void setXValue( int xPos ); 00073 00078 void setYValue( int yPos ); 00079 00083 void setRange( int minX, int minY, int maxX, int maxY ); 00084 00088 int xValue() const { return xPos; } 00092 int yValue() const { return yPos; } 00093 00097 QRect contentsRect() const; 00098 00099 signals: 00104 void valueChanged( int x, int y ); 00105 00106 protected: 00113 virtual void drawContents( QPainter * ); 00118 virtual void drawCursor( QPainter *p, int xp, int yp ); 00119 00120 virtual void paintEvent( QPaintEvent *e ); 00121 virtual void mousePressEvent( QMouseEvent *e ); 00122 virtual void mouseMoveEvent( QMouseEvent *e ); 00123 virtual void wheelEvent( QWheelEvent * ); 00124 00128 void valuesFromPosition( int x, int y, int& xVal, int& yVal ) const; 00129 00130 private: 00131 void setPosition( int xp, int yp ); 00132 int px; 00133 int py; 00134 int xPos; 00135 int yPos; 00136 int minX; 00137 int maxX; 00138 int minY; 00139 int maxY; 00140 QPixmap store; 00141 00142 protected: 00143 virtual void virtual_hook( int id, void* data ); 00144 private: 00145 class KXYSelectorPrivate; 00146 KXYSelectorPrivate *d; 00147 }; 00148 00149 00159 class KDEUI_EXPORT KSelector : public QWidget, public QRangeControl 00160 { 00161 Q_OBJECT 00162 Q_PROPERTY( int value READ value WRITE setValue ) 00163 Q_PROPERTY( int minValue READ minValue WRITE setMinValue ) 00164 Q_PROPERTY( int maxValue READ maxValue WRITE setMaxValue ) 00165 public: 00166 00170 KSelector( QWidget *parent=0, const char *name=0 ); 00175 KSelector( Orientation o, QWidget *parent = 0L, const char *name = 0L ); 00176 /* 00177 * Destructs the widget. 00178 */ 00179 ~KSelector(); 00180 00184 Orientation orientation() const 00185 { return _orientation; } 00186 00190 QRect contentsRect() const; 00191 00196 void setIndent( bool i ) 00197 { _indent = i; } 00201 bool indent() const 00202 { return _indent; } 00203 00207 void setValue(int value) 00208 { QRangeControl::setValue(value); } 00209 00213 int value() const 00214 { return QRangeControl::value(); } 00215 00219 void setMinValue(int value) 00220 { QRangeControl::setMinValue(value); } 00221 00225 int minValue() const 00226 { return QRangeControl::minValue(); } 00227 00231 void setMaxValue(int value) 00232 { QRangeControl::setMaxValue(value); } 00233 00237 int maxValue() const 00238 { return QRangeControl::maxValue(); } 00239 00240 signals: 00245 void valueChanged( int value ); 00246 00247 protected: 00254 virtual void drawContents( QPainter * ); 00262 virtual void drawArrow( QPainter *painter, bool show, const QPoint &pos ); 00263 00264 virtual void valueChange(); 00265 virtual void paintEvent( QPaintEvent * ); 00266 virtual void mousePressEvent( QMouseEvent *e ); 00267 virtual void mouseMoveEvent( QMouseEvent *e ); 00268 virtual void wheelEvent( QWheelEvent * ); 00269 00270 private: 00271 QPoint calcArrowPos( int val ); 00272 void moveArrow( const QPoint &pos ); 00273 00274 Orientation _orientation; 00275 bool _indent; 00276 00277 protected: 00278 virtual void virtual_hook( int id, void* data ); 00279 private: 00280 class KSelectorPrivate; 00281 KSelectorPrivate *d; 00282 }; 00283 00284 00293 class KDEUI_EXPORT KGradientSelector : public KSelector 00294 { 00295 Q_OBJECT 00296 00297 Q_PROPERTY( QColor firstColor READ firstColor WRITE setFirstColor ) 00298 Q_PROPERTY( QColor secondColor READ secondColor WRITE setSecondColor ) 00299 Q_PROPERTY( QString firstText READ firstText WRITE setFirstText ) 00300 Q_PROPERTY( QString secondText READ secondText WRITE setSecondText ) 00301 00302 public: 00307 KGradientSelector( QWidget *parent=0, const char *name=0 ); 00312 KGradientSelector( Orientation o, QWidget *parent=0, const char *name=0 ); 00316 ~KGradientSelector(); 00320 void setColors( const QColor &col1, const QColor &col2 ) 00321 { color1 = col1; color2 = col2; update();} 00322 void setText( const QString &t1, const QString &t2 ) 00323 { text1 = t1; text2 = t2; update(); } 00324 00328 void setFirstColor( const QColor &col ) 00329 { color1 = col; update(); } 00330 void setSecondColor( const QColor &col ) 00331 { color2 = col; update(); } 00332 00336 void setFirstText( const QString &t ) 00337 { text1 = t; update(); } 00338 void setSecondText( const QString &t ) 00339 { text2 = t; update(); } 00340 00341 const QColor firstColor() const 00342 { return color1; } 00343 const QColor secondColor() const 00344 { return color2; } 00345 00346 const QString firstText() const 00347 { return text1; } 00348 const QString secondText() const 00349 { return text2; } 00350 00351 protected: 00352 00353 virtual void drawContents( QPainter * ); 00354 virtual QSize minimumSize() const 00355 { return sizeHint(); } 00356 00357 private: 00358 void init(); 00359 QColor color1; 00360 QColor color2; 00361 QString text1; 00362 QString text2; 00363 00364 protected: 00365 virtual void virtual_hook( int id, void* data ); 00366 private: 00367 class KGradientSelectorPrivate; 00368 KGradientSelectorPrivate *d; 00369 }; 00370 00371 00372 #endif // __KSELECT_H__ 00373