From b3cab52db8df7fab33d68ffbacb119cdf9eb3a42 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Thu, 26 Aug 2021 11:17:22 +0200 Subject: [PATCH] LIB: Fix the save and load functions for vivy documents --- src/Lib/Document/VivyDocument.cc | 18 +++++++++++------- src/UI/MainWindow.cc | 3 +-- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/Lib/Document/VivyDocument.cc b/src/Lib/Document/VivyDocument.cc index d907d412..e525db39 100644 --- a/src/Lib/Document/VivyDocument.cc +++ b/src/Lib/Document/VivyDocument.cc @@ -79,10 +79,13 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs if (json[KeyName].toString() != self->documentName) throw std::runtime_error("The document was edited outside of Vivy"); - if (QJsonValue audio = json[KeySubDocuments][KeySubAudio]; !audio.isNull()) - self->loadSubDocument(audio.toString(), Capabilities::AudioAble); - if (QJsonValue video = json[KeySubDocuments][KeySubVideo]; !video.isNull()) - self->loadSubDocument(video.toString(), Capabilities::VideoAble); + if (QJsonValue audio = json[KeySubDocuments][KeySubAudio]; + !audio.isNull() && !self->loadSubDocument(audio.toString(), Capabilities::AudioAble)) + throw std::runtime_error("Failed to load audio sub document"); + + if (QJsonValue video = json[KeySubDocuments][KeySubVideo]; + !video.isNull() && !self->loadSubDocument(video.toString(), Capabilities::VideoAble)) + throw std::runtime_error("Failed to load video sub document"); if (QJsonValue internalAssSource = json[KeySubDocuments][KeyInternalAssSource]; !internalAssSource.isNull() && internalAssSource.toBool()) { @@ -90,7 +93,8 @@ VivyDocument::loadSaveJsonDocumentFile_ALPHA(VivyDocument *const self, const QJs throw std::runtime_error("The internal ASS feature is not supported for now"); } else if (QJsonValue ass = json[KeySubDocuments][KeySubAss]; !ass.isNull()) { // ASS in its own ASS file - self->loadSubDocument(ass.toString(), Capabilities::AssAble); + if (!self->loadSubDocument(ass.toString(), Capabilities::AssAble)) + throw std::runtime_error("Failed to load ASS sub document"); } } @@ -130,7 +134,7 @@ VivyDocument::getSaveJsonDocumentFile() const subDocumentJson.insert(KeySubAudio, audioDocument->getFilePath()); if (documentType & Capabilities::VideoAble) - subDocumentJson.insert(KeySubAudio, videoDocument->getFilePath()); + subDocumentJson.insert(KeySubVideo, videoDocument->getFilePath()); if (documentType & Capabilities::AssAble) { // ASS is inside Vivy document @@ -141,7 +145,7 @@ VivyDocument::getSaveJsonDocumentFile() const // ASS is ints own ASS file else - subDocumentJson.insert(KeySubAudio, assDocument->getFilePath()); + subDocumentJson.insert(KeySubAss, assDocument->getFilePath()); } json.insert(KeySubDocuments, subDocumentJson); diff --git a/src/UI/MainWindow.cc b/src/UI/MainWindow.cc index 7430255d..7194b30f 100644 --- a/src/UI/MainWindow.cc +++ b/src/UI/MainWindow.cc @@ -356,8 +356,7 @@ MainWindow::openDocument() noexcept // Handle the different types here try { - if ((fileType == Utils::DocumentType::Video) || (fileType == Utils::DocumentType::Vivy) || - (fileType == Utils::DocumentType::Audio) || (fileType == Utils::DocumentType::ASS)) + if (fileType == Utils::DocumentType::Vivy) addTab(new VivyDocumentView(vivyApp->documentStore.loadDocument(filename), documents)); else if (fileType == Utils::DocumentType::VivyScript) { -- GitLab