cppcheck/gui/settingsdialog.cpp

124 lines
3.5 KiB
C++

/*
* 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 <http://www.gnu.org/licenses/
*/
#include "settingsdialog.h"
#include <QLabel>
#include <QDebug>
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()));
}