summaryrefslogtreecommitdiffstats
path: root/configurationdialog.cpp
diff options
context:
space:
mode:
authorArno <am@disconnect.de>2010-12-22 16:59:12 +0100
committerArno <am@disconnect.de>2010-12-26 20:49:27 +0100
commit7bb7295a9033c0a6729b301e7c9b76393539e29a (patch)
treedf92ec2f09e1cf6797fde07dc495efb051c94b74 /configurationdialog.cpp
parent832d48d3b9249db178f649d00c5c7134bea2becb (diff)
downloadSheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.tar.gz
SheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.tar.bz2
SheMov-7bb7295a9033c0a6729b301e7c9b76393539e29a.zip
Made colors configurable
Added a tab to ConfigurationDialog to make some colors configurable. It works somehow. The font color isn't evaluated yet, since I'm not convinced that it is a good idea. But one problem is that calling qApp->setPalette() doesn't propagate to non visible child dialogs. Dunno if it's worth fixing.
Diffstat (limited to 'configurationdialog.cpp')
-rw-r--r--configurationdialog.cpp136
1 files changed, 136 insertions, 0 deletions
diff --git a/configurationdialog.cpp b/configurationdialog.cpp
index 08186e9..7008e76 100644
--- a/configurationdialog.cpp
+++ b/configurationdialog.cpp
@@ -27,6 +27,12 @@
#include <QFile>
#include <QTextStream>
#include <QRegExpValidator>
+#include <QSignalMapper>
+#include <QColor>
+#include <QColorDialog>
+#include <QPalette>
+#include <QImage>
+#include <QPainter>
#include "configurationdialog.h"
#include "programconfigurator.h"
@@ -177,6 +183,81 @@ ConfigurationDialog::ConfigurationDialog(QWidget *parent, Qt::WindowFlags f) : Q
databaseWidget->setLayout(dbGrid);
mTab->addTab(databaseWidget, tr("Database"));
+ //colors tab
+ QWidget *colorsWidget = new QWidget;
+ QGridLayout *colorGrid = new QGridLayout;
+ QSignalMapper *colorMapper = new QSignalMapper(this);
+ QLabel *colorl1 = new QLabel(tr("Files marked as seen"));
+ mSeenColor = new QLabel;
+ mSeenColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mSeenColor->setScaledContents(true);
+ mSeenButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl1, 0, 0);
+ colorGrid->addWidget(mSeenColor, 0, 1);
+ colorGrid->addWidget(mSeenButton, 0, 2);
+ colorMapper->setMapping(mSeenButton, mSeenColor);
+ connect(mSeenButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl2 = new QLabel(tr("Files in clipboard"));
+ mClipboardColor = new QLabel;
+ mClipboardColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mClipboardColor->setScaledContents(true);
+ mClipboardButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl2, 1, 0);
+ colorGrid->addWidget(mClipboardColor, 1, 1);
+ colorGrid->addWidget(mClipboardButton, 1, 2);
+ colorMapper->setMapping(mClipboardButton, mClipboardColor);
+ connect(mClipboardButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl3 = new QLabel(tr("Base color for rows"));
+ mBaseColor = new QLabel;
+ mBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mBaseColor->setScaledContents(true);
+ mBaseButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl3, 2, 0);
+ colorGrid->addWidget(mBaseColor, 2, 1);
+ colorGrid->addWidget(mBaseButton, 2, 2);
+ colorMapper->setMapping(mBaseButton, mBaseColor);
+ connect(mBaseButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl4 = new QLabel(tr("Alternate base for rows"));
+ mAlternateBaseColor = new QLabel;
+ mAlternateBaseColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mAlternateBaseColor->setScaledContents(true);
+ mAlternateBaseButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl4, 3, 0);
+ colorGrid->addWidget(mAlternateBaseColor, 3, 1);
+ colorGrid->addWidget(mAlternateBaseButton, 3, 2);
+ colorMapper->setMapping(mAlternateBaseButton, mAlternateBaseColor);
+ connect(mAlternateBaseButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl5 = new QLabel(tr("Font color"));
+ mFontColor = new QLabel;
+ mFontColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mFontColor->setScaledContents(true);
+ mFontColorButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl5, 4, 0);
+ colorGrid->addWidget(mFontColor, 4, 1);
+ colorGrid->addWidget(mFontColorButton, 4, 2);
+ colorMapper->setMapping(mFontColorButton, mFontColor);
+ connect(mFontColorButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ QLabel *colorl6 = new QLabel(tr("Local files"));
+ mLocalColor = new QLabel;
+ mLocalColor->setFrameStyle(QFrame::Sunken | QFrame::Panel);
+ mLocalColor->setScaledContents(true);
+ mLocalColorButton = new QPushButton(tr("Choose..."));
+ colorGrid->addWidget(colorl6, 5, 0);
+ colorGrid->addWidget(mLocalColor, 5, 1);
+ colorGrid->addWidget(mLocalColorButton, 5, 2);
+ colorMapper->setMapping(mLocalColorButton, mLocalColor);
+ connect(mLocalColorButton, SIGNAL(clicked()), colorMapper, SLOT(map()));
+ connect(colorMapper, SIGNAL(mapped(QWidget*)), this, SLOT(chooseColor(QWidget*)));
+ mAlternateColors = new QCheckBox(tr("Use alternating row colors"));
+ mAlternateColors->setTristate(false);
+ connect(mAlternateColors, SIGNAL(stateChanged(int)), this, SLOT(alternateColorsChanged(int)));
+ colorGrid->addWidget(mAlternateColors, 6, 1, 1, 2, Qt::AlignLeft);
+ QVBoxLayout *colorStretchLayout = new QVBoxLayout;
+ colorStretchLayout->addStretch();
+ colorGrid->addLayout(colorStretchLayout, 7, 1, 3, Qt::AlignLeft);
+ colorsWidget->setLayout(colorGrid);
+ mTab->addTab(colorsWidget, tr("Colors"));
+
//main layout
mOk = new QPushButton(tr("Ok"));
connect(mOk, SIGNAL(clicked()), this, SLOT(accept()));
@@ -235,6 +316,26 @@ void ConfigurationDialog::readSettings(){
mDatabaseUsername->setText(s.value("database/dbuser").toString());
mDatabasePassword->setText(s.value("database/dbpass").toString());
+ //read colors
+ QVariant seen = s.value("ui/seencolor", Qt::red);
+ mColors.insert(mSeenColor, seen.value<QColor>());
+ QVariant clip = s.value("ui/clipcolor", Qt::darkBlue);
+ mColors.insert(mClipboardColor, clip.value<QColor>());
+ QVariant base = s.value("ui/basecolor", qApp->palette().base().color());
+ mColors.insert(mBaseColor, base.value<QColor>());
+ QVariant alternate = s.value("ui/alternatecolor", qApp->palette().alternateBase().color());
+ mColors.insert(mAlternateBaseColor, alternate.value<QColor>());
+ QVariant font = s.value("ui/fontcolor", qApp->palette().foreground().color());
+ mColors.insert(mFontColor, font.value<QColor>());
+ QVariant local = s.value("ui/localcolor", Qt::darkBlue);
+ mColors.insert(mLocalColor, local.value<QColor>());
+ QHash<QWidget*, QColor>::const_iterator it;
+ for(it = mColors.constBegin(); it != mColors.constEnd(); ++it){
+ setColor(it.key());
+ }
+ bool allowAlternate = s.value("ui/allowalternate", true).toBool();
+ mAlternateColors->setChecked(allowAlternate);
+ alternateColorsChanged(mAlternateColors->checkState());
}
void ConfigurationDialog::writeSettings(){
@@ -277,6 +378,15 @@ void ConfigurationDialog::writeSettings(){
//write pics
mPicConfig->writeSettings();
+
+ //write colors
+ s.setValue("ui/seencolor", mColors.value(mSeenColor));
+ s.setValue("ui/clipcolor", mColors.value(mClipboardColor));
+ s.setValue("ui/basecolor", mColors.value(mBaseColor));
+ s.setValue("ui/alternatecolor", mColors.value(mAlternateBaseColor));
+ s.setValue("ui/fontcolor", mColors.value(mFontColor));
+ s.setValue("ui/localcolor", mColors.value(mLocalColor));
+ s.setValue("ui/allowalternate", mAlternateColors->isChecked());
}
bool ConfigurationDialog::checkDvdPath(){
@@ -329,3 +439,29 @@ void ConfigurationDialog::mountError(const QString &error){
QSettings s;
s.setValue("paths/dvdmount", QString());
}
+
+void ConfigurationDialog::chooseColor(QWidget *label){
+ QColor newColor = QColorDialog::getColor(mColors.value(label), this);
+ if(newColor.isValid()){
+ mColors[label] = newColor;
+ setColor(label);
+ }
+}
+
+void ConfigurationDialog::alternateColorsChanged(int state){
+ mBaseButton->setEnabled(state == Qt::Checked);
+ mBaseColor->setEnabled(state == Qt::Checked);
+ mAlternateBaseButton->setEnabled(state == Qt::Checked);
+ mAlternateBaseColor->setEnabled(state == Qt::Checked);
+}
+
+void ConfigurationDialog::setColor(QWidget *label){
+ QLabel *curLabel = qobject_cast<QLabel*>(label);
+ if(!curLabel){
+ return;
+ }
+ QColor curColor = mColors.value(label);
+ QPixmap pm(curLabel->sizeHint());
+ pm.fill(curColor);
+ curLabel->setPixmap(pm);
+}