|
AlbumShaper
1.0a3
|
A clickable label. More...
#include <clickableLabel.h>


Public Slots | |
| void | setEnabled (bool val) |
| void | setPixmap (const QPixmap &p) |
Signals | |
| void | clicked () |
Public Member Functions | |
| ClickableLabel (QWidget *parent=0, const char *name=0) | |
| void | setInvisible (bool val) |
Protected Member Functions | |
| void | paintEvent (QPaintEvent *e) |
| double buffer to avoid flicker | |
| void | enterEvent (QEvent *) |
| void | leaveEvent (QEvent *) |
| void | mouseMoveEvent (QMouseEvent *e) |
| void | mousePressEvent (QMouseEvent *) |
| void | mouseReleaseEvent (QMouseEvent *e) |
Private Member Functions | |
| void | setActive () |
| void | setHighlighted () |
Private Attributes | |
| QPixmap | defaultPixmap |
| bool | enabled |
| bool | invisible |
| bool | pressed |
A clickable label.
Definition at line 23 of file clickableLabel.h.
| ClickableLabel::ClickableLabel | ( | QWidget * | parent = 0, |
| const char * | name = 0 |
||
| ) |
| void ClickableLabel::clicked | ( | ) | [signal] |
Referenced by mouseReleaseEvent().
| void ClickableLabel::enterEvent | ( | QEvent * | ) | [protected] |
Definition at line 117 of file clickableLabel.cpp.
References enabled, pressed, setActive(), and setHighlighted().
{
if( !enabled ) return;
if( pressed )
setActive();
else
setHighlighted();
}
| void ClickableLabel::leaveEvent | ( | QEvent * | ) | [protected] |
Definition at line 109 of file clickableLabel.cpp.
References defaultPixmap, enabled, and setPixmap().
{
if( !enabled ) return;
if(!defaultPixmap.isNull())
{ this->setPixmap( defaultPixmap ); }
}
| void ClickableLabel::mouseMoveEvent | ( | QMouseEvent * | e | ) | [protected] |
Definition at line 89 of file clickableLabel.cpp.
References defaultPixmap, enabled, height, pressed, setActive(), setHighlighted(), setPixmap(), and width.
{
if( !enabled ) return;
QPoint p = e->pos();
if( p.x() < 0 || p.y() < 0 ||
p.x() >= width() || p.y() >= height() )
{
if(!defaultPixmap.isNull())
{ this->setPixmap( defaultPixmap ); }
}
else
{
if( pressed )
setActive();
else
setHighlighted();
}
}
| void ClickableLabel::mousePressEvent | ( | QMouseEvent * | ) | [protected] |
Definition at line 185 of file clickableLabel.cpp.
References enabled, pressed, and setActive().
| void ClickableLabel::mouseReleaseEvent | ( | QMouseEvent * | e | ) | [protected] |
Definition at line 193 of file clickableLabel.cpp.
References clicked(), defaultPixmap, enabled, height, invisible, pressed, setPixmap(), and width.
{
if( !enabled || invisible ) return;
pressed = false;
//restore pixmap if exists
if(!defaultPixmap.isNull())
{ this->setPixmap( defaultPixmap ); }
//if mouse still over button emit clicked signal
if(e->pos().x() >= 0 &&
e->pos().y() >= 0 &&
e->pos().x() < width() &&
e->pos().y() < height() )
{
emit clicked();
}
}
| void ClickableLabel::paintEvent | ( | QPaintEvent * | e | ) | [protected] |
double buffer to avoid flicker
Definition at line 31 of file clickableLabel.cpp.
References buffer, and invisible.
{
QPixmap buffer( size() );
QPainter bufferPainter( &buffer );
bufferPainter.setClipping(false);
bufferPainter.fillRect( buffer.rect(), backgroundBrush() );
//only paint label if not invisible
if( !invisible )
{ bufferPainter.drawImage( QPoint(0,0), pixmap()->convertToImage() ); }
bufferPainter.end();
bitBlt( this, e->rect().x(), e->rect().y(),
&buffer,
e->rect().x(), e->rect().y(),
e->rect().width(), e->rect().height() );
}
| void ClickableLabel::setActive | ( | ) | [private] |
Definition at line 127 of file clickableLabel.cpp.
References b, defaultPixmap, and setPixmap().
Referenced by enterEvent(), mouseMoveEvent(), and mousePressEvent().
{
if( ! defaultPixmap.isNull() )
{
//create darkened out version
QImage newImage = defaultPixmap.convertToImage();
QImage alpha = newImage.createAlphaMask();
int x, y;
for(y=0; y<newImage.height(); y++)
{
for(x=0; x<newImage.width(); x++)
{
if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
{
QRgb rgb = newImage.pixel(x,y);
int r = (int) (0.5*qRed(rgb));
int g = (int) (0.5*qGreen(rgb));
int b = (int) (0.5*qBlue(rgb));
rgb = qRgb( r, g, b );
newImage.setPixel( x, y, rgb );
}
}
}
QPixmap newPixmap;
newPixmap.convertFromImage( newImage );
QLabel::setPixmap( newPixmap );
}
}
| void ClickableLabel::setEnabled | ( | bool | val | ) | [slot] |
Definition at line 56 of file clickableLabel.cpp.
References defaultPixmap, enabled, and setPixmap().
Referenced by EditingInterface::EditingInterface(), EditingInterface::handleSelectionChanged(), EditingInterface::setPhoto(), and MosaicOptionsDialog::updateImagesFromOptions().
{
if( val )
setPixmap( defaultPixmap );
else if( ! defaultPixmap.isNull() )
{
//create over exposed gray version
QImage newImage = defaultPixmap.convertToImage();
QImage alpha = newImage.createAlphaMask();
int x, y;
for(y=0; y<newImage.height(); y++)
{
for(x=0; x<newImage.width(); x++)
{
if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
{
QRgb rgb = newImage.pixel(x,y);
int gray = qGray(rgb);
double alpha = 0.5;
gray = (int) (alpha*gray+(1-alpha)*255);
rgb = qRgb( gray, gray, gray );
newImage.setPixel( x, y, rgb );
}
}
}
QPixmap newPixmap;
newPixmap.convertFromImage( newImage );
QLabel::setPixmap( newPixmap );
}
enabled = val;
}
| void ClickableLabel::setHighlighted | ( | ) | [private] |
Definition at line 156 of file clickableLabel.cpp.
References b, defaultPixmap, and setPixmap().
Referenced by enterEvent(), and mouseMoveEvent().
{
if( ! defaultPixmap.isNull() )
{
//create slightly darker version
QImage newImage = defaultPixmap.convertToImage();
QImage alpha = newImage.createAlphaMask();
int x, y;
for(y=0; y<newImage.height(); y++)
{
for(x=0; x<newImage.width(); x++)
{
if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
{
QRgb rgb = newImage.pixel(x,y);
int r = (int) (0.8*qRed(rgb));
int g = (int) (0.8*qGreen(rgb));
int b = (int) (0.8*qBlue(rgb));
rgb = qRgba( r, g, b, qAlpha(rgb) );
newImage.setPixel( x, y, rgb );
}
}
}
QPixmap newPixmap;
newPixmap.convertFromImage( newImage );
QLabel::setPixmap( newPixmap );
}
}
| void ClickableLabel::setInvisible | ( | bool | val | ) |
Definition at line 213 of file clickableLabel.cpp.
References invisible.
Referenced by SaveDialog::nextScreenShot(), SaveDialog::prevScreenShot(), EditingInterface::setPhoto(), EditingInterface::showNextPrevFirstLastPhoto(), and SaveDialog::updatePreview().
| void ClickableLabel::setPixmap | ( | const QPixmap & | p | ) | [slot] |
Definition at line 49 of file clickableLabel.cpp.
References defaultPixmap.
Referenced by EditingInterface::EditingInterface(), GrainEditor::GrainEditor(), HistogramEditor::HistogramEditor(), leaveEvent(), MosaicOptionsDialog::MosaicOptionsDialog(), mouseMoveEvent(), mouseReleaseEvent(), SaveDialog::SaveDialog(), setActive(), setEnabled(), and setHighlighted().
{
defaultPixmap = p;
defaultPixmap.detach();
QLabel::setPixmap( p );
}
QPixmap ClickableLabel::defaultPixmap [private] |
Definition at line 56 of file clickableLabel.h.
Referenced by leaveEvent(), mouseMoveEvent(), mouseReleaseEvent(), setActive(), setEnabled(), setHighlighted(), and setPixmap().
bool ClickableLabel::enabled [private] |
Definition at line 57 of file clickableLabel.h.
Referenced by ClickableLabel(), enterEvent(), leaveEvent(), mouseMoveEvent(), mousePressEvent(), mouseReleaseEvent(), and setEnabled().
bool ClickableLabel::invisible [private] |
Definition at line 58 of file clickableLabel.h.
Referenced by ClickableLabel(), mouseReleaseEvent(), paintEvent(), and setInvisible().
bool ClickableLabel::pressed [private] |
Definition at line 59 of file clickableLabel.h.
Referenced by ClickableLabel(), enterEvent(), mouseMoveEvent(), mousePressEvent(), and mouseReleaseEvent().
1.7.5.1