Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

oclickablelabel.cpp

Go to the documentation of this file.
00001 #include "oclickablelabel.h"
00002 #include <stdio.h>
00003 
00011 OClickableLabel::OClickableLabel(QWidget* parent,
00012                                const char* name,
00013                                WFlags fl) :
00014   QLabel(parent,name,fl)
00015 {
00016     textInverted=false;
00017     isToggle=false;
00018     isDown=false;
00019     showState(false);
00020     setFrameShadow(Sunken);
00021 }
00022 
00028 void OClickableLabel::setToggleButton(bool t) {
00029     isToggle=t;
00030 }
00031 
00035 void OClickableLabel::mousePressEvent( QMouseEvent * /*e*/ ) {
00036     if (isToggle && isDown) {
00037         showState(false);
00038     } else {
00039         showState(true);
00040     }
00041 }
00042 
00046 void OClickableLabel::mouseReleaseEvent( QMouseEvent *e ) {
00047     if (rect().contains(e->pos()) && isToggle) isDown=!isDown;
00048 
00049     if (isToggle && isDown) {
00050         showState(true);
00051     } else {
00052         showState(false);
00053     }
00054 
00055     if (rect().contains(e->pos())) {
00056         if (isToggle) {
00057             emit toggled(isDown);
00058         }
00059         emit clicked();
00060     }
00061 }
00062 
00066 void OClickableLabel::mouseMoveEvent( QMouseEvent *e ) {
00067     if (rect().contains(e->pos())) {
00068         if (isToggle && isDown) {
00069             showState(false);
00070         } else {
00071             showState(true);
00072         }
00073     } else {
00074         if (isToggle && isDown) {
00075             showState(true);
00076         } else {
00077             showState(false);
00078         }
00079     }
00080 }
00081 
00087 void OClickableLabel::showState(bool on) {
00088   if (on) {
00089     //setFrameShape(Panel);
00090     setInverted(true);
00091     setBackgroundMode(PaletteHighlight);
00092   } else {
00093     //setFrameShape(NoFrame);
00094     setInverted(false);
00095     setBackgroundMode(PaletteBackground);
00096   }
00097   repaint();
00098 }
00099 
00100 void OClickableLabel::setInverted(bool on) {
00101     if ( (!textInverted && on) || (textInverted && !on) ) {
00102         QPalette pal=palette();
00103         QColor col=pal.color(QPalette::Normal, QColorGroup::Foreground);
00104         col.setRgb(255-col.red(),255-col.green(),255-col.blue());
00105         pal.setColor(QPalette::Normal, QColorGroup::Foreground, col);
00106         setPalette(pal);
00107         textInverted=!textInverted;
00108     }
00109 }
00110 
00114 void OClickableLabel::setOn(bool on) {
00115   isDown=on;
00116   showState(isDown);
00117 }

Generated on Sat Nov 5 16:16:25 2005 for OPIE by  doxygen 1.4.2