oclickablelabel.cpp
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 * ) {
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
00090 setInverted(true);
00091 setBackgroundMode(PaletteHighlight);
00092 } else {
00093
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 }
This file is part of the documentation for OPIE Version 1.1.