File indexing completed on 2024-04-28 04:05:21
0001 /* 0002 SPDX-FileCopyrightText: 2015 Jakob Gruber <jakob.gruber@gmail.com> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #include "settingswindow.h" 0008 #include "ui_settingswindow.h" 0009 0010 #include <assert.h> 0011 #include <KLocalizedString> 0012 #include <QColorDialog> 0013 #include <QFileDialog> 0014 0015 static inline QString toStylesheet(const QString &color) 0016 { 0017 return QStringLiteral("QLabel { color : %1 }").arg(color); 0018 } 0019 0020 SettingsWindow::SettingsWindow(QWidget *parent) : 0021 QDialog(parent), 0022 ui(new Ui::SettingsWindow) 0023 { 0024 ui->setupUi(this); 0025 0026 restoreSettings(); 0027 0028 connect(ui->bgToolButton, &QToolButton::clicked, this, &SettingsWindow::bgToolButtonClicked); 0029 connect(ui->fontColorSolvedPushButton, &QPushButton::clicked, this, &SettingsWindow::selectSolvedColor); 0030 connect(ui->fontColorUnsolvedPushButton, &QPushButton::clicked, this, &SettingsWindow::selectUnsolvedColor); 0031 connect(ui->bgCustomRadioButton, &QRadioButton::toggled, ui->bgToolButton, &QToolButton::setEnabled); 0032 } 0033 0034 SettingsWindow::~SettingsWindow() 0035 { 0036 delete ui; 0037 } 0038 0039 void SettingsWindow::selectSolvedColor() 0040 { 0041 QColor color(m_font_color_solved); 0042 color = QColorDialog::getColor(color, this); 0043 if (!color.isValid()) { 0044 return; 0045 } 0046 m_font_color_solved = color.name(); 0047 ui->fontColorSolvedLabel->setStyleSheet(toStylesheet(m_font_color_solved)); 0048 } 0049 0050 void SettingsWindow::selectUnsolvedColor() 0051 { 0052 QColor color(m_font_color_unsolved); 0053 color = QColorDialog::getColor(color, this); 0054 if (!color.isValid()) { 0055 return; 0056 } 0057 m_font_color_unsolved = color.name(); 0058 ui->fontColorUnsolvedLabel->setStyleSheet(toStylesheet(m_font_color_unsolved)); 0059 } 0060 0061 void SettingsWindow::bgToolButtonClicked() 0062 { 0063 QString fileName = QFileDialog::getOpenFileName(this, i18n("Select Background"), QString(), 0064 i18n("Image Files (*.png *.jpg)")); 0065 0066 if (fileName.isNull()) { 0067 return; 0068 } 0069 0070 ui->bgLineEdit->setText(fileName); 0071 } 0072 0073 void SettingsWindow::restoreSettings() { 0074 ui->heightSpinBox->setValue(Settings::instance()->height()); 0075 ui->widthSpinBox->setValue(Settings::instance()->width()); 0076 ui->densitySlider->setValue(Settings::instance()->boxDensity() * 100.0); 0077 ui->preventMistakesCheckBox->setChecked(Settings::instance()->preventMistakes()); 0078 ui->bgCustomRadioButton->setChecked(Settings::instance()->customBgEnabled()); 0079 ui->bgToolButton->setEnabled(Settings::instance()->customBgEnabled()); 0080 ui->bgLineEdit->setText(Settings::instance()->customBgPath()); 0081 m_font_color_solved = Settings::instance()->fontColorSolved(); 0082 m_font_color_unsolved = Settings::instance()->fontColorUnsolved(); 0083 ui->fontColorUnsolvedLabel->setStyleSheet(toStylesheet(m_font_color_unsolved)); 0084 ui->fontColorSolvedLabel->setStyleSheet(toStylesheet(m_font_color_solved)); 0085 } 0086 0087 void SettingsWindow::saveSettings() { 0088 Settings::instance()->setHeight(ui->heightSpinBox->value()); 0089 Settings::instance()->setWidth(ui->widthSpinBox->value()); 0090 Settings::instance()->setBoxDensity(ui->densitySlider->value() / 100.0); 0091 Settings::instance()->setPreventMistakes(ui->preventMistakesCheckBox->isChecked()); 0092 Settings::instance()->setCustomBgEnabled(ui->bgCustomRadioButton->isChecked()); 0093 Settings::instance()->setCustomBgPath(ui->bgLineEdit->text()); 0094 Settings::instance()->setFontColorSolved(m_font_color_solved); 0095 Settings::instance()->setFontColorUnsolved(m_font_color_unsolved); 0096 0097 Settings::instance()->sync(); 0098 } 0099 0100 void SettingsWindow::accept() { 0101 saveSettings(); 0102 QDialog::accept(); 0103 } 0104 0105 #include "moc_settingswindow.cpp"