diff options
Diffstat (limited to 'configurationdialog.cpp')
-rw-r--r-- | configurationdialog.cpp | 136 |
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); +} |