/* * Cppcheck - A tool for static C/C++ code analysis * Copyright (C) 2007-2009 Daniel Marjamäki, Reijo Tomperi, Nicolas Le Cam, * Leandro Penz, Kimmo Varis, Vesa Pikki * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see #include SettingsDialog::SettingsDialog(QSettings &programSettings) : mSettings(programSettings) { QPushButton *cancel = new QPushButton(tr("Cancel")); QPushButton *ok = new QPushButton(tr("Ok")); //Main layout QVBoxLayout *layout = new QVBoxLayout(); //Layout for ok/cancel buttons QHBoxLayout *buttonLayout = new QHBoxLayout(); //Number of jobs QHBoxLayout *jobsLayout = new QHBoxLayout(); mJobs = new QLineEdit(programSettings.value(tr("Check threads"), 1).toString()); jobsLayout->addWidget(new QLabel(tr("Number of threads: "))); jobsLayout->addWidget(mJobs); mJobs->setValidator(new QIntValidator(this)); layout->addLayout(jobsLayout); //Force mForce = AddCheckbox(layout, tr("Force checking on files that have \"too many\" configurations"), tr("Check force"), false); buttonLayout->addWidget(ok); buttonLayout->addWidget(cancel); layout->addLayout(buttonLayout); connect(ok, SIGNAL(clicked()), this, SLOT(accept())); connect(cancel, SIGNAL(clicked()), this, SLOT(reject())); setWindowTitle(tr("Settings")); setLayout(layout); LoadSettings(); } SettingsDialog::~SettingsDialog() { SaveSettings(); } Qt::CheckState SettingsDialog::BoolToCheckState(bool yes) { if (yes) { return Qt::Checked; } return Qt::Unchecked; } bool SettingsDialog::CheckStateToBool(Qt::CheckState state) { if (state == Qt::Checked) { return true; } return false; } QCheckBox* SettingsDialog::AddCheckbox(QVBoxLayout *layout, const QString &label, const QString &settings, bool value) { QCheckBox *result = new QCheckBox(label); result->setCheckState(BoolToCheckState(mSettings.value(settings, value).toBool())); layout->addWidget(result); return result; } void SettingsDialog::LoadSettings() { resize(mSettings.value(tr("Check dialog width"), 800).toInt(), mSettings.value(tr("Check dialog height"), 600).toInt()); } void SettingsDialog::SaveSettings() { mSettings.setValue(tr("Check dialog width"), size().width()); mSettings.setValue(tr("Check dialog height"), size().height()); } void SettingsDialog::SaveCheckboxValues() { mSettings.setValue(tr("Check threads"), mJobs->text().toInt()); SaveCheckboxValue(mForce, tr("Check force")); } void SettingsDialog::SaveCheckboxValue(QCheckBox *box, const QString &name) { mSettings.setValue(name, CheckStateToBool(box->checkState())); }