Skip to content

Commit c4ee979

Browse files
committed
GUI: load/save data automatically in the ProjectFileDialog
1 parent 17d9f88 commit c4ee979

File tree

3 files changed

+27
-17
lines changed

3 files changed

+27
-17
lines changed

gui/mainwindow.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1410,14 +1410,16 @@ void MainWindow::analyzeProject(const ProjectFile *projectFile)
14101410

14111411
void MainWindow::newProjectFile()
14121412
{
1413-
const QString filter = tr("Project files (*.cppcheck);;All files(*.*)");
1413+
const QString filter = tr("Project files (*.cppcheck)");
14141414
QString filepath = QFileDialog::getSaveFileName(this,
14151415
tr("Select Project Filename"),
14161416
getPath(SETTINGS_LAST_PROJECT_PATH),
14171417
filter);
14181418

14191419
if (filepath.isEmpty())
14201420
return;
1421+
if (!filepath.endsWith(".cppcheck", Qt::CaseInsensitive))
1422+
filepath += ".cppcheck";
14211423

14221424
setPath(SETTINGS_LAST_PROJECT_PATH, filepath);
14231425

@@ -1427,12 +1429,10 @@ void MainWindow::newProjectFile()
14271429

14281430
delete mProjectFile;
14291431
mProjectFile = new ProjectFile(this);
1432+
mProjectFile->setFilename(filepath);
14301433

1431-
ProjectFileDialog dlg(filepath, this);
1432-
dlg.loadFromProjectFile(mProjectFile);
1434+
ProjectFileDialog dlg(mProjectFile, this);
14331435
if (dlg.exec() == QDialog::Accepted) {
1434-
dlg.saveToProjectFile(mProjectFile);
1435-
mProjectFile->write();
14361436
addProjectMRU(filepath);
14371437
analyzeProject(mProjectFile);
14381438
} else {
@@ -1461,10 +1461,8 @@ void MainWindow::editProjectFile()
14611461
return;
14621462
}
14631463

1464-
ProjectFileDialog dlg(mProjectFile->getFilename(), this);
1465-
dlg.loadFromProjectFile(mProjectFile);
1464+
ProjectFileDialog dlg(mProjectFile, this);
14661465
if (dlg.exec() == QDialog::Accepted) {
1467-
dlg.saveToProjectFile(mProjectFile);
14681466
mProjectFile->write();
14691467
analyzeProject(mProjectFile);
14701468
}

gui/projectfiledialog.cpp

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
#include "cppcheck.h"
3333
#include "errorlogger.h"
3434

35-
ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
35+
ProjectFileDialog::ProjectFileDialog(ProjectFile *projectFile, QWidget *parent)
3636
: QDialog(parent)
37-
, mFilePath(path)
37+
, mProjectFile(projectFile)
3838
{
3939
mUI.setupUi(this);
4040

41-
const QFileInfo inf(path);
41+
const QFileInfo inf(projectFile->getFilename());
4242
QString filename = inf.fileName();
4343
QString title = tr("Project file: %1").arg(filename);
4444
setWindowTitle(title);
@@ -90,7 +90,7 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
9090
mLibraryCheckboxes << checkbox;
9191
}
9292

93-
connect(mUI.mButtons, &QDialogButtonBox::accepted, this, &ProjectFileDialog::accept);
93+
connect(mUI.mButtons, &QDialogButtonBox::accepted, this, &ProjectFileDialog::ok);
9494
connect(mUI.mBtnBrowseBuildDir, &QPushButton::clicked, this, &ProjectFileDialog::browseBuildDir);
9595
connect(mUI.mBtnClearImportProject, &QPushButton::clicked, this, &ProjectFileDialog::clearImportProject);
9696
connect(mUI.mBtnBrowseImportProject, &QPushButton::clicked, this, &ProjectFileDialog::browseImportProject);
@@ -107,6 +107,8 @@ ProjectFileDialog::ProjectFileDialog(const QString &path, QWidget *parent)
107107
connect(mUI.mBtnIncludeDown, &QPushButton::clicked, this, &ProjectFileDialog::moveIncludePathDown);
108108
connect(mUI.mBtnAddSuppression, &QPushButton::clicked, this, &ProjectFileDialog::addSuppression);
109109
connect(mUI.mBtnRemoveSuppression, &QPushButton::clicked, this, &ProjectFileDialog::removeSuppression);
110+
111+
loadFromProjectFile(projectFile);
110112
}
111113

112114
ProjectFileDialog::~ProjectFileDialog()
@@ -155,9 +157,16 @@ void ProjectFileDialog::saveToProjectFile(ProjectFile *projectFile) const
155157
projectFile->setSuppressions(getSuppressions());
156158
}
157159

160+
void ProjectFileDialog::ok()
161+
{
162+
saveToProjectFile(mProjectFile);
163+
mProjectFile->write();
164+
accept();
165+
}
166+
158167
QString ProjectFileDialog::getExistingDirectory(const QString &caption, bool trailingSlash)
159168
{
160-
const QFileInfo inf(mFilePath);
169+
const QFileInfo inf(mProjectFile->getFilename());
161170
const QString rootpath = inf.absolutePath();
162171
QString selectedDir = QFileDialog::getExistingDirectory(this,
163172
caption,
@@ -211,7 +220,7 @@ void ProjectFileDialog::clearImportProject()
211220

212221
void ProjectFileDialog::browseImportProject()
213222
{
214-
const QFileInfo inf(mFilePath);
223+
const QFileInfo inf(mProjectFile->getFilename());
215224
const QDir &dir = inf.absoluteDir();
216225
QString fileName = QFileDialog::getOpenFileName(this, tr("Import Project"),
217226
dir.canonicalPath(),

gui/projectfiledialog.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ class ProjectFile;
4040
class ProjectFileDialog : public QDialog {
4141
Q_OBJECT
4242
public:
43-
ProjectFileDialog(const QString &path, QWidget *parent = 0);
43+
ProjectFileDialog(ProjectFile *projectFile, QWidget *parent = 0);
4444
virtual ~ProjectFileDialog();
4545

46+
private:
4647
void loadFromProjectFile(const ProjectFile *projectFile);
4748
void saveToProjectFile(ProjectFile *projectFile) const;
4849

49-
private:
5050
/** Enable and disable widgets in the 'Paths and Defines' tab */
5151
void updatePathsAndDefines();
5252

@@ -146,6 +146,9 @@ class ProjectFileDialog : public QDialog {
146146

147147
protected slots:
148148

149+
/** ok button pressed, save changes and accept */
150+
void ok();
151+
149152
/**
150153
* @brief Browse for build dir.
151154
*/
@@ -263,7 +266,7 @@ protected slots:
263266
/**
264267
* @brief Projectfile path.
265268
*/
266-
QString mFilePath;
269+
ProjectFile *mProjectFile;
267270

268271
/** @brief Library checkboxes */
269272
QList<QCheckBox*> mLibraryCheckboxes;

0 commit comments

Comments
 (0)