1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
/*
* This file is part of Dianara
* Copyright 2012-2016 JanKusanagi JRR <jancoding@gmx.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA .
*/
#include "colorpicker.h"
ColorPicker::ColorPicker(QString description,
QString initialColorString,
QWidget *parent) : QWidget(parent)
{
descriptionLabel = new QLabel(description, this);
descriptionLabel->setWordWrap(true);
descriptionLabel->setAlignment(Qt::AlignTop);
checkBox = new QCheckBox(this);
buttonPixmap = QPixmap(32, 32);
button = new QPushButton(tr("Change..."), this);
button->setIconSize(QSize(32, 32));
button->setDisabled(true); // Disabled initially
connect(button, SIGNAL(clicked()),
this, SLOT(changeColor()));
connect(checkBox, SIGNAL(toggled(bool)),
button, SLOT(setEnabled(bool)));
layout = new QHBoxLayout();
layout->addWidget(descriptionLabel, 10);
layout->addSpacing(4);
layout->addStretch(1);
layout->addWidget(checkBox, 0);
layout->addSpacing(8);
layout->addWidget(button, 0);
this->setLayout(layout);
QColor initialColor(initialColorString);
if (initialColor.isValid())
{
this->currentColor = initialColor;
this->checkBox->setChecked(true);
}
else
{
if (initialColorString.startsWith("DISABLED"))
{
this->currentColor = initialColorString.remove("DISABLED");
}
else
{
this->currentColor = QColor(Qt::blue);
}
}
this->setButtonColor(currentColor);
qDebug() << "ColorPicker created";
}
ColorPicker::~ColorPicker()
{
qDebug() << "ColorPicker destroyed";
}
void ColorPicker::setButtonColor(QColor color)
{
buttonPixmap.fill(color);
button->setIcon(QIcon(buttonPixmap));
}
QString ColorPicker::getCurrentColor()
{
if (checkBox->isChecked())
{
return this->currentColor.name(); // return in #RRGGBB format
}
else
{
return QString("DISABLED%1").arg(currentColor.name()); // Return invalid color
}
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////// SLOTS ///////////////////////////////////
////////////////////////////////////////////////////////////////////////////
void ColorPicker::changeColor()
{
QColor newColor = QColorDialog::getColor(currentColor, this,
tr("Choose a color"));
if (newColor.isValid())
{
currentColor = newColor;
setButtonColor(currentColor);
}
qDebug() << "New color:" << currentColor;
}
|