Skip to content
Snippets Groups Projects
Commit f28037d4 authored by Mikhail Svechnikov's avatar Mikhail Svechnikov
Browse files

check for empty projectDir

parent 970d56ec
No related branches found
No related tags found
1 merge request!1293GUI: simplify save/load machinery
...@@ -90,8 +90,11 @@ bool DataItem::containsNonXMLData() const ...@@ -90,8 +90,11 @@ bool DataItem::containsNonXMLData() const
return static_cast<bool>(m_datafield); return static_cast<bool>(m_datafield);
} }
QString DataItem::loadDatafield(const QString& projectDir, MessageService* messageService) QString DataItem::loadDatafield(MessageService* messageService, const QString& projectDir)
{ {
if (projectDir.isEmpty())
return {};
ASSERT(messageService); ASSERT(messageService);
const QString filename = fileName(projectDir); const QString filename = fileName(projectDir);
try { try {
...@@ -123,7 +126,7 @@ bool DataItem::saveDatafield(const QString& projectDir) ...@@ -123,7 +126,7 @@ bool DataItem::saveDatafield(const QString& projectDir)
void DataItem::saveDatafieldInBackground(const QString &projectDir) void DataItem::saveDatafieldInBackground(const QString &projectDir)
{ {
if (!containsNonXMLData() || !isModifiedSinceLastSave()) if (!containsNonXMLData() || !isModifiedSinceLastSave() || projectDir.isEmpty())
return; return;
std::unique_lock<std::mutex> lock(m_update_data_mutex); std::unique_lock<std::mutex> lock(m_update_data_mutex);
......
...@@ -56,9 +56,9 @@ public: ...@@ -56,9 +56,9 @@ public:
void setFileName(const QString& filename); void setFileName(const QString& filename);
QDateTime lastModified() const override; QDateTime lastModified() const override;
bool containsNonXMLData() const override; bool containsNonXMLData() const override;
QString loadDatafield(const QString& projectDir, MessageService* messageService) override; QString loadDatafield(MessageService* messageService, const QString& projectDir = "") override;
bool saveDatafield(const QString& projectDir) override; bool saveDatafield(const QString& projectDir) override;
void saveDatafieldInBackground(const QString& projectDir); void saveDatafieldInBackground(const QString& projectDir = "");
void setLastModified(const QDateTime& dtime); void setLastModified(const QDateTime& dtime);
......
...@@ -423,13 +423,13 @@ QString RealItem::readFrom(QXmlStreamReader* r, const QString& projectDir, ...@@ -423,13 +423,13 @@ QString RealItem::readFrom(QXmlStreamReader* r, const QString& projectDir,
// data // data
} else if (tag == Tag::Data) { } else if (tag == Tag::Data) {
m_dataItem.reset(readItemToEnd<DataItem>(r, this, tag)); m_dataItem.reset(readItemToEnd<DataItem>(r, this, tag));
dataError = m_dataItem->loadDatafield(projectDir, messageService); dataError = m_dataItem->loadDatafield(messageService, projectDir);
XML::gotoEndElementOfTag(r, tag); XML::gotoEndElementOfTag(r, tag);
// native data // native data
} else if (tag == Tag::NativeData) { } else if (tag == Tag::NativeData) {
m_nativeDataItem.reset(readItemToEnd<DataItem>(r, this, tag)); m_nativeDataItem.reset(readItemToEnd<DataItem>(r, this, tag));
nativeDataError == m_nativeDataItem->loadDatafield(projectDir, messageService); nativeDataError == m_nativeDataItem->loadDatafield(messageService, projectDir);
XML::gotoEndElementOfTag(r, tag); XML::gotoEndElementOfTag(r, tag);
// native data units // native data units
......
...@@ -628,7 +628,7 @@ void JobItem::readFrom(QXmlStreamReader* r, const QString& projectDir, ...@@ -628,7 +628,7 @@ void JobItem::readFrom(QXmlStreamReader* r, const QString& projectDir,
// simulated data // simulated data
} else if (tag == Tag::SimulatedData) { } else if (tag == Tag::SimulatedData) {
m_simulatedDataItem.reset(readItemToEnd<DataItem>(r, this, Tag::SimulatedData)); m_simulatedDataItem.reset(readItemToEnd<DataItem>(r, this, Tag::SimulatedData));
simError = m_simulatedDataItem->loadDatafield(projectDir, messageService); simError = m_simulatedDataItem->loadDatafield(messageService, projectDir);
XML::gotoEndElementOfTag(r, tag); XML::gotoEndElementOfTag(r, tag);
// fit suite // fit suite
......
...@@ -82,7 +82,7 @@ void DatafieldIOService::loadDataFiles(const QString& projectDir, MessageService ...@@ -82,7 +82,7 @@ void DatafieldIOService::loadDataFiles(const QString& projectDir, MessageService
DatafieldDirHistory newHistory; DatafieldDirHistory newHistory;
for (SaveLoadInterface* item : dataInterfaces()) { for (SaveLoadInterface* item : dataInterfaces()) {
try { try {
item->loadDatafield(projectDir, messageService); item->loadDatafield(messageService, projectDir);
newHistory.markAsSaved(item); newHistory.markAsSaved(item);
// handling crash of GUI during job run and non-existing file // handling crash of GUI during job run and non-existing file
if (auto* jobItem = parentJobItem(item)) { if (auto* jobItem = parentJobItem(item)) {
......
...@@ -29,7 +29,7 @@ public: ...@@ -29,7 +29,7 @@ public:
virtual ~SaveLoadInterface() = default; virtual ~SaveLoadInterface() = default;
//! Loads non-XML data from _projectDir_ and returns success flag. //! Loads non-XML data from _projectDir_ and returns success flag.
virtual QString loadDatafield(const QString& projectDir, MessageService* messageService) = 0; virtual QString loadDatafield(MessageService* messageService, const QString& projectDir = "") = 0;
//! Saves non-XML data in _projectDir_ and returns success flag. //! Saves non-XML data in _projectDir_ and returns success flag.
virtual bool saveDatafield(const QString& projectDir) = 0; virtual bool saveDatafield(const QString& projectDir) = 0;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment