summaryrefslogtreecommitdiff
path: root/libopie/oclickablelabel.cpp
Unidiff
Diffstat (limited to 'libopie/oclickablelabel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--libopie/oclickablelabel.cpp33
1 files changed, 31 insertions, 2 deletions
diff --git a/libopie/oclickablelabel.cpp b/libopie/oclickablelabel.cpp
index 5768529..bc7037b 100644
--- a/libopie/oclickablelabel.cpp
+++ b/libopie/oclickablelabel.cpp
@@ -1,88 +1,117 @@
1#include "oclickablelabel.h" 1#include "oclickablelabel.h"
2#include <stdio.h> 2#include <stdio.h>
3 3
4OClickableLabel::OClickableLabel(QWidget* parent, 4/**
5 const char* name, 5 * This constructs the clickable ButtonLabel
6 *
7 * @param parent The parent of this label
8 * @param name A name of this label @see QObject
9 * @param fl The windowing flags
10 */
11OClickableLabel::OClickableLabel(QWidget* parent,
12 const char* name,
6 WFlags fl) : 13 WFlags fl) :
7 QLabel(parent,name,fl) 14 QLabel(parent,name,fl)
8{ 15{
9 textInverted=false; 16 textInverted=false;
10 isToggle=false; 17 isToggle=false;
11 isDown=false; 18 isDown=false;
12 showState(false); 19 showState(false);
13 setFrameShadow(Sunken); 20 setFrameShadow(Sunken);
14} 21}
15 22
23/**
24 * This method makes the label behave as a toggle button
25 *
26 * @param t Whether or not to behave like a toggle button
27 */
16void OClickableLabel::setToggleButton(bool t) { 28void OClickableLabel::setToggleButton(bool t) {
17 isToggle=t; 29 isToggle=t;
18} 30}
19 31
32/**
33 * @internal
34 */
20void OClickableLabel::mousePressEvent( QMouseEvent * /*e*/ ) { 35void OClickableLabel::mousePressEvent( QMouseEvent * /*e*/ ) {
21 if (isToggle && isDown) { 36 if (isToggle && isDown) {
22 showState(false); 37 showState(false);
23 } else { 38 } else {
24 showState(true); 39 showState(true);
25 } 40 }
26} 41}
27 42
43/**
44 * @internal
45 */
28void OClickableLabel::mouseReleaseEvent( QMouseEvent *e ) { 46void OClickableLabel::mouseReleaseEvent( QMouseEvent *e ) {
29 if (rect().contains(e->pos()) && isToggle) isDown=!isDown; 47 if (rect().contains(e->pos()) && isToggle) isDown=!isDown;
30 48
31 if (isToggle && isDown) { 49 if (isToggle && isDown) {
32 showState(true); 50 showState(true);
33 } else { 51 } else {
34 showState(false); 52 showState(false);
35 } 53 }
36 54
37 if (rect().contains(e->pos())) { 55 if (rect().contains(e->pos())) {
38 if (isToggle) { 56 if (isToggle) {
39 emit toggled(isDown); 57 emit toggled(isDown);
40 } 58 }
41 emit clicked(); 59 emit clicked();
42 } 60 }
43} 61}
44 62
63/**
64 * @internal
65 */
45void OClickableLabel::mouseMoveEvent( QMouseEvent *e ) { 66void OClickableLabel::mouseMoveEvent( QMouseEvent *e ) {
46 if (rect().contains(e->pos())) { 67 if (rect().contains(e->pos())) {
47 if (isToggle && isDown) { 68 if (isToggle && isDown) {
48 showState(false); 69 showState(false);
49 } else { 70 } else {
50 showState(true); 71 showState(true);
51 } 72 }
52 } else { 73 } else {
53 if (isToggle && isDown) { 74 if (isToggle && isDown) {
54 showState(true); 75 showState(true);
55 } else { 76 } else {
56 showState(false); 77 showState(false);
57 } 78 }
58 } 79 }
59} 80}
60 81
82/**
83 * this toggles the label and inverts the color of
84 * the label
85 * @param on
86 */
61void OClickableLabel::showState(bool on) { 87void OClickableLabel::showState(bool on) {
62 if (on) { 88 if (on) {
63 //setFrameShape(Panel); 89 //setFrameShape(Panel);
64 setInverted(true); 90 setInverted(true);
65 setBackgroundMode(PaletteHighlight); 91 setBackgroundMode(PaletteHighlight);
66 } else { 92 } else {
67 //setFrameShape(NoFrame); 93 //setFrameShape(NoFrame);
68 setInverted(false); 94 setInverted(false);
69 setBackgroundMode(PaletteBackground); 95 setBackgroundMode(PaletteBackground);
70 } 96 }
71 repaint(); 97 repaint();
72} 98}
73 99
74void OClickableLabel::setInverted(bool on) { 100void OClickableLabel::setInverted(bool on) {
75 if ( (!textInverted && on) || (textInverted && !on) ) { 101 if ( (!textInverted && on) || (textInverted && !on) ) {
76 QPalette pal=palette(); 102 QPalette pal=palette();
77 QColor col=pal.color(QPalette::Normal, QColorGroup::Foreground); 103 QColor col=pal.color(QPalette::Normal, QColorGroup::Foreground);
78 col.setRgb(255-col.red(),255-col.green(),255-col.blue()); 104 col.setRgb(255-col.red(),255-col.green(),255-col.blue());
79 pal.setColor(QPalette::Normal, QColorGroup::Foreground, col); 105 pal.setColor(QPalette::Normal, QColorGroup::Foreground, col);
80 setPalette(pal); 106 setPalette(pal);
81 textInverted=!textInverted; 107 textInverted=!textInverted;
82 } 108 }
83} 109}
84 110
111/**
112 * @param on if the Label is down or up
113 */
85void OClickableLabel::setOn(bool on) { 114void OClickableLabel::setOn(bool on) {
86 isDown=on; 115 isDown=on;
87 showState(isDown); 116 showState(isDown);
88} 117}