summaryrefslogtreecommitdiffstats
path: root/configurationdialog.cpp
diff options
context:
space:
mode:
authorArno <arno@disconnect.de>2017-03-07 10:22:01 +0100
committerArno <arno@disconnect.de>2017-03-07 10:22:01 +0100
commit57357d21c3633ff7dbb120e231b8b9eaf9821fb6 (patch)
tree9378471bc18825b678e65b93313259335d8531c1 /configurationdialog.cpp
parentfad486922aa8ac8a4e55bd154bd8817f759d7ebd (diff)
downloadBeetPlayer-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.cpp66
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);
}