Source Code (Use browser search to find items of interest.)
Class Index
kdelibs'KColorButton (./kdelibs/kdeui/kcolorbtn.h:33)
class KColorButton : public QPushButton
{
Q_OBJECT
public:
/**
* Constructor. Create a KColorButton.
*/
KColorButton( QWidget *parent, const char *name = 0L );
/**
* Constructor. Create a KColorButton.
* @param c The initial colour of the button.
*/
KColorButton( const QColor &c, QWidget *parent, const char *name = 0L );
/**
* Destructor.
*/
virtual ~KColorButton() {}
/**
* The current colour.
* @return The current colour.
*/
const QColor color() const
{ return col; }
/**
* Set the current colour.
*
* @param c The colour to set.
*/
void setColor( const QColor &c );
signals:
/**
* This signal will be emitted when the colour of the widget
* is changed, either with @ref #setColor or via user selection.
*/
void changed( const QColor &newColor );
protected slots:
protected:
/**
*/
virtual void drawButtonLabel( QPainter *p );
/**
* For XDnd
*/
virtual void dragEnterEvent( QDragEnterEvent *);
virtual void dropEvent( QDropEvent *);
virtual void mousePressEvent( QMouseEvent *e );
virtual void mouseMoveEvent( QMouseEvent *e);
virtual void mouseReleaseEvent ( QMouseEvent *e );
private:
QColor col;
QPoint mPos;
bool dragFlag;
class KColorButtonPrivate;
KColorButtonPrivate *d;
};
kdelibs'KColorButton::KColorButton() (./kdelibs/kdeui/kcolorbtn.cpp:32)
KColorButton::KColorButton( QWidget *parent, const char *name )
: QPushButton( parent, name ), dragFlag(false)
{
setAcceptDrops( true);
}
kdelibs'KColorButton::KColorButton() (./kdelibs/kdeui/kcolorbtn.cpp:38)
KColorButton::KColorButton( const QColor &c, QWidget *parent,
const char *name )
: QPushButton( parent, name ), col(c), dragFlag(false)
{
setAcceptDrops( true);
}
kdelibs'KColorButton::setColor() (./kdelibs/kdeui/kcolorbtn.cpp:45)
void KColorButton::setColor( const QColor &c )
{
col = c;
repaint( false );
}
kdelibs'KColorButton::drawButtonLabel() (./kdelibs/kdeui/kcolorbtn.cpp:51)
void KColorButton::drawButtonLabel( QPainter *painter )
{
int w = ( style() == WindowsStyle ) ? 11 : 10;
QColor lnCol = colorGroup().text();
QColor fillCol = isEnabled() ? col : backgroundColor();
if ( style() == WindowsStyle && isDown() ) {
qDrawPlainRect( painter, w/2+1, w/2+1, width()-w, height()-w,
lnCol, 1, 0 );
w += 2;
painter->fillRect( w/2+1, w/2+1, width()-w, height()-w, fillCol );
} else {
qDrawPlainRect( painter, w/2, w/2, width()-w, height()-w,
lnCol, 1, 0 );
w += 2;
painter->fillRect( w/2, w/2, width() - w, height() - w, fillCol );
}
}
kdelibs'KColorButton::dragEnterEvent() (./kdelibs/kdeui/kcolorbtn.cpp:71)
void KColorButton::dragEnterEvent( QDragEnterEvent *event)
{
event->accept( KColorDrag::canDecode( event) && isEnabled());
}
kdelibs'KColorButton::dropEvent() (./kdelibs/kdeui/kcolorbtn.cpp:76)
void KColorButton::dropEvent( QDropEvent *event)
{
QColor c;
if( KColorDrag::decode( event, c)) {
setColor(c);
emit changed( c);
}
}
kdelibs'KColorButton::mousePressEvent() (./kdelibs/kdeui/kcolorbtn.cpp:85)
void KColorButton::mousePressEvent( QMouseEvent *e)
{
mPos = e->pos();
QPushButton::mousePressEvent(e);
}
kdelibs'KColorButton::mouseMoveEvent() (./kdelibs/kdeui/kcolorbtn.cpp:91)
void KColorButton::mouseMoveEvent( QMouseEvent *e)
{
int delay = KGlobalSettings::dndEventDelay();
if(e->x() >= mPos.x()+delay || e->x() <= mPos.x()-delay ||
e->y() >= mPos.y()+delay || e->y() <= mPos.y()-delay) {
// Drag color object
KColorDrag *d = KColorDrag::makeDrag( color(), this);
d->dragCopy();
dragFlag = true;
// Fake a release event for QPushButton (mosfet)
QMouseEvent evTmp(QEvent::MouseButtonRelease,
e->pos(), e->globalPos(),
QMouseEvent::LeftButton,
QMouseEvent::LeftButton);
mouseReleaseEvent(&evTmp);
dragFlag = false;
}
}
kdelibs'KColorButton::mouseReleaseEvent() (./kdelibs/kdeui/kcolorbtn.cpp:111)
void KColorButton::mouseReleaseEvent( QMouseEvent *e )
{
QPushButton::mouseReleaseEvent(e);
if (!dragFlag) {
if (KColorDialog::getColor( col, this ) == QDialog::Rejected )
return;
repaint( false );
emit changed( col );
}
}