From 44d0ac21c2c47bc14c4a09ac1b27ad7168b0f383 Mon Sep 17 00:00:00 2001 From: Martchus Date: Mon, 7 Aug 2023 12:46:04 +0200 Subject: [PATCH] Improve logging changes when applying changes in JavaScript * Don't log non-printable characters * Make it clear when an explicitly overridden field value is identical to the initial value --- cli/mediafileinfoobject.cpp | 24 +++++++++++++++++++----- cli/mediafileinfoobject.h | 1 + 2 files changed, 20 insertions(+), 5 deletions(-) diff --git a/cli/mediafileinfoobject.cpp b/cli/mediafileinfoobject.cpp index 70bd816..22e2ae6 100644 --- a/cli/mediafileinfoobject.cpp +++ b/cli/mediafileinfoobject.cpp @@ -373,6 +373,17 @@ QString TagObject::propertyNameForField(TagParser::KnownField field) return reverseMapping.value(field, QString()); } +std::string TagObject::printJsValue(const QJSValue &value) +{ + const auto str = value.toString(); + for (const auto c : str) { + if (!c.isPrint()) { + return "[binary]"; + } + } + return str.toStdString(); +} + QJSValue &TagObject::fields() { if (!m_fields.isUndefined()) { @@ -446,11 +457,14 @@ void TagObject::applyChanges() m_diag.emplace_back(TagParser::DiagLevel::Debug, value.isNull() ? CppUtilities::argsToString(" - delete ", propertyName.toStdString(), '[', i, ']') - : (tagValueObj->initialContent().isUndefined() ? CppUtilities::argsToString( - " - set ", propertyName.toStdString(), '[', i, "] to '", tagValueObj->content().toString().toStdString(), '\'') - : CppUtilities::argsToString(" - change ", propertyName.toStdString(), '[', i, - "] from '", tagValueObj->initialContent().toString().toStdString(), "' to '", - tagValueObj->content().toString().toStdString(), '\'')), + : (tagValueObj->initialContent().isUndefined() + ? CppUtilities::argsToString( + " - set ", propertyName.toStdString(), '[', i, "] to '", printJsValue(tagValueObj->content()), '\'') + : ((tagValueObj->content().equals(tagValueObj->initialContent())) + ? CppUtilities::argsToString(" - set ", propertyName.toStdString(), '[', i, "] to '", + printJsValue(tagValueObj->content()), "\' (no change)") + : CppUtilities::argsToString(" - change ", propertyName.toStdString(), '[', i, "] from '", + printJsValue(tagValueObj->initialContent()), "' to '", printJsValue(tagValueObj->content()), '\''))), std::string()); } m_tag.setValues(field, values); diff --git a/cli/mediafileinfoobject.h b/cli/mediafileinfoobject.h index 437c7b8..9d590ea 100644 --- a/cli/mediafileinfoobject.h +++ b/cli/mediafileinfoobject.h @@ -164,6 +164,7 @@ public Q_SLOTS: private: static QString propertyNameForField(TagParser::KnownField field); + std::string printJsValue(const QJSValue &value); TagParser::Tag &m_tag; TagParser::Diagnostics &m_diag;