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 <QtMath>
#include <QSvgGenerator> #include <QSvgGenerator>
#include <QFileSystemWatcher> #include <QFileSystemWatcher>
#include <QSaveFile>
#include "ui_vpmainwindow.h" #include "ui_vpmainwindow.h"
#include "dialogs/vpdialogabout.h" #include "dialogs/vpdialogabout.h"
@ -268,9 +269,11 @@ void VPMainWindow::SetCurrentFile(const QString &fileName)
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------
auto VPMainWindow::SaveLayout(const QString &path, QString &error) -> bool auto VPMainWindow::SaveLayout(const QString &path, QString &error) -> bool
{ {
QFile file(path); bool success = false;
file.open(QIODevice::WriteOnly); QSaveFile file(path);
// cppcheck-suppress ConfigurationNotChecked
if (file.open(QIODevice::WriteOnly))
{
VPLayoutFileWriter fileWriter; VPLayoutFileWriter fileWriter;
fileWriter.WriteFile(m_layout, &file); fileWriter.WriteFile(m_layout, &file);
@ -280,9 +283,19 @@ auto VPMainWindow::SaveLayout(const QString &path, QString &error) -> bool
return false; return false;
} }
success = file.commit();
}
if (success)
{
SetCurrentFile(path); SetCurrentFile(path);
LayoutWasSaved(true); LayoutWasSaved(true);
return true; }
else
{
error = file.errorString();
}
return success;
} }
//--------------------------------------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------------------------------------

View file

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

View file

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