From 9fbb37592415ea278f3a1ebe73a2cda0b8952395 Mon Sep 17 00:00:00 2001 From: Martchus Date: Thu, 4 Feb 2021 23:22:43 +0100 Subject: [PATCH] Adapt to changes in tagparser (without making actually use of the new API) --- cli/attachmentinfo.cpp | 4 ++- cli/mainfeatures.cpp | 45 +++++++++++++++++------------ gui/attachmentsedit.cpp | 4 ++- gui/picturepreviewselection.cpp | 7 +++-- gui/tageditorwidget.cpp | 8 ++--- renamingutility/tageditorobject.cpp | 4 ++- tests/cli.cpp | 6 ++-- 7 files changed, 47 insertions(+), 31 deletions(-) diff --git a/cli/attachmentinfo.cpp b/cli/attachmentinfo.cpp index be8f9cd..43723c4 100644 --- a/cli/attachmentinfo.cpp +++ b/cli/attachmentinfo.cpp @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -118,7 +119,8 @@ void AttachmentInfo::apply(AbstractAttachment *attachment, TagParser::Diagnostic attachment->setId(id); } if (path) { - attachment->setFile(path, diag); + AbortableProgressFeedback progress; + attachment->setFile(path, diag, progress); } if (name) { attachment->setName(name); diff --git a/cli/mainfeatures.cpp b/cli/mainfeatures.cpp index 98b52bc..1cc6447 100644 --- a/cli/mainfeatures.cpp +++ b/cli/mainfeatures.cpp @@ -107,7 +107,8 @@ void generateFileInfo(const ArgumentOccurrence &, const Argument &inputFileArg, inputFileInfo.setForceFullParse(validateArg.isPresent()); inputFileInfo.open(true); Diagnostics diag; - inputFileInfo.parseEverything(diag); + AbortableProgressFeedback progress; // FIXME: actually use the progress object + inputFileInfo.parseEverything(diag, progress); // generate and save info Diagnostics diagReparsing; @@ -148,12 +149,13 @@ void displayFileInfo(const ArgumentOccurrence &, const Argument &filesArg, const MediaFileInfo fileInfo; for (const char *file : filesArg.values()) { Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object try { // parse tags fileInfo.setPath(file); fileInfo.open(true); - fileInfo.parseContainerFormat(diag); - fileInfo.parseEverything(diag); + fileInfo.parseContainerFormat(diag, progress); + fileInfo.parseEverything(diag, progress); // print general/container-related info cout << "Technical information for \"" << file << "\":\n"; @@ -331,12 +333,13 @@ void displayTagInfo(const Argument &fieldsArg, const Argument &showUnsupportedAr MediaFileInfo fileInfo; for (const char *file : filesArg.values()) { Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object try { // parse tags fileInfo.setPath(file); fileInfo.open(true); - fileInfo.parseContainerFormat(diag); - fileInfo.parseTags(diag); + fileInfo.parseContainerFormat(diag, progress); + fileInfo.parseTags(diag, progress); cout << "Tag information for \"" << file << "\":\n"; const auto tags = fileInfo.tags(); if (tags.empty()) { @@ -503,14 +506,15 @@ void setTagInfo(const SetTagInfoArgs &args) static string context("setting tags"); for (const char *file : args.filesArg.values()) { Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object try { // parse tags and tracks (tracks are relevent because track meta-data such as language can be changed as well) cout << TextAttribute::Bold << "Setting tag information for \"" << file << "\" ..." << Phrases::EndFlush; fileInfo.setPath(file); - fileInfo.parseContainerFormat(diag); - fileInfo.parseTags(diag); - fileInfo.parseTracks(diag); - fileInfo.parseAttachments(diag); + fileInfo.parseContainerFormat(diag, progress); + fileInfo.parseTags(diag, progress); + fileInfo.parseTracks(diag, progress); + fileInfo.parseAttachments(diag, progress); vector tags; // remove tags with the specified targets @@ -616,8 +620,9 @@ void setTagInfo(const SetTagInfoArgs &args) // assume the file refers to a picture MediaFileInfo fileInfo(relevantDenotedValue->value); Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object fileInfo.open(true); - fileInfo.parseContainerFormat(diag); + fileInfo.parseContainerFormat(diag, progress); auto buff = make_unique(fileInfo.size()); fileInfo.stream().seekg(static_cast(fileInfo.containerOffset())); fileInfo.stream().read(buff.get(), static_cast(fileInfo.size())); @@ -699,7 +704,7 @@ void setTagInfo(const SetTagInfoArgs &args) if (args.addAttachmentArg.isPresent() || args.updateAttachmentArg.isPresent() || args.removeAttachmentArg.isPresent() || args.removeExistingAttachmentsArg.isPresent()) { static const string context("setting attachments"); - fileInfo.parseAttachments(diag); + fileInfo.parseAttachments(diag, progress); if (fileInfo.attachmentsParsingStatus() == ParsingStatus::Ok && container) { // ignore all existing attachments if argument is specified if (args.removeExistingAttachmentsArg.isPresent()) { @@ -800,6 +805,7 @@ void extractField( MediaFileInfo inputFileInfo; for (const char *file : inputFilesArg.values()) { Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object try { // setup media file info inputFileInfo.setPath(file); @@ -809,8 +815,8 @@ void extractField( if (!fieldDenotations.empty()) { // extract tag field (outputFileArg.isPresent() ? cout : cerr) << "Extracting field " << fieldArg.values().front() << " of \"" << file << "\" ..." << endl; - inputFileInfo.parseContainerFormat(diag); - inputFileInfo.parseTags(diag); + inputFileInfo.parseContainerFormat(diag, progress); + inputFileInfo.parseTags(diag, progress); auto tags = inputFileInfo.tags(); vector> values; // iterate through all tags @@ -873,8 +879,8 @@ void extractField( } logStream << " of \"" << file << "\" ..." << endl; - inputFileInfo.parseContainerFormat(diag); - inputFileInfo.parseAttachments(diag); + inputFileInfo.parseContainerFormat(diag, progress); + inputFileInfo.parseAttachments(diag, progress); vector> attachments; // iterate through all attachments for (const AbstractAttachment *attachment : inputFileInfo.attachments()) { @@ -938,15 +944,16 @@ void exportToJson(const ArgumentOccurrence &, const Argument &filesArg, const Ar MediaFileInfo fileInfo; // gather tags for each file + Diagnostics diag; // FIXME: actually use diag object + AbortableProgressFeedback progress; // FIXME: actually use the progress object for (const char *file : filesArg.values()) { - Diagnostics diag; try { // parse tags fileInfo.setPath(file); fileInfo.open(true); - fileInfo.parseContainerFormat(diag); - fileInfo.parseTags(diag); - fileInfo.parseTracks(diag); + fileInfo.parseContainerFormat(diag, progress); + fileInfo.parseTags(diag, progress); + fileInfo.parseTracks(diag, progress); jsonData.emplace_back(fileInfo, document.GetAllocator()); } catch (const TagParser::Failure &) { cerr << Phrases::Error << "A parsing failure occured when reading the file \"" << file << "\"." << Phrases::EndFlush; diff --git a/gui/attachmentsedit.cpp b/gui/attachmentsedit.cpp index 0b80948..48f3b80 100644 --- a/gui/attachmentsedit.cpp +++ b/gui/attachmentsedit.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include @@ -99,7 +100,8 @@ void AttachmentsEdit::addFile(const QString &path) auto *const attachment = fileInfo()->container()->createAttachment(); attachment->setIgnored(true); Diagnostics diag; - attachment->setFile(toNativeFileName(path).data(), diag); + AbortableProgressFeedback progress; // FIXME: actually use the progress object + attachment->setFile(toNativeFileName(path).data(), diag, progress); // TODO: show diag messages m_addedAttachments << attachment; m_model->addAttachment(-1, attachment, true, path); diff --git a/gui/picturepreviewselection.cpp b/gui/picturepreviewselection.cpp index 14b2e10..400aa7e 100644 --- a/gui/picturepreviewselection.cpp +++ b/gui/picturepreviewselection.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -416,10 +417,10 @@ void PicturePreviewSelection::addOfSelectedType(const QString &path) TagValue &selectedCover = m_values[m_currentTypeIndex]; try { MediaFileInfo fileInfo(toNativeFileName(path).constData()); - Diagnostics diag; + Diagnostics diag; // FIXME: show diagnostic messages + AbortableProgressFeedback progress; // FIXME: actually use the progress object fileInfo.open(true); - fileInfo.parseContainerFormat(diag); - // TODO: show diagnostic messages + fileInfo.parseContainerFormat(diag, progress); const auto detectedMimeType = fileInfo.mimeType(); auto mimeType = QString::fromUtf8(detectedMimeType.data(), detectedMimeType.size()); diff --git a/gui/tageditorwidget.cpp b/gui/tageditorwidget.cpp index d1dc79f..8a298fc 100644 --- a/gui/tageditorwidget.cpp +++ b/gui/tageditorwidget.cpp @@ -832,13 +832,14 @@ bool TagEditorWidget::startParsing(const QString &path, bool forceRefresh) // write diagnostics to m_diagReparsing if making results are avalable m_makingResultsAvailable &= sameFile; Diagnostics &diag = m_makingResultsAvailable ? m_diagReparsing : m_diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object // clear diagnostics diag.clear(); m_diagReparsing.clear(); // show filename m_ui->fileNameLabel->setText(m_fileName); // define function to parse the file - const auto startThread = [this, &diag] { + const auto startThread = [this, &diag, &progress] { char result; try { // try to open with write access @@ -849,7 +850,7 @@ bool TagEditorWidget::startParsing(const QString &path, bool forceRefresh) m_fileInfo.reopen(true); } m_fileInfo.setForceFullParse(Settings::values().editor.forceFullParse); - m_fileInfo.parseEverything(diag); + m_fileInfo.parseEverything(diag, progress); result = ParsingSuccessful; } catch (const Failure &) { // the file has been opened; parsing notifications will be shown in the info box @@ -975,8 +976,7 @@ void TagEditorWidget::showFile(char result) if (diagLevel >= TagParser::DiagLevel::Critical) { m_ui->parsingNotificationWidget->setNotificationType(NotificationType::Critical); m_ui->parsingNotificationWidget->appendLine(tr("Errors occured.")); - } else if (diagLevel == TagParser::DiagLevel::Warning || m_fileInfo.isReadOnly() || !m_fileInfo.areTagsSupported() - || multipleSegmentsNotTested) { + } else if (diagLevel == TagParser::DiagLevel::Warning || m_fileInfo.isReadOnly() || !m_fileInfo.areTagsSupported() || multipleSegmentsNotTested) { m_ui->parsingNotificationWidget->setNotificationType(NotificationType::Warning); if (diagLevel == TagParser::DiagLevel::Warning) { m_ui->parsingNotificationWidget->appendLine(tr("There are warnings.")); diff --git a/renamingutility/tageditorobject.cpp b/renamingutility/tageditorobject.cpp index ca2c3fd..b4275eb 100644 --- a/renamingutility/tageditorobject.cpp +++ b/renamingutility/tageditorobject.cpp @@ -9,6 +9,7 @@ #include #include #include +#include #include #include @@ -143,6 +144,7 @@ const QString &TagEditorObject::newRelativeDirectory() const TAGEDITOR_JS_VALUE TagEditorObject::parseFileInfo(const QString &fileName) { Diagnostics diag; + AbortableProgressFeedback progress; // FIXME: actually use the progress object MediaFileInfo fileInfo(toNativeFileName(fileName).data()); // add basic file information @@ -160,7 +162,7 @@ TAGEDITOR_JS_VALUE TagEditorObject::parseFileInfo(const QString &fileName) // parse further file information bool criticalParseingErrorOccured = false, ioErrorOccured = false; try { - fileInfo.parseEverything(diag); + fileInfo.parseEverything(diag, progress); } catch (const Failure &) { // parsing notifications will be addded anyways criticalParseingErrorOccured = true; diff --git a/tests/cli.cpp b/tests/cli.cpp index 96b1266..315f957 100644 --- a/tests/cli.cpp +++ b/tests/cli.cpp @@ -7,6 +7,7 @@ #include #include +#include namespace CppUtilities { @@ -900,9 +901,10 @@ void CliTests::testExtraction() const char *const args1[] = { "tageditor", "extract", "cover", "-f", mp4File1.data(), "-o", "/tmp/extracted.jpeg", nullptr }; TESTUTILS_ASSERT_EXEC(args1); Diagnostics diag; + AbortableProgressFeedback progress; MediaFileInfo extractedInfo("/tmp/extracted.jpeg"); extractedInfo.open(true); - extractedInfo.parseContainerFormat(diag); + extractedInfo.parseContainerFormat(diag, progress); CPPUNIT_ASSERT_EQUAL(static_cast(22771), extractedInfo.size()); CPPUNIT_ASSERT(ContainerFormat::Jpeg == extractedInfo.containerFormat()); extractedInfo.invalidate(); @@ -915,7 +917,7 @@ void CliTests::testExtraction() CPPUNIT_ASSERT_EQUAL(0, remove("/tmp/extracted.jpeg")); TESTUTILS_ASSERT_EXEC(args3); extractedInfo.open(true); - extractedInfo.parseContainerFormat(diag); + extractedInfo.parseContainerFormat(diag, progress); CPPUNIT_ASSERT_EQUAL(static_cast(22771), extractedInfo.size()); CPPUNIT_ASSERT(ContainerFormat::Jpeg == extractedInfo.containerFormat()); CPPUNIT_ASSERT_EQUAL(0, remove("/tmp/extracted.jpeg"));