diff options
author | Arno <arno@disconnect.de> | 2017-03-07 10:22:01 +0100 |
---|---|---|
committer | Arno <arno@disconnect.de> | 2017-03-07 10:22:01 +0100 |
commit | 57357d21c3633ff7dbb120e231b8b9eaf9821fb6 (patch) | |
tree | 9378471bc18825b678e65b93313259335d8531c1 /configurationdialog.cpp | |
parent | fad486922aa8ac8a4e55bd154bd8817f759d7ebd (diff) | |
download | BeetPlayer-57357d21c3633ff7dbb120e231b8b9eaf9821fb6.tar.gz BeetPlayer-57357d21c3633ff7dbb120e231b8b9eaf9821fb6.tar.bz2 BeetPlayer-57357d21c3633ff7dbb120e231b8b9eaf9821fb6.zip |
Implement color choosing dialog for QTreeViews
Hmm, this shouldn't be so hard. Quite a lot of code for such an easy
thing, but maybe it's just me and I'm over-complicating things...
Diffstat (limited to 'configurationdialog.cpp')
-rw-r--r-- | configurationdialog.cpp | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp index 88e70a4..1d3b605 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -2,10 +2,14 @@ #include <QLineEdit> #include <QLabel> #include <QPushButton> +#include <QCheckBox> #include <QTabWidget> #include <QSettings> +#include <QColorDialog> +#include <QSignalMapper> #include "configurationdialog.h" +#include "helper.h" ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : QDialog(parent, f) { //database setup @@ -38,10 +42,44 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : Q bLayout->addWidget(cancelB); bLayout->addStretch(); + //colors + QWidget *colorWidget = new QWidget; + QGridLayout *colorGrid = new QGridLayout; + colorGrid->setColumnStretch(1, 4); + colorGrid->addWidget(new QLabel(tr("Base color")), 0, 0); + mBaseColorL = new QLabel; + mBaseColorL->setFrameStyle(QFrame::Sunken | QFrame::Panel); + mBaseColorL->setScaledContents(true); + colorGrid->addWidget(mBaseColorL, 0, 1); + QPushButton *baseColorB = new QPushButton; + baseColorB->setIcon(QIcon(":/fill-color.png")); + colorGrid->addWidget(baseColorB, 0, 2); + colorGrid->addWidget(new QLabel(tr("Alt. color")), 1, 0); + mAltColorL = new QLabel; + mAltColorL->setFrameStyle(QFrame::Sunken | QFrame::Panel); + mAltColorL->setScaledContents(true); + colorGrid->addWidget(mAltColorL, 1, 1); + QPushButton *altColorB = new QPushButton; + altColorB->setIcon(QIcon(":/fill-color.png")); + colorGrid->addWidget(altColorB, 1, 2); + QVBoxLayout *colorL = new QVBoxLayout; + colorL->addLayout(colorGrid); + colorL->addStretch(); + colorWidget->setLayout(colorL); + mUseAltColors = new QCheckBox(tr("Use alt. row colors")); + colorGrid->addWidget(mUseAltColors, 2, 1, 1, 2, Qt::AlignLeft); + QSignalMapper *colorMapper = new QSignalMapper(this); + colorMapper->setMapping(baseColorB, mBaseColorL); + colorMapper->setMapping(altColorB, mAltColorL); + connect(baseColorB, SIGNAL(clicked()), colorMapper, SLOT(map())); + connect(altColorB, SIGNAL(clicked()), colorMapper, SLOT(map())); + connect(colorMapper, SIGNAL(mapped(QWidget*)), this, SLOT(chooseColor(QWidget*))); + //dialog layout QVBoxLayout *mainLayout = new QVBoxLayout; QTabWidget *tab = new QTabWidget; tab->addTab(dbWidget, tr("Database")); + tab->addTab(colorWidget, tr("Colors")); mainLayout->addWidget(tab); mainLayout->addLayout(bLayout); readSettings(); @@ -55,12 +93,40 @@ void ConfigurationDialog::accept(){ s.setValue("dbuser", mDbUser->text()); s.setValue("dbpass", mDbPass->text()); s.setValue("dbname", mDbName->text()); + QColor baseColor = Helper::colorFromLabel(mBaseColorL); + s.setValue("basecolor", baseColor); + QColor altColor = Helper::colorFromLabel(mAltColorL); + s.setValue("altcolor", altColor); + s.setValue("usealtcolors", mUseAltColors->isChecked()); QDialog::accept(); } + +void ConfigurationDialog::chooseColor(QWidget *label){ + QLabel *curLabel = static_cast<QLabel*>(label); + QColor startColor = Helper::colorFromLabel(curLabel); + if(!startColor.isValid()){ + startColor = palette().base().color(); + } + QColor newColor = QColorDialog::getColor(startColor, this); + if(newColor.isValid()){ + QPixmap newPm(curLabel->sizeHint()); + newPm.fill(newColor); + curLabel->setPixmap(newPm); + } +} + void ConfigurationDialog::readSettings(){ QSettings s; mDbHost->setText(s.value("dbhost").toString()); mDbUser->setText(s.value("dbuser").toString()); mDbPass->setText(s.value("dbpass").toString()); mDbName->setText(s.value("dbname").toString()); + QVariant baseColorV = s.value("basecolor", palette().base().color()); + QColor baseColor = baseColorV.value<QColor>(); + Helper::fillLabel(mBaseColorL, baseColor); + QVariant altColorV = s.value("altcolor", palette().alternateBase().color()); + QColor altColor = altColorV.value<QColor>(); + Helper::fillLabel(mAltColorL, altColor); + bool useAltColors = s.value("usealtcolors", false).toBool(); + mUseAltColors->setChecked(useAltColors); } |