Use QSaveFile class for saving a layout.

This commit is contained in:
Roman Telezhynskyi 2021-08-14 17:21:58 +03:00
parent 742c1c3eb3
commit b638be5b2e
3 changed files with 27 additions and 14 deletions

View File

@ -32,6 +32,7 @@
#include <QtMath>
#include <QSvgGenerator>
#include <QFileSystemWatcher>
#include <QSaveFile>
#include "ui_vpmainwindow.h"
#include "dialogs/vpdialogabout.h"
@ -268,21 +269,33 @@ void VPMainWindow::SetCurrentFile(const QString &fileName)
//---------------------------------------------------------------------------------------------------------------------
auto VPMainWindow::SaveLayout(const QString &path, QString &error) -> bool
{
QFile file(path);
file.open(QIODevice::WriteOnly);
VPLayoutFileWriter fileWriter;
fileWriter.WriteFile(m_layout, &file);
if (fileWriter.hasError())
bool success = false;
QSaveFile file(path);
// cppcheck-suppress ConfigurationNotChecked
if (file.open(QIODevice::WriteOnly))
{
error = tr("Fail to create layout.");
return false;
VPLayoutFileWriter fileWriter;
fileWriter.WriteFile(m_layout, &file);
if (fileWriter.hasError())
{
error = tr("Fail to create layout.");
return false;
}
success = file.commit();
}
SetCurrentFile(path);
LayoutWasSaved(true);
return true;
if (success)
{
SetCurrentFile(path);
LayoutWasSaved(true);
}
else
{
error = file.errorString();
}
return success;
}
//---------------------------------------------------------------------------------------------------------------------

View File

@ -137,7 +137,7 @@ auto GrainlineArrowDirrectionToString(GrainlineArrowDirection type) -> QString
} // namespace
//---------------------------------------------------------------------------------------------------------------------
void VPLayoutFileWriter::WriteFile(VPLayout *layout, QFile *file)
void VPLayoutFileWriter::WriteFile(VPLayout *layout, QIODevice *file)
{
setDevice(file);
setAutoFormatting(true);

View File

@ -51,7 +51,7 @@ public:
VPLayoutFileWriter()= default;
~VPLayoutFileWriter()= default;
void WriteFile(VPLayout *layout, QFile *file);
void WriteFile(VPLayout *layout, QIODevice *file);
private:
void WriteLayout(VPLayout *layout);