project: implemented autorecovery core

Not done yet, but nearly.
This commit is contained in:
itsmattkc
2021-04-01 13:10:43 +11:00
parent 6a841bde82
commit 0ee98a47ea
14 changed files with 504 additions and 56 deletions
+6 -4
View File
@@ -37,8 +37,10 @@ ProjectSaveTask::ProjectSaveTask(Project *project) :
bool ProjectSaveTask::Run()
{
QString using_filename = override_filename_.isEmpty() ? project_->filename() : override_filename_;
// File to temporarily save to (ensures we can't half-write the user's main file and crash)
QString temp_save = FileFunctions::GetSafeTemporaryFilename(project_->filename());
QString temp_save = FileFunctions::GetSafeTemporaryFilename(using_filename);
QFile project_file(temp_save);
@@ -54,7 +56,7 @@ bool ProjectSaveTask::Run()
// Allows easy integer math for checking project versions.
writer.writeTextElement(QStringLiteral("version"), QString::number(Core::kProjectVersion));
writer.writeTextElement("url", project_->filename());
writer.writeTextElement("url", using_filename);
writer.writeStartElement(QStringLiteral("project"));
@@ -74,11 +76,11 @@ bool ProjectSaveTask::Run()
}
// Save was successful, we can now rewrite the original file
if (FileFunctions::RenameFileAllowOverwrite(temp_save, project_->filename())) {
if (FileFunctions::RenameFileAllowOverwrite(temp_save, using_filename)) {
return true;
} else {
SetError(tr("Failed to overwrite \"%1\". Project has been saved as \"%2\" instead.")
.arg(project_->filename(), temp_save));
.arg(using_filename, temp_save));
return false;
}
} else {