summaryrefslogtreecommitdiff
path: root/core/pim/datebook/clickablelabel.cpp
Unidiff
Diffstat (limited to 'core/pim/datebook/clickablelabel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--core/pim/datebook/clickablelabel.cpp71
1 files changed, 64 insertions, 7 deletions
diff --git a/core/pim/datebook/clickablelabel.cpp b/core/pim/datebook/clickablelabel.cpp
index 6912c34..1dd0d15 100644
--- a/core/pim/datebook/clickablelabel.cpp
+++ b/core/pim/datebook/clickablelabel.cpp
@@ -1,31 +1,88 @@
1#include "clickablelabel.h" 1#include "clickablelabel.h"
2#include <stdio.h>
2 3
3ClickableLabel::ClickableLabel(QWidget* parent = 0, 4ClickableLabel::ClickableLabel(QWidget* parent = 0,
4 const char* name = 0, 5 const char* name = 0,
5 WFlags fl = 0) : 6 WFlags fl = 0) :
6 QLabel(parent,name,fl) 7 QLabel(parent,name,fl)
7{ 8{
8 setFrameShape(NoFrame); 9 textInverted=false;
10 isToggle=false;
11 isDown=false;
12 showState(false);
9 setFrameShadow(Sunken); 13 setFrameShadow(Sunken);
10} 14}
11 15
16void ClickableLabel::setToggleButton(bool t) {
17 isToggle=t;
18}
19
12void ClickableLabel::mousePressEvent( QMouseEvent *e ) { 20void ClickableLabel::mousePressEvent( QMouseEvent *e ) {
13 setFrameShape(Panel); 21 if (isToggle && isDown) {
14 repaint(); 22 showState(false);
23 } else {
24 showState(true);
25 }
15} 26}
16 27
17void ClickableLabel::mouseReleaseEvent( QMouseEvent *e ) { 28void ClickableLabel::mouseReleaseEvent( QMouseEvent *e ) {
18 setFrameShape(NoFrame); 29 if (rect().contains(e->pos()) && isToggle) isDown=!isDown;
19 repaint(); 30
31 if (isToggle && isDown) {
32 showState(true);
33 } else {
34 showState(false);
35 }
36
20 if (rect().contains(e->pos())) { 37 if (rect().contains(e->pos())) {
38 if (isToggle) {
39 emit toggled(isDown);
40 }
21 emit clicked(); 41 emit clicked();
22 } 42 }
23} 43}
24 44
25void ClickableLabel::mouseMoveEvent( QMouseEvent *e ) { 45void ClickableLabel::mouseMoveEvent( QMouseEvent *e ) {
26 if (rect().contains(e->pos())) { 46 if (rect().contains(e->pos())) {
27 setFrameShape(Panel); 47 if (isToggle && isDown) {
48 showState(false);
49 } else {
50 showState(true);
51 }
28 } else { 52 } else {
29 setFrameShape(NoFrame); 53 if (isToggle && isDown) {
54 showState(true);
55 } else {
56 showState(false);
57 }
30 } 58 }
31} 59}
60
61void ClickableLabel::showState(bool on) {
62 if (on) {
63 //setFrameShape(Panel);
64 setInverted(true);
65 setBackgroundMode(PaletteHighlight);
66 } else {
67 //setFrameShape(NoFrame);
68 setInverted(false);
69 setBackgroundMode(PaletteBackground);
70 }
71 repaint();
72}
73
74void ClickableLabel::setInverted(bool on) {
75 if ( (!textInverted && on) || (textInverted && !on) ) {
76 QPalette pal=palette();
77 QColor col=pal.color(QPalette::Normal, QColorGroup::Foreground);
78 col.setRgb(255-col.red(),255-col.green(),255-col.blue());
79 pal.setColor(QPalette::Normal, QColorGroup::Foreground, col);
80 setPalette(pal);
81 textInverted=!textInverted;
82 }
83}
84
85void ClickableLabel::setOn(bool on) {
86 isDown=on;
87 showState(isDown);
88}