diff --git a/glabels/File.cpp b/glabels/File.cpp index 6a98442..3ebe3f9 100644 --- a/glabels/File.cpp +++ b/glabels/File.cpp @@ -123,7 +123,7 @@ namespace glabels newWindow->setModel( model ); newWindow->show(); } - model::Settings::addToRecentFileList( fileName ); + model::Settings::addToRecentFileList( model->fileName() ); // Save CWD mCwd = QFileInfo( fileName ).absolutePath(); @@ -163,7 +163,7 @@ namespace glabels newWindow->setModel( model ); newWindow->show(); } - model::Settings::addToRecentFileList( fileName ); + model::Settings::addToRecentFileList( model->fileName() ); // Save CWD mCwd = QFileInfo( fileName ).absolutePath(); @@ -198,7 +198,6 @@ namespace glabels } model::XmlLabelCreator::writeFile( window->model(), window->model()->fileName() ); - window->model()->clearModified(); model::Settings::addToRecentFileList( window->model()->fileName() ); // Save CWD @@ -254,9 +253,7 @@ namespace glabels } model::XmlLabelCreator::writeFile( window->model(), fileName ); - window->model()->setFileName( fileName ); - window->model()->clearModified(); - model::Settings::addToRecentFileList( fileName ); + model::Settings::addToRecentFileList( window->model()->fileName() ); // Save CWD mCwd = QFileInfo( fileName ).absolutePath(); diff --git a/glabels/main.cpp b/glabels/main.cpp index 817a289..4b1d12b 100644 --- a/glabels/main.cpp +++ b/glabels/main.cpp @@ -23,6 +23,7 @@ #include "model/FileUtil.h" #include "model/Db.h" #include "model/Model.h" +#include "model/Settings.h" #include "model/Version.h" #include "model/XmlLabelParser.h" @@ -116,11 +117,12 @@ int main( int argc, char **argv ) glabels::model::Model *model = glabels::model::XmlLabelParser::readFile( filename ); if ( model ) { - model->setFileName( filename ); auto *newWindow = new glabels::MainWindow(); newWindow->setModel( model ); newWindow->show(); openedFiles = true; + + glabels::model::Settings::addToRecentFileList( model->fileName() ); } } diff --git a/model/XmlLabelCreator.cpp b/model/XmlLabelCreator.cpp index 9d58893..c9b2fe0 100644 --- a/model/XmlLabelCreator.cpp +++ b/model/XmlLabelCreator.cpp @@ -61,14 +61,24 @@ namespace glabels return; } - model->setFileName( fileName ); - model->clearModified(); - QDomDocument doc; createDoc( doc, model ); QByteArray buffer = doc.toByteArray( 2 ); file.write( buffer.data(), buffer.size() ); + + file.close(); + + QFileInfo fileInfo( fileName ); + if ( !fileInfo.exists() ) + { + qWarning() << "Error:" << fileName << "does not exist after writing!"; + return; + } + auto canonName = fileInfo.canonicalFilePath(); + + model->setFileName( canonName ); + model->clearModified(); } diff --git a/model/XmlLabelParser.cpp b/model/XmlLabelParser.cpp index f61c710..ea72a7b 100644 --- a/model/XmlLabelParser.cpp +++ b/model/XmlLabelParser.cpp @@ -55,11 +55,19 @@ namespace glabels Model* XmlLabelParser::readFile( const QString& fileName ) { - QFile file( fileName ); + QFileInfo fileInfo( fileName ); + if ( !fileInfo.exists() ) + { + qWarning() << fileName << "does not exist!"; + return nullptr; + } + auto canonName = fileInfo.canonicalFilePath(); + + QFile file( canonName ); if ( !file.open( QFile::ReadOnly ) ) { - qWarning() << "Error: Cannot read file" << fileName + qWarning() << "Error: Cannot read file" << canonName << ":" << file.errorString(); return nullptr; } @@ -71,6 +79,7 @@ namespace glabels int errorColumn; QByteArray rawData = file.readAll(); + file.close(); if ( ((rawData[0]&0xFF) == 0x1F) && ((rawData[1]&0xFF) == 0x8b) ) // gzip magic number 0x1F, 0x8B { #if HAVE_ZLIB @@ -105,7 +114,7 @@ namespace glabels return nullptr; } - return parseRootNode( root, fileName ); + return parseRootNode( root, canonName ); } diff --git a/model/unit_tests/TestXmlLabel.cpp b/model/unit_tests/TestXmlLabel.cpp index f5c8c36..d759253 100644 --- a/model/unit_tests/TestXmlLabel.cpp +++ b/model/unit_tests/TestXmlLabel.cpp @@ -498,7 +498,7 @@ void TestXmlLabel::parser_3ReadFile() Model* model = XmlLabelParser::readFile( glabelsFileInfo.absoluteFilePath() ); QVERIFY( model ); - QCOMPARE( model->fileName(), glabelsFileInfo.filePath() ); + QCOMPARE( model->fileName(), glabelsFileInfo.canonicalFilePath() ); QCOMPARE( model->tmplate().brand(), QString( "Avery" ) ); QCOMPARE( model->tmplate().part(), QString( "5395" ) );