summaryrefslogtreecommitdiff
path: root/lscolorpicker.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lscolorpicker.cpp')
-rw-r--r--lscolorpicker.cpp47
1 files changed, 47 insertions, 0 deletions
diff --git a/lscolorpicker.cpp b/lscolorpicker.cpp
new file mode 100644
index 0000000..df911a2
--- /dev/null
+++ b/lscolorpicker.cpp
@@ -0,0 +1,47 @@
+#include "lscolorpicker.h"
+#include <QColorDialog>
+
+LSColorPicker::LSColorPicker(QWidget *parent) :
+ QToolButton(parent) {
+
+ connect(this, SIGNAL(clicked()), SLOT(tryAndChoose()));
+ setColor(QColor::fromRgb(255,255,255,255));
+}
+
+void LSColorPicker::setColor(QColor newCol) {
+ m_color = newCol;
+ refreshButton();
+}
+
+void LSColorPicker::tryAndChoose() {
+ QColor newCol = QColorDialog::getColor(
+ m_color, this,
+ "Pick a Colour",
+ QColorDialog::ShowAlphaChannel);
+
+ if (newCol.isValid() && newCol != m_color) {
+ QColor oldCol = m_color;
+ m_color = newCol;
+ refreshButton();
+ emit colorPicked(newCol, oldCol);
+ }
+}
+
+
+void LSColorPicker::refreshButton() {
+ setStyleSheet(QString("QToolButton { background-color: rgba(%1,%2,%3,%4); }")
+ .arg(m_color.red())
+ .arg(m_color.green())
+ .arg(m_color.blue())
+ .arg(m_color.alpha()));
+
+ setText(QString("RGBA %1,%2,%3,%4 (#%5%6%7%8)")
+ .arg(m_color.red())
+ .arg(m_color.green())
+ .arg(m_color.blue())
+ .arg(m_color.alpha())
+ .arg(m_color.red(), 2, 16, (QChar)'0')
+ .arg(m_color.green(), 2, 16, (QChar)'0')
+ .arg(m_color.blue(), 2, 16, (QChar)'0')
+ .arg(m_color.alpha(), 2, 16, (QChar)'0'));
+}