Removed filename string conversion from loading/saving to avoid codepage

problems
feature/qt-as-conan-package
mandlm 2019-01-29 20:14:24 +01:00
parent 1a4b40eaae
commit 542d2df992
3 changed files with 22 additions and 11 deletions

View File

@ -1,6 +1,8 @@
#include "DataModel.h"
#include "DataModel.pb.h"
#include <QFile>
#include <sstream>
DataModel::DataModel(QObject *parent)
@ -27,7 +29,7 @@ DataModel::DataModel(QObject *parent)
connect(&m_genitiv, &GenitivModel::dataChanged, this, &DataModel::genitivModelChanged);
}
void DataModel::write(std::ostream &outStream) const
void DataModel::write(const QString &filename) const
{
ESGRAF48::DataModel dataModel;
@ -41,13 +43,25 @@ void DataModel::write(std::ostream &outStream) const
m_genitiv.write(*dataModel.mutable_lateskillsgenitiv());
m_passiv.write(*dataModel.mutable_lateskillspassiv());
dataModel.SerializeToOstream(&outStream);
QFile outFile(filename);
if (!outFile.open(QIODevice::WriteOnly))
{
return;
}
dataModel.SerializeToFileDescriptor(outFile.handle());
}
void DataModel::read(std::istream &inStream)
void DataModel::read(const QString &filename)
{
QFile inFile(filename);
if (!inFile.open(QIODevice::ReadOnly))
{
return;
}
ESGRAF48::DataModel dataModel;
dataModel.ParseFromIstream(&inStream);
dataModel.ParseFromFileDescriptor(inFile.handle());
m_metaData.read(dataModel.metadata());
m_v2Svk.read(dataModel.v2svk());

View File

@ -36,8 +36,8 @@ public:
std::string toHtml() const;
void write(std::ostream &outStream) const;
void read(std::istream &inStream);
void write(const QString &filename) const;
void read(const QString &filename);
signals:
void modelChanged();

View File

@ -92,8 +92,7 @@ void MainWindow::openFile(const QString &filename)
{
closeFile();
std::fstream protoInFile(filename.toStdString(), std::ios::in | std::ios::binary);
m_dataModel.read(protoInFile);
m_dataModel.read(filename);
setWindowModified(false);
setWindowTitle(filename + "[*]");
@ -196,9 +195,7 @@ void MainWindow::closeEvent(QCloseEvent *event)
void MainWindow::saveFile(const QString &filename)
{
std::fstream protoOutFile(filename.toStdString(),
std::ios::out | std::ios::trunc | std::ios::binary);
m_dataModel.write(protoOutFile);
m_dataModel.write(filename);
qDebug() << "Wrote" << filename;