summaryrefslogtreecommitdiff
path: root/noncore/unsupported/libopie/oclickablelabel.cpp
authormickeyl <mickeyl>2004-11-16 19:14:18 (UTC)
committer mickeyl <mickeyl>2004-11-16 19:14:18 (UTC)
commitea3945a9bd8f9830f70b1efa133f9df13b19362f (patch) (side-by-side diff)
treef2ea22cc50e9aa8aa73ee7dea148f41c563c9666 /noncore/unsupported/libopie/oclickablelabel.cpp
parent1c6f490e8541626f68422e0a3a7c7281d7f5b7d3 (diff)
downloadopie-ea3945a9bd8f9830f70b1efa133f9df13b19362f.zip
opie-ea3945a9bd8f9830f70b1efa133f9df13b19362f.tar.gz
opie-ea3945a9bd8f9830f70b1efa133f9df13b19362f.tar.bz2
libopie1 goes into unsupported
Diffstat (limited to 'noncore/unsupported/libopie/oclickablelabel.cpp') (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/unsupported/libopie/oclickablelabel.cpp117
1 files changed, 117 insertions, 0 deletions
diff --git a/noncore/unsupported/libopie/oclickablelabel.cpp b/noncore/unsupported/libopie/oclickablelabel.cpp
new file mode 100644
index 0000000..bc7037b
--- a/dev/null
+++ b/noncore/unsupported/libopie/oclickablelabel.cpp
@@ -0,0 +1,117 @@
+#include "oclickablelabel.h"
+#include <stdio.h>
+
+/**
+ * This constructs the clickable ButtonLabel
+ *
+ * @param parent The parent of this label
+ * @param name A name of this label @see QObject
+ * @param fl The windowing flags
+ */
+OClickableLabel::OClickableLabel(QWidget* parent,
+ const char* name,
+ WFlags fl) :
+ QLabel(parent,name,fl)
+{
+ textInverted=false;
+ isToggle=false;
+ isDown=false;
+ showState(false);
+ setFrameShadow(Sunken);
+}
+
+/**
+ * This method makes the label behave as a toggle button
+ *
+ * @param t Whether or not to behave like a toggle button
+ */
+void OClickableLabel::setToggleButton(bool t) {
+ isToggle=t;
+}
+
+/**
+ * @internal
+ */
+void OClickableLabel::mousePressEvent( QMouseEvent * /*e*/ ) {
+ if (isToggle && isDown) {
+ showState(false);
+ } else {
+ showState(true);
+ }
+}
+
+/**
+ * @internal
+ */
+void OClickableLabel::mouseReleaseEvent( QMouseEvent *e ) {
+ 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();
+ }
+}
+
+/**
+ * @internal
+ */
+void OClickableLabel::mouseMoveEvent( QMouseEvent *e ) {
+ if (rect().contains(e->pos())) {
+ if (isToggle && isDown) {
+ showState(false);
+ } else {
+ showState(true);
+ }
+ } else {
+ if (isToggle && isDown) {
+ showState(true);
+ } else {
+ showState(false);
+ }
+ }
+}
+
+/**
+ * this toggles the label and inverts the color of
+ * the label
+ * @param on
+ */
+void OClickableLabel::showState(bool on) {
+ if (on) {
+ //setFrameShape(Panel);
+ setInverted(true);
+ setBackgroundMode(PaletteHighlight);
+ } else {
+ //setFrameShape(NoFrame);
+ setInverted(false);
+ setBackgroundMode(PaletteBackground);
+ }
+ repaint();
+}
+
+void OClickableLabel::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;
+ }
+}
+
+/**
+ * @param on if the Label is down or up
+ */
+void OClickableLabel::setOn(bool on) {
+ isDown=on;
+ showState(isDown);
+}