00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "ColourNameDialog.h"
00017
00018 #include <QGridLayout>
00019 #include <QLabel>
00020 #include <QDialogButtonBox>
00021 #include <QLineEdit>
00022 #include <QIcon>
00023 #include <QCheckBox>
00024 #include <QPainter>
00025 #include <QPushButton>
00026
00027 ColourNameDialog::ColourNameDialog(QString title, QString message,
00028 QColor colour, QString defaultName,
00029 QWidget *parent) :
00030 QDialog(parent),
00031 m_colour(colour)
00032 {
00033 setWindowTitle(title);
00034
00035 QGridLayout *layout = new QGridLayout(this);
00036
00037 QLabel *label = new QLabel(message, this);
00038 layout->addWidget(label, 0, 0, 1, 2);
00039
00040 m_colourLabel = new QLabel(this);
00041 layout->addWidget(m_colourLabel, 1, 1);
00042
00043 m_textField = new QLineEdit(defaultName, this);
00044 layout->addWidget(m_textField, 1, 0);
00045
00046 connect(m_textField, SIGNAL(textChanged(const QString &)),
00047 this, SLOT(textChanged(const QString &)));
00048
00049 m_darkBackground = new QCheckBox(this);
00050 layout->addWidget(m_darkBackground, 2, 0);
00051 m_darkBackground->setChecked
00052 (colour.red() + colour.green() + colour.blue() > 384);
00053 fillColourLabel();
00054
00055 connect(m_darkBackground, SIGNAL(stateChanged(int)),
00056 this, SLOT(darkBackgroundChanged(int)));
00057
00058 QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok |
00059 QDialogButtonBox::Cancel);
00060 layout->addWidget(bb, 3, 0, 1, 2);
00061 connect(bb, SIGNAL(accepted()), this, SLOT(accept()));
00062 connect(bb, SIGNAL(rejected()), this, SLOT(reject()));
00063 m_okButton = bb->button(QDialogButtonBox::Ok);
00064 m_okButton->setEnabled(defaultName != "");
00065 }
00066
00067 void
00068 ColourNameDialog::showDarkBackgroundCheckbox(QString text)
00069 {
00070 m_darkBackground->setText(text);
00071 m_darkBackground->show();
00072 }
00073
00074 bool
00075 ColourNameDialog::isDarkBackgroundChecked() const
00076 {
00077 return m_darkBackground->isChecked();
00078 }
00079
00080 void
00081 ColourNameDialog::darkBackgroundChanged(int)
00082 {
00083 fillColourLabel();
00084 }
00085
00086 void
00087 ColourNameDialog::textChanged(const QString &text)
00088 {
00089 m_okButton->setEnabled(text != "");
00090 }
00091
00092 void
00093 ColourNameDialog::fillColourLabel()
00094 {
00095 QPixmap pmap(20, 20);
00096 pmap.fill(m_darkBackground->isChecked() ? Qt::black : Qt::white);
00097 QPainter paint(&pmap);
00098 paint.setPen(m_colour);
00099 paint.setBrush(m_colour);
00100 paint.drawRect(2, 2, 15, 15);
00101 m_colourLabel->setPixmap(pmap);
00102 }
00103
00104 QString
00105 ColourNameDialog::getColourName() const
00106 {
00107 return m_textField->text();
00108 }