summaryrefslogtreecommitdiff
path: root/core/pim/datebook/clickablelabel.cpp
Side-by-side diff
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,2 +1,3 @@
#include "clickablelabel.h"
+#include <stdio.h>
@@ -7,3 +8,6 @@ ClickableLabel::ClickableLabel(QWidget* parent = 0,
{
- setFrameShape(NoFrame);
+ textInverted=false;
+ isToggle=false;
+ isDown=false;
+ showState(false);
setFrameShadow(Sunken);
@@ -11,5 +15,12 @@ ClickableLabel::ClickableLabel(QWidget* parent = 0,
+void ClickableLabel::setToggleButton(bool t) {
+ isToggle=t;
+}
+
void ClickableLabel::mousePressEvent( QMouseEvent *e ) {
- setFrameShape(Panel);
- repaint();
+ if (isToggle && isDown) {
+ showState(false);
+ } else {
+ showState(true);
+ }
}
@@ -17,5 +28,14 @@ void ClickableLabel::mousePressEvent( QMouseEvent *e ) {
void ClickableLabel::mouseReleaseEvent( QMouseEvent *e ) {
- setFrameShape(NoFrame);
- repaint();
+ if (rect().contains(e->pos()) && isToggle) isDown=!isDown;
+
+ if (isToggle && isDown) {
+ showState(true);
+ } else {
+ showState(false);
+ }
+
if (rect().contains(e->pos())) {
+ if (isToggle) {
+ emit toggled(isDown);
+ }
emit clicked();
@@ -26,6 +46,43 @@ void ClickableLabel::mouseMoveEvent( QMouseEvent *e ) {
if (rect().contains(e->pos())) {
- setFrameShape(Panel);
+ if (isToggle && isDown) {
+ showState(false);
+ } else {
+ showState(true);
+ }
} else {
- setFrameShape(NoFrame);
+ if (isToggle && isDown) {
+ showState(true);
+ } else {
+ showState(false);
+ }
}
}
+
+void ClickableLabel::showState(bool on) {
+ if (on) {
+ //setFrameShape(Panel);
+ setInverted(true);
+ setBackgroundMode(PaletteHighlight);
+ } else {
+ //setFrameShape(NoFrame);
+ setInverted(false);
+ setBackgroundMode(PaletteBackground);
+ }
+ repaint();
+}
+
+void ClickableLabel::setInverted(bool on) {
+ if ( (!textInverted && on) || (textInverted && !on) ) {
+ QPalette pal=palette();
+ QColor col=pal.color(QPalette::Normal, QColorGroup::Foreground);
+ col.setRgb(255-col.red(),255-col.green(),255-col.blue());
+ pal.setColor(QPalette::Normal, QColorGroup::Foreground, col);
+ setPalette(pal);
+ textInverted=!textInverted;
+ }
+}
+
+void ClickableLabel::setOn(bool on) {
+ isDown=on;
+ showState(isDown);
+}