From 81aafd665a74ff4de206667ba495109f34294dd5 Mon Sep 17 00:00:00 2001 From: Arno Date: Sat, 17 Mar 2012 06:15:56 +0100 Subject: Make background color of PictureViewer2 configurable Add options to ConfigurationDialog to either use a fixed color as background or a gradient picked with random colors picked from the picture. --- configurationdialog.cpp | 46 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) (limited to 'configurationdialog.cpp') diff --git a/configurationdialog.cpp b/configurationdialog.cpp index 25908db..717e510 100644 --- a/configurationdialog.cpp +++ b/configurationdialog.cpp @@ -313,15 +313,37 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : S colorGrid->addWidget(mFavoriteColorButton, 7, 2); colorMapper->setMapping(mFavoriteColorButton, mFavoriteColor); connect(mFavoriteColorButton, SIGNAL(clicked()), colorMapper, SLOT(map())); - connect(colorMapper, SIGNAL(mapped(QWidget*)), this, SLOT(chooseColor(QWidget*))); - mAlternateColors = new QCheckBox(tr("Use alternating row colors")); + mAlternateColors = new QCheckBox(tr("Use alternating row colors")); mAlternateColors->setTristate(false); connect(mAlternateColors, SIGNAL(stateChanged(int)), this, SLOT(alternateColorsChanged(int))); colorGrid->addWidget(mAlternateColors, 8, 1, 1, 2, Qt::AlignLeft); - QVBoxLayout *colorStretchLayout = new QVBoxLayout; - colorStretchLayout->addStretch(); - colorGrid->addLayout(colorStretchLayout, 9, 1, 3, Qt::AlignLeft); - colorsWidget->setLayout(colorGrid); + colorsWidget->setLayout(colorGrid); + + QLabel *color9 = new QLabel(tr("PicViewer Background")); + mPVBgColor = new QLabel; + mPVBgColor->setFrameStyle(QFrame::Sunken | QFrame::Panel); + mPVBgColor->setScaledContents(true); + mPVBgButton = new QPushButton(tr("Choose...")); + QGridLayout *pvGrid = new QGridLayout; + pvGrid->addWidget(color9, 0, 0); + pvGrid->addWidget(mPVBgColor, 0, 1); + pvGrid->addWidget(mPVBgButton, 0, 2); + colorMapper->setMapping(mPVBgButton, mPVBgColor); + connect(mPVBgButton, SIGNAL(clicked()), colorMapper, SLOT(map())); + mPVGradient = new QCheckBox(tr("Use random gradient as background")); + mPVGradient->setTristate(false); + connect(mPVGradient, SIGNAL(stateChanged(int)), this, SLOT(randomGradientChanged(int))); + pvGrid->addWidget(mPVGradient, 1, 1, 1, 2, Qt::AlignLeft); + + connect(colorMapper, SIGNAL(mapped(QWidget*)), this, SLOT(chooseColor(QWidget*))); + QGroupBox *treeGB = new QGroupBox(tr("Treeview colors")); + treeGB->setLayout(colorGrid); + QGroupBox *pvGB = new QGroupBox(tr("PicViewer colors")); + pvGB->setLayout(pvGrid); + QVBoxLayout *colorLayout = new QVBoxLayout; + colorLayout->addWidget(treeGB); + colorLayout->addWidget(pvGB); + colorsWidget->setLayout(colorLayout); mTab->addTab(colorsWidget, tr("Colors")); //main layout @@ -406,6 +428,8 @@ void ConfigurationDialog::readSettings(){ mColors.insert(mArchivedColor, archived.value()); QVariant favorite = s.value("ui/favoritecolor", Qt::red); mColors.insert(mFavoriteColor, favorite.value()); + QVariant pvbackground = s.value("ui/pvbgcolor", Qt::red); + mColors.insert(mPVBgColor, pvbackground.value()); QHash::const_iterator it; for(it = mColors.constBegin(); it != mColors.constEnd(); ++it){ setColor(it.key()); @@ -413,6 +437,9 @@ void ConfigurationDialog::readSettings(){ bool allowAlternate = s.value("ui/allowalternate", true).toBool(); mAlternateColors->setChecked(allowAlternate); alternateColorsChanged(mAlternateColors->checkState()); + bool useGradient = s.value("ui/pvgradient", false).toBool(); + mPVGradient->setChecked(useGradient); + randomGradientChanged(mPVGradient->checkState()); } void ConfigurationDialog::writeSettings(){ @@ -470,7 +497,9 @@ void ConfigurationDialog::writeSettings(){ s.setValue("ui/localcolor", mColors.value(mLocalColor)); s.setValue("ui/archivedcolor", mColors.value(mArchivedColor)); s.setValue("ui/favoritecolor", mColors.value(mFavoriteColor)); + s.setValue("ui/pvbgcolor", mColors.value(mPVBgColor)); s.setValue("ui/allowalternate", mAlternateColors->isChecked()); + s.setValue("ui/pvgradient", mPVGradient->isChecked()); } bool ConfigurationDialog::checkDvdPath(){ @@ -539,6 +568,11 @@ void ConfigurationDialog::alternateColorsChanged(int state){ mAlternateBaseColor->setEnabled(state == Qt::Checked); } +void ConfigurationDialog::randomGradientChanged(int state){ + mPVBgButton->setEnabled(state == Qt::Unchecked); + mPVBgColor->setEnabled(state == Qt::Unchecked); +} + void ConfigurationDialog::setColor(QWidget *label){ QLabel *curLabel = qobject_cast(label); if(!curLabel){ -- cgit v1.2.3-70-g09d2