From a83a5b58975c7dbded127c4ddc50c783409243b9 Mon Sep 17 00:00:00 2001
From: Maik Qualmann <metzpinguin@gmail.com>
Date: Tue, 13 Jul 2021 20:49:50 +0200
Subject: [PATCH 021/639] last step fix Xmp page in Metadata Editor Tool
CCBUGS: 439785 FIXED-IN: 7.4.0
---
NEWS | 3 +-
.../metadataedit/xmp/xmpcategories.cpp | 29 ++--
.../metadata/metadataedit/xmp/xmpcategories.h | 11 +-
.../metadata/metadataedit/xmp/xmpcontent.cpp | 48 +++----
.../metadata/metadataedit/xmp/xmpcontent.h | 11 +-
.../metadata/metadataedit/xmp/xmpcredits.cpp | 134 ++++++++----------
.../metadata/metadataedit/xmp/xmpcredits.h | 11 +-
.../metadataedit/xmp/xmpeditwidget.cpp | 47 +++---
.../metadata/metadataedit/xmp/xmpkeywords.cpp | 23 +--
.../metadata/metadataedit/xmp/xmpkeywords.h | 11 +-
.../metadata/metadataedit/xmp/xmporigin.cpp | 114 +++++++--------
.../metadata/metadataedit/xmp/xmporigin.h | 13 +-
.../metadataedit/xmp/xmpproperties.cpp | 49 +++----
.../metadata/metadataedit/xmp/xmpproperties.h | 11 +-
.../metadata/metadataedit/xmp/xmpstatus.cpp | 37 ++---
.../metadata/metadataedit/xmp/xmpstatus.h | 11 +-
.../metadata/metadataedit/xmp/xmpsubjects.cpp | 16 +--
.../metadata/metadataedit/xmp/xmpsubjects.h | 5 +-
18 files changed, 264 insertions(+), 320 deletions(-)
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.cpp
index d299970a02..737cd4c5ab 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.cpp
@@ -37,12 +37,6 @@
#include <klocalizedstring.h>
-// Local includes
-
-#include "dmetadata.h"
-
-using namespace Digikam;
-
namespace DigikamGenericMetadataEditPlugin
{
@@ -261,18 +255,17 @@ void XMPCategories::slotAddCategory()
}
}
-void XMPCategories::readMetadata(QByteArray& xmpData)
+void XMPCategories::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
+
QString data;
// In first we handle all sub-categories.
d->subCategoriesBox->clear();
d->subCategoriesCheck->setChecked(false);
- d->oldSubCategories = meta->getXmpSubCategories();
+ d->oldSubCategories = meta.getXmpSubCategories();
if (!d->oldSubCategories.isEmpty())
{
@@ -284,7 +277,7 @@ void XMPCategories::readMetadata(QByteArray& xmpData)
d->categoryEdit->clear();
d->categoryCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Category", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Category", false);
if (!data.isNull())
{
@@ -302,16 +295,14 @@ void XMPCategories::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPCategories::applyMetadata(QByteArray& xmpData)
+void XMPCategories::applyMetadata(DMetadata& meta)
{
QStringList newCategories;
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
if (d->categoryCheck->isChecked())
- meta->setXmpTagString("Xmp.photoshop.Category", d->categoryEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.Category", d->categoryEdit->text());
else
- meta->removeXmpTag("Xmp.photoshop.Category");
+ meta.removeXmpTag("Xmp.photoshop.Category");
for (int i = 0 ; i < d->subCategoriesBox->count(); ++i)
{
@@ -320,13 +311,11 @@ void XMPCategories::applyMetadata(QByteArray& xmpData)
}
// We remove in first all existing sub-categories.
- meta->removeXmpTag("Xmp.photoshop.SupplementalCategories");
+ meta.removeXmpTag("Xmp.photoshop.SupplementalCategories");
// And add new list if necessary.
if (d->categoryCheck->isChecked() && d->subCategoriesCheck->isChecked())
- meta->setXmpSubCategories(newCategories);
-
- xmpData = meta->getXmp();
+ meta.setXmpSubCategories(newCategories);
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.h
index bb626121fd..09cfcd6188 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcategories.h
@@ -27,7 +27,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -41,8 +46,8 @@ public:
explicit XMPCategories(QWidget* const parent);
~XMPCategories() override;
- void applyMetadata(QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
Q_SIGNALS:
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.cpp
index 488adf014c..f78ad0bfe4 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.cpp
@@ -40,11 +40,8 @@
#include "dlayoutbox.h"
#include "altlangstringedit.h"
-#include "dmetadata.h"
#include "dexpanderbox.h"
-using namespace Digikam;
-
namespace DigikamGenericMetadataEditPlugin
{
@@ -226,18 +223,16 @@ void XMPContent::setCheckedSyncEXIFCopyright(bool c)
d->syncEXIFCopyrightCheck->setChecked(c);
}
-void XMPContent::readMetadata(QByteArray& xmpData)
+void XMPContent::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
DMetadata::AltLangMap map;
QString data;
d->headlineEdit->clear();
d->headlineCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Headline", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Headline", false);
if (!data.isNull())
{
@@ -249,7 +244,7 @@ void XMPContent::readMetadata(QByteArray& xmpData)
d->captionEdit->setValues(map);
d->captionEdit->setValid(false);
- map = meta->getXmpTagStringListLangAlt("Xmp.dc.description", false);
+ map = meta.getXmpTagStringListLangAlt("Xmp.dc.description", false);
if (!map.isEmpty())
{
@@ -259,7 +254,7 @@ void XMPContent::readMetadata(QByteArray& xmpData)
d->writerEdit->clear();
d->writerCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.CaptionWriter", false);
+ data = meta.getXmpTagString("Xmp.photoshop.CaptionWriter", false);
if (!data.isNull())
{
@@ -272,7 +267,7 @@ void XMPContent::readMetadata(QByteArray& xmpData)
map.clear();
d->copyrightEdit->setValues(map);
d->copyrightEdit->setValid(false);
- map = meta->getXmpTagStringListLangAlt("Xmp.dc.rights", false);
+ map = meta.getXmpTagStringListLangAlt("Xmp.dc.rights", false);
if (!map.isEmpty())
{
@@ -283,68 +278,61 @@ void XMPContent::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPContent::applyMetadata(QByteArray& exifData, QByteArray& xmpData)
+void XMPContent::applyMetadata(DMetadata& meta)
{
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setExif(exifData);
- meta->setXmp(xmpData);
-
if (d->headlineCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.Headline", d->headlineEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.Headline", d->headlineEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.Headline");
+ meta.removeXmpTag("Xmp.photoshop.Headline");
}
DMetadata::AltLangMap oldAltLangMap, newAltLangMap;
if (d->captionEdit->getValues(oldAltLangMap, newAltLangMap))
{
- meta->setXmpTagStringListLangAlt("Xmp.dc.description", newAltLangMap);
+ meta.setXmpTagStringListLangAlt("Xmp.dc.description", newAltLangMap);
if (syncEXIFCommentIsChecked())
{
- meta->setExifComment(getXMPCaption());
+ meta.setExifComment(getXMPCaption());
}
if (syncJFIFCommentIsChecked())
{
- meta->setComments(getXMPCaption().toUtf8());
+ meta.setComments(getXMPCaption().toUtf8());
}
}
else if (d->captionEdit->isValid())
{
- meta->removeXmpTag("Xmp.dc.description");
+ meta.removeXmpTag("Xmp.dc.description");
}
if (d->writerCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.CaptionWriter", d->writerEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.CaptionWriter", d->writerEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.CaptionWriter");
+ meta.removeXmpTag("Xmp.photoshop.CaptionWriter");
}
if (d->copyrightEdit->getValues(oldAltLangMap, newAltLangMap))
{
- meta->setXmpTagStringListLangAlt("Xmp.dc.rights", newAltLangMap);
+ meta.setXmpTagStringListLangAlt("Xmp.dc.rights", newAltLangMap);
if (syncEXIFCopyrightIsChecked())
{
- meta->removeExifTag("Exif.Image.Copyright");
- meta->setExifTagString("Exif.Image.Copyright", getXMPCopyright());
+ meta.removeExifTag("Exif.Image.Copyright");
+ meta.setExifTagString("Exif.Image.Copyright", getXMPCopyright());
}
}
else if (d->copyrightEdit->isValid())
{
- meta->removeXmpTag("Xmp.dc.rights");
+ meta.removeXmpTag("Xmp.dc.rights");
}
-
- exifData = meta->getExifEncoded();
- xmpData = meta->getXmp();
}
void XMPContent::slotSyncCaptionOptionsEnabled(bool defaultLangAlt)
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.h
index 2338d34567..f8e1fca246 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcontent.h
@@ -26,7 +26,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -40,8 +45,8 @@ public:
explicit XMPContent(QWidget* const parent);
~XMPContent() override;
- void applyMetadata(QByteArray& exifData, QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
bool syncJFIFCommentIsChecked() const;
bool syncEXIFCommentIsChecked() const;
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.cpp
index 7e8f269b4b..f739063eb7 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.cpp
@@ -40,9 +40,6 @@
// Local includes
#include "multistringsedit.h"
-#include "dmetadata.h"
-
-using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -338,20 +335,19 @@ QString XMPCredits::getXMPByLine() const
return (newv.join(QLatin1Char(';')));
}
-void XMPCredits::readMetadata(QByteArray& xmpData)
+void XMPCredits::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
+
QString data;
QStringList list;
- list = meta->getXmpTagStringSeq("Xmp.dc.creator", false);
+ list = meta.getXmpTagStringSeq("Xmp.dc.creator", false);
d->creatorEdit->setValues(list);
d->creatorTitleEdit->clear();
d->creatorTitleCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.AuthorsPosition", false);
+ data = meta.getXmpTagString("Xmp.photoshop.AuthorsPosition", false);
if (!data.isNull())
{
@@ -365,10 +361,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->emailEdit->clear();
d->emailCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiEmailWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiEmailWork", false);
if (!data.isNull())
{
@@ -382,10 +378,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->urlEdit->clear();
d->urlCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiUrlWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiUrlWork", false);
if (!data.isNull())
{
@@ -399,10 +395,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->phoneEdit->clear();
d->phoneCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiTelWork", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiTelWork", false);
if (!data.isNull())
{
@@ -416,10 +412,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->addressEdit->clear();
d->addressCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiAdrExtadr", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiAdrExtadr", false);
if (!data.isNull())
{
@@ -433,10 +429,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->postalCodeEdit->clear();
d->postalCodeCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiAdrPcode", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiAdrPcode", false);
if (!data.isNull())
{
@@ -450,10 +446,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->cityEdit->clear();
d->cityCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiAdrCity", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiAdrCity", false);
if (!data.isNull())
{
@@ -467,10 +463,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->countryEdit->clear();
d->countryCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", false);
+ data = meta.getXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.iptc.CiAdrCtry", false);
+ data = meta.getXmpTagString("Xmp.iptc.CiAdrCtry", false);
if (!data.isNull())
{
@@ -484,7 +480,7 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->creditEdit->clear();
d->creditCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Credit", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Credit", false);
if (!data.isNull())
{
@@ -498,10 +494,10 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
d->sourceEdit->clear();
d->sourceCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Source", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Source", false);
if (data.isNull())
- data = meta->getXmpTagString("Xmp.dc.source", false);
+ data = meta.getXmpTagString("Xmp.dc.source", false);
if (!data.isNull())
{
@@ -514,140 +510,134 @@ void XMPCredits::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPCredits::applyMetadata(QByteArray& exifData, QByteArray& xmpData)
+void XMPCredits::applyMetadata(DMetadata& meta)
{
QStringList oldList, newList;
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setExif(exifData);
- meta->setXmp(xmpData);
if (d->creatorEdit->getValues(oldList, newList))
{
- meta->setXmpTagStringSeq("Xmp.dc.creator", newList);
+ meta.setXmpTagStringSeq("Xmp.dc.creator", newList);
if (syncEXIFArtistIsChecked())
{
- meta->removeExifTag("Exif.Image.Artist");
- meta->setExifTagString("Exif.Image.Artist", getXMPByLine());
+ meta.removeExifTag("Exif.Image.Artist");
+ meta.setExifTagString("Exif.Image.Artist", getXMPByLine());
}
}
else
{
- meta->removeXmpTag("Xmp.dc.creator");
+ meta.removeXmpTag("Xmp.dc.creator");
}
if (d->creatorTitleCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.AuthorsPosition", d->creatorTitleEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.AuthorsPosition", d->creatorTitleEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.AuthorsPosition");
+ meta.removeXmpTag("Xmp.photoshop.AuthorsPosition");
}
// --------------------------------------------------------
if (d->emailCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", d->emailEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiEmailWork");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", d->emailEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiEmailWork");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiEmailWork");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork");
+ meta.removeXmpTag("Xmp.iptc.CiEmailWork");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork");
}
if (d->urlCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", d->urlEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiUrlWork");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", d->urlEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiUrlWork");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiUrlWork");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork");
+ meta.removeXmpTag("Xmp.iptc.CiUrlWork");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork");
}
if (d->phoneCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", d->phoneEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiTelWork");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", d->phoneEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiTelWork");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiTelWork");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork");
+ meta.removeXmpTag("Xmp.iptc.CiTelWork");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork");
}
if (d->addressCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", d->addressEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiAdrExtadr");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", d->addressEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiAdrExtadr");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiAdrExtadr");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr");
+ meta.removeXmpTag("Xmp.iptc.CiAdrExtadr");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr");
}
if (d->postalCodeCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", d->postalCodeEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiAdrPcode");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", d->postalCodeEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiAdrPcode");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiAdrPcode");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode");
+ meta.removeXmpTag("Xmp.iptc.CiAdrPcode");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode");
}
if (d->cityCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", d->cityEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiAdrCity");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", d->cityEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiAdrCity");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiAdrCity");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity");
+ meta.removeXmpTag("Xmp.iptc.CiAdrCity");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity");
}
if (d->countryCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", d->countryEdit->text());
- meta->removeXmpTag("Xmp.iptc.CiAdrCtry");
+ meta.setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", d->countryEdit->text());
+ meta.removeXmpTag("Xmp.iptc.CiAdrCtry");
}
else
{
- meta->removeXmpTag("Xmp.iptc.CiAdrCtry");
- meta->removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry");
+ meta.removeXmpTag("Xmp.iptc.CiAdrCtry");
+ meta.removeXmpTag("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry");
}
// --------------------------------------------------------
if (d->creditCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.Credit", d->creditEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.Credit", d->creditEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.Credit");
+ meta.removeXmpTag("Xmp.photoshop.Credit");
}
if (d->sourceCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.Source", d->sourceEdit->text());
- meta->setXmpTagString("Xmp.dc.source", d->sourceEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.Source", d->sourceEdit->text());
+ meta.setXmpTagString("Xmp.dc.source", d->sourceEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.Source");
- meta->removeXmpTag("Xmp.dc.source");
+ meta.removeXmpTag("Xmp.photoshop.Source");
+ meta.removeXmpTag("Xmp.dc.source");
}
-
- exifData = meta->getExifEncoded();
- xmpData = meta->getXmp();
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.h
index 8c0f242009..2d26f627a9 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpcredits.h
@@ -26,7 +26,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -40,8 +45,8 @@ public:
explicit XMPCredits(QWidget* const parent);
~XMPCredits() override;
- void applyMetadata(QByteArray& exifData, QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
bool syncEXIFArtistIsChecked() const;
void setCheckedSyncEXIFArtist(bool c);
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpeditwidget.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpeditwidget.cpp
index 54e7f82e01..1b8a8fbf4c 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpeditwidget.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpeditwidget.cpp
@@ -86,9 +86,6 @@ public:
bool modified;
bool isReadOnly;
- QByteArray exifData;
- QByteArray xmpData;
-
DConfigDlgWdgItem* page_content;
DConfigDlgWdgItem* page_origin;
DConfigDlgWdgItem* page_subjects;
@@ -238,17 +235,14 @@ void XMPEditWidget::slotItemChanged()
QScopedPointer<DMetadata> meta(new DMetadata);
meta->load((*d->dlg->currentItem()).toLocalFile());
- d->exifData = meta->getExifEncoded();
- d->xmpData = meta->getXmp();
-
- d->contentPage->readMetadata(d->xmpData);
- d->originPage->readMetadata(d->xmpData);
- d->subjectsPage->readMetadata(d->xmpData);
- d->keywordsPage->readMetadata(d->xmpData);
- d->categoriesPage->readMetadata(d->xmpData);
- d->creditsPage->readMetadata(d->xmpData);
- d->statusPage->readMetadata(d->xmpData);
- d->propertiesPage->readMetadata(d->xmpData);
+ d->contentPage->readMetadata(*meta);
+ d->originPage->readMetadata(*meta);
+ d->subjectsPage->readMetadata(*meta);
+ d->keywordsPage->readMetadata(*meta);
+ d->categoriesPage->readMetadata(*meta);
+ d->creditsPage->readMetadata(*meta);
+ d->statusPage->readMetadata(*meta);
+ d->propertiesPage->readMetadata(*meta);
d->isReadOnly = (MetaEngineSettings::instance()->settings()
.metadataWritingMode == DMetadata::WRITE_TO_FILE_ONLY &&
@@ -273,21 +267,16 @@ void XMPEditWidget::apply()
QScopedPointer<DMetadata> meta(new DMetadata);
meta->load((*d->dlg->currentItem()).toLocalFile());
- d->exifData = meta->getExifEncoded();
- d->xmpData = meta->getXmp();
-
- d->contentPage->applyMetadata(d->exifData, d->xmpData);
- d->originPage->applyMetadata(d->exifData, d->xmpData);
- d->subjectsPage->applyMetadata(d->xmpData);
- d->keywordsPage->applyMetadata(d->xmpData);
- d->categoriesPage->applyMetadata(d->xmpData);
- d->creditsPage->applyMetadata(d->exifData, d->xmpData);
- d->statusPage->applyMetadata(d->xmpData);
- d->propertiesPage->applyMetadata(d->xmpData);
-
- meta->setExif(d->exifData);
- meta->setXmp(d->xmpData);
- meta->save((*d->dlg->currentItem()).toLocalFile());
+ d->contentPage->applyMetadata(*meta);
+ d->originPage->applyMetadata(*meta);
+ d->subjectsPage->applyMetadata(*meta);
+ d->keywordsPage->applyMetadata(*meta);
+ d->categoriesPage->applyMetadata(*meta);
+ d->creditsPage->applyMetadata(*meta);
+ d->statusPage->applyMetadata(*meta);
+ d->propertiesPage->applyMetadata(*meta);
+
+ meta->applyChanges();
d->modified = false;
}
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.cpp
index 8e0da41bbe..ef15394468 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.cpp
@@ -36,12 +36,6 @@
#include <klocalizedstring.h>
-// Local includes
-
-#include "dmetadata.h"
-
-using namespace Digikam;
-
namespace DigikamGenericMetadataEditPlugin
{
@@ -224,12 +218,11 @@ void XMPKeywords::slotAddKeyword()
}
}
-void XMPKeywords::readMetadata(QByteArray& xmpData)
+void XMPKeywords::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
- d->oldKeywords = meta->getXmpKeywords();
+
+ d->oldKeywords = meta.getXmpKeywords();
d->keywordsBox->clear();
d->keywordsCheck->setChecked(false);
@@ -248,10 +241,8 @@ void XMPKeywords::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPKeywords::applyMetadata(QByteArray& xmpData)
+void XMPKeywords::applyMetadata(DMetadata& meta)
{
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
QStringList newKeywords;
for (int i = 0 ; i < d->keywordsBox->count(); ++i)
@@ -261,13 +252,11 @@ void XMPKeywords::applyMetadata(QByteArray& xmpData)
}
// We remove in first all existing keywords.
- meta->removeXmpTag("Xmp.dc.subject");
+ meta.removeXmpTag("Xmp.dc.subject");
// And add new list if necessary.
if (d->keywordsCheck->isChecked())
- meta->setXmpKeywords(newKeywords);
-
- xmpData = meta->getXmp();
+ meta.setXmpKeywords(newKeywords);
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.h
index 5da579a255..a29518aa63 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpkeywords.h
@@ -26,7 +26,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -40,8 +45,8 @@ public:
explicit XMPKeywords(QWidget* const parent);
~XMPKeywords() override;
- void applyMetadata(QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
Q_SIGNALS:
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.cpp
index ae7aca6899..0bb30a75c1 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.cpp
@@ -44,12 +44,9 @@
#include "dlayoutbox.h"
#include "metadatacheckbox.h"
#include "timezonecombobox.h"
-#include "dmetadata.h"
#include "countryselector.h"
#include "dexpanderbox.h"
-using namespace Digikam;
-
namespace DigikamGenericMetadataEditPlugin
{
@@ -392,36 +389,34 @@ QDateTime XMPOrigin::getXMPCreationDate() const
return d->dateCreatedSel->dateTime();
}
-void XMPOrigin::readMetadata(QByteArray& xmpData)
+void XMPOrigin::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
QString data;
QStringList code, list;
QDateTime dateTime;
QString dateTimeStr;
- dateTimeStr = meta->getXmpTagString("Xmp.photoshop.DateCreated", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.photoshop.DateCreated", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.xmp.CreateDate", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.xmp.CreateDate", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.xmp.ModifyDate", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.xmp.ModifyDate", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.exif.DateTimeOriginal", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.exif.DateTimeOriginal", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.tiff.DateTime", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.tiff.DateTime", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.xmp.ModifyDate", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.xmp.ModifyDate", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.xmp.MetadataDate", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.xmp.MetadataDate", false);
d->dateCreatedSel->setDateTime(QDateTime::currentDateTime());
d->dateCreatedCheck->setChecked(false);
@@ -443,7 +438,7 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->zoneCreatedSel->setEnabled(d->dateCreatedCheck->isChecked());
d->syncEXIFDateCheck->setEnabled(d->dateCreatedCheck->isChecked());
- dateTimeStr = meta->getXmpTagString("Xmp.exif.DateTimeDigitized", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.exif.DateTimeDigitized", false);
d->dateDigitalizedSel->setDateTime(QDateTime::currentDateTime());
d->dateDigitalizedCheck->setChecked(false);
@@ -464,16 +459,16 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->dateDigitalizedSel->setEnabled(d->dateDigitalizedCheck->isChecked());
d->zoneDigitalizedSel->setEnabled(d->dateDigitalizedCheck->isChecked());
- dateTimeStr = meta->getXmpTagString("Xmp.video.DateTimeOriginal", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.video.DateTimeOriginal", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.video.DateTimeDigitized", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.video.DateTimeDigitized", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.video.ModificationDate", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.video.ModificationDate", false);
if (dateTimeStr.isEmpty())
- dateTimeStr = meta->getXmpTagString("Xmp.video.DateUTC", false);
+ dateTimeStr = meta.getXmpTagString("Xmp.video.DateUTC", false);
d->dateVideoSel->setDateTime(QDateTime::currentDateTime());
d->dateVideoCheck->setChecked(false);
@@ -496,7 +491,7 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->cityEdit->clear();
d->cityCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.City", false);
+ data = meta.getXmpTagString("Xmp.photoshop.City", false);
if (!data.isNull())
{
@@ -508,7 +503,7 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->sublocationEdit->clear();
d->sublocationCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.Location", false);
+ data = meta.getXmpTagString("Xmp.iptc.Location", false);
if (!data.isNull())
{
@@ -520,7 +515,7 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->provinceEdit->clear();
d->provinceCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.State", false);
+ data = meta.getXmpTagString("Xmp.photoshop.State", false);
if (!data.isNull())
{
@@ -532,7 +527,7 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
d->countryCB->setCurrentIndex(0);
d->countryCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.CountryCode", false);
+ data = meta.getXmpTagString("Xmp.iptc.CountryCode", false);
if (!data.isNull())
{
@@ -560,127 +555,120 @@ void XMPOrigin::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPOrigin::applyMetadata(QByteArray& exifData, QByteArray& xmpData)
+void XMPOrigin::applyMetadata(DMetadata& meta)
{
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setExif(exifData);
- meta->setXmp(xmpData);
-
QString xmpDateTimeFormat = QLatin1String("yyyy-MM-ddThh:mm:ss");
if (d->dateCreatedCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.DateCreated",
+ meta.setXmpTagString("Xmp.photoshop.DateCreated",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
- meta->setXmpTagString("Xmp.xmp.CreateDate",
+ meta.setXmpTagString("Xmp.xmp.CreateDate",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
- meta->setXmpTagString("Xmp.exif.DateTimeOriginal",
+ meta.setXmpTagString("Xmp.exif.DateTimeOriginal",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
- meta->setXmpTagString("Xmp.tiff.DateTime",
+ meta.setXmpTagString("Xmp.tiff.DateTime",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
- meta->setXmpTagString("Xmp.xmp.ModifyDate",
+ meta.setXmpTagString("Xmp.xmp.ModifyDate",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
- meta->setXmpTagString("Xmp.xmp.MetadataDate",
+ meta.setXmpTagString("Xmp.xmp.MetadataDate",
getXMPCreationDate().toString(xmpDateTimeFormat) +
d->zoneCreatedSel->getTimeZone());
if (syncEXIFDateIsChecked())
{
- meta->setExifTagString("Exif.Image.DateTime",
+ meta.setExifTagString("Exif.Image.DateTime",
getXMPCreationDate().toString(QLatin1String("yyyy:MM:dd hh:mm:ss")));
}
}
else
{
- meta->removeXmpTag("Xmp.photoshop.DateCreated");
- meta->removeXmpTag("Xmp.xmp.CreateDate");
- meta->removeXmpTag("Xmp.exif.DateTimeOriginal");
- meta->removeXmpTag("Xmp.tiff.DateTime");
- meta->removeXmpTag("Xmp.xmp.ModifyDate");
- meta->removeXmpTag("Xmp.xmp.MetadataDate");
+ meta.removeXmpTag("Xmp.photoshop.DateCreated");
+ meta.removeXmpTag("Xmp.xmp.CreateDate");
+ meta.removeXmpTag("Xmp.exif.DateTimeOriginal");
+ meta.removeXmpTag("Xmp.tiff.DateTime");
+ meta.removeXmpTag("Xmp.xmp.ModifyDate");
+ meta.removeXmpTag("Xmp.xmp.MetadataDate");
}
if (d->dateDigitalizedCheck->isChecked())
{
- meta->setXmpTagString("Xmp.exif.DateTimeDigitized",
+ meta.setXmpTagString("Xmp.exif.DateTimeDigitized",
d->dateDigitalizedSel->dateTime().toString(xmpDateTimeFormat) +
d->zoneDigitalizedSel->getTimeZone());
}
else
{
- meta->removeXmpTag("Xmp.exif.DateTimeDigitized");
+ meta.removeXmpTag("Xmp.exif.DateTimeDigitized");
}
if (d->dateVideoCheck->isChecked())
{
- meta->setXmpTagString("Xmp.video.DateTimeOriginal",
+ meta.setXmpTagString("Xmp.video.DateTimeOriginal",
d->dateVideoSel->dateTime().toString(xmpDateTimeFormat) +
d->zoneVideoSel->getTimeZone());
- meta->setXmpTagString("Xmp.video.DateTimeDigitized",
+ meta.setXmpTagString("Xmp.video.DateTimeDigitized",
d->dateVideoSel->dateTime().toString(xmpDateTimeFormat) +
d->zoneVideoSel->getTimeZone());
- meta->setXmpTagString("Xmp.video.ModificationDate",
+ meta.setXmpTagString("Xmp.video.ModificationDate",
d->dateVideoSel->dateTime().toString(xmpDateTimeFormat) +
d->zoneVideoSel->getTimeZone());
- meta->setXmpTagString("Xmp.video.DateUTC",
+ meta.setXmpTagString("Xmp.video.DateUTC",
d->dateVideoSel->dateTime().toString(xmpDateTimeFormat) +
d->zoneVideoSel->getTimeZone());
}
else
{
- meta->removeXmpTag("Xmp.video.DateTimeOriginal");
- meta->removeXmpTag("Xmp.video.DateTimeDigitized");
- meta->removeXmpTag("Xmp.video.ModificationDate");
- meta->removeXmpTag("Xmp.video.DateUTC");
+ meta.removeXmpTag("Xmp.video.DateTimeOriginal");
+ meta.removeXmpTag("Xmp.video.DateTimeDigitized");
+ meta.removeXmpTag("Xmp.video.ModificationDate");
+ meta.removeXmpTag("Xmp.video.DateUTC");
}
if (d->cityCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.City", d->cityEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.City", d->cityEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.City");
+ meta.removeXmpTag("Xmp.photoshop.City");
}
if (d->sublocationCheck->isChecked())
{
- meta->setXmpTagString("Xmp.iptc.Location", d->sublocationEdit->text());
+ meta.setXmpTagString("Xmp.iptc.Location", d->sublocationEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.iptc.Location");
+ meta.removeXmpTag("Xmp.iptc.Location");
}
if (d->provinceCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.State", d->provinceEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.State", d->provinceEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.State");
+ meta.removeXmpTag("Xmp.photoshop.State");
}
if (d->countryCheck->isChecked())
{
QString countryName = d->countryCB->currentText().mid(6);
QString countryCode = d->countryCB->currentText().left(3);
- meta->setXmpTagString("Xmp.iptc.CountryCode", countryCode);
- meta->setXmpTagString("Xmp.photoshop.Country", countryName);
+ meta.setXmpTagString("Xmp.iptc.CountryCode", countryCode);
+ meta.setXmpTagString("Xmp.photoshop.Country", countryName);
}
else if (d->countryCheck->isValid())
{
- meta->removeXmpTag("Xmp.iptc.CountryCode");
- meta->removeXmpTag("Xmp.photoshop.Country");
+ meta.removeXmpTag("Xmp.iptc.CountryCode");
+ meta.removeXmpTag("Xmp.photoshop.Country");
}
-
- exifData = meta->getExifEncoded();
- xmpData = meta->getXmp();
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.h
index 5e0e7d1840..6473b976c8 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmporigin.h
@@ -25,9 +25,14 @@
// Qt includes
-#include <QDateTime>
#include <QWidget>
-#include <QByteArray>
+#include <QDateTime>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -41,8 +46,8 @@ public:
explicit XMPOrigin(QWidget* const parent);
~XMPOrigin() override;
- void applyMetadata(QByteArray& exifData, QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
bool syncEXIFDateIsChecked() const;
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp
index ad0d861d21..da9b5bfbe1 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.cpp
@@ -46,11 +46,8 @@
#include "metadatacheckbox.h"
#include "multivaluesedit.h"
#include "objectattributesedit.h"
-#include "dmetadata.h"
#include "dexpanderbox.h"
-using namespace Digikam;
-
namespace DigikamGenericMetadataEditPlugin
{
@@ -324,11 +321,9 @@ XMPProperties::~XMPProperties()
delete d;
}
-void XMPProperties::readMetadata(QByteArray& xmpData)
+void XMPProperties::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
int val;
QString data;
@@ -338,7 +333,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
// ---------------------------------------------------------------
- code = meta->getXmpTagStringBag("Xmp.dc.language", false);
+ code = meta.getXmpTagStringBag("Xmp.dc.language", false);
for (QStringList::Iterator it = code.begin() ; it != code.end() ; ++it)
{
@@ -366,7 +361,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
d->priorityCB->setCurrentIndex(0);
d->priorityCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Urgency", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Urgency", false);
if (!data.isNull())
{
@@ -385,7 +380,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
// ---------------------------------------------------------------
- code = meta->getXmpTagStringBag("Xmp.iptc.Scene", false);
+ code = meta.getXmpTagStringBag("Xmp.iptc.Scene", false);
for (QStringList::Iterator it = code.begin() ; it != code.end() ; ++it)
{
@@ -411,7 +406,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
// ---------------------------------------------------------------
- code = meta->getXmpTagStringBag("Xmp.dc.type", false);
+ code = meta.getXmpTagStringBag("Xmp.dc.type", false);
for (QStringList::Iterator it3 = code.begin() ; it3 != code.end() ; ++it3)
{
@@ -440,7 +435,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
d->objectAttributeCB->setCurrentIndex(0);
d->objectAttributeEdit->clear();
d->objectAttributeCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.iptc.IntellectualGenre", false);
+ data = meta.getXmpTagString("Xmp.iptc.IntellectualGenre", false);
if (!data.isNull())
{
@@ -470,7 +465,7 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
d->originalTransEdit->clear();
d->originalTransCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.TransmissionReference", false);
+ data = meta.getXmpTagString("Xmp.photoshop.TransmissionReference", false);
if (!data.isNull())
{
@@ -485,11 +480,9 @@ void XMPProperties::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPProperties::applyMetadata(QByteArray& xmpData)
+void XMPProperties::applyMetadata(DMetadata& meta)
{
QStringList oldList, newList;
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
// ---------------------------------------------------------------
@@ -502,22 +495,22 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
newCode.append((*it2).left(2));
}
- meta->setXmpTagStringBag("Xmp.dc.language", newCode);
+ meta.setXmpTagStringBag("Xmp.dc.language", newCode);
}
else
{
- meta->removeXmpTag("Xmp.dc.language");
+ meta.removeXmpTag("Xmp.dc.language");
}
// ---------------------------------------------------------------
if (d->priorityCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.Urgency", QString::number(d->priorityCB->currentIndex()));
+ meta.setXmpTagString("Xmp.photoshop.Urgency", QString::number(d->priorityCB->currentIndex()));
}
else if (d->priorityCheck->isValid())
{
- meta->removeXmpTag("Xmp.photoshop.Urgency");
+ meta.removeXmpTag("Xmp.photoshop.Urgency");
}
// ---------------------------------------------------------------
@@ -531,22 +524,22 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
newCode.append((*it2).left(6));
}
- meta->setXmpTagStringBag("Xmp.iptc.Scene", newCode);
+ meta.setXmpTagStringBag("Xmp.iptc.Scene", newCode);
}
else
{
- meta->removeXmpTag("Xmp.iptc.Scene");
+ meta.removeXmpTag("Xmp.iptc.Scene");
}
// ---------------------------------------------------------------
if (d->objectTypeEdit->getValues(oldList, newList))
{
- meta->setXmpTagStringBag("Xmp.dc.type", newList);
+ meta.setXmpTagStringBag("Xmp.dc.type", newList);
}
else
{
- meta->removeXmpTag("Xmp.dc.type");
+ meta.removeXmpTag("Xmp.dc.type");
}
// ---------------------------------------------------------------
@@ -567,25 +560,23 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
.section(QLatin1String(" - "), -1));
}
- meta->setXmpTagString("Xmp.iptc.IntellectualGenre", objectAttribute);
+ meta.setXmpTagString("Xmp.iptc.IntellectualGenre", objectAttribute);
}
else if (d->objectAttributeCheck->isValid())
{
- meta->removeXmpTag("Xmp.iptc.IntellectualGenre");
+ meta.removeXmpTag("Xmp.iptc.IntellectualGenre");
}
// ---------------------------------------------------------------
if (d->originalTransCheck->isChecked())
{
- meta->setXmpTagString("Xmp.photoshop.TransmissionReference", d->originalTransEdit->text());
+ meta.setXmpTagString("Xmp.photoshop.TransmissionReference", d->originalTransEdit->text());
}
else
{
- meta->removeXmpTag("Xmp.photoshop.TransmissionReference");
+ meta.removeXmpTag("Xmp.photoshop.TransmissionReference");
}
-
- xmpData = meta->getXmp();
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.h
index cc6cf09eec..e6b90aa2a6 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpproperties.h
@@ -26,7 +26,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -40,8 +45,8 @@ public:
explicit XMPProperties(QWidget* const parent);
~XMPProperties() override;
- void applyMetadata(QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
Q_SIGNALS:
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.cpp
index eeb19fcaa2..0dde310249 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.cpp
@@ -39,9 +39,6 @@
#include "altlangstringedit.h"
#include "multistringsedit.h"
-#include "dmetadata.h"
-
-using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -153,11 +150,9 @@ XMPStatus::~XMPStatus()
delete d;
}
-void XMPStatus::readMetadata(QByteArray& xmpData)
+void XMPStatus::readMetadata(DMetadata& meta)
{
blockSignals(true);
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
QString data;
QStringList list;
@@ -165,7 +160,7 @@ void XMPStatus::readMetadata(QByteArray& xmpData)
d->objectNameEdit->setValues(map);
d->objectNameEdit->setValid(false);
- map = meta->getXmpTagStringListLangAlt("Xmp.dc.title", false);
+ map = meta.getXmpTagStringListLangAlt("Xmp.dc.title", false);
if (!map.isEmpty())
{
@@ -175,7 +170,7 @@ void XMPStatus::readMetadata(QByteArray& xmpData)
d->nicknameEdit->clear();
d->nicknameCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.xmp.Nickname", false);
+ data = meta.getXmpTagString("Xmp.xmp.Nickname", false);
if (!data.isNull())
{
@@ -185,12 +180,12 @@ void XMPStatus::readMetadata(QByteArray& xmpData)
d->nicknameEdit->setEnabled(d->nicknameCheck->isChecked());
- list = meta->getXmpTagStringSeq("Xmp.xmp.Identifier", false);
+ list = meta.getXmpTagStringSeq("Xmp.xmp.Identifier", false);
d->identifiersEdit->setValues(list);
d->specialInstructionEdit->clear();
d->specialInstructionCheck->setChecked(false);
- data = meta->getXmpTagString("Xmp.photoshop.Instructions", false);
+ data = meta.getXmpTagString("Xmp.photoshop.Instructions", false);
if (!data.isNull())
{
@@ -203,35 +198,31 @@ void XMPStatus::readMetadata(QByteArray& xmpData)
blockSignals(false);
}
-void XMPStatus::applyMetadata(QByteArray& xmpData)
+void XMPStatus::applyMetadata(DMetadata& meta)
{
QStringList oldList, newList;
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
DMetadata::AltLangMap oldAltLangMap, newAltLangMap;
if (d->objectNameEdit->getValues(oldAltLangMap, newAltLangMap))
- meta->setXmpTagStringListLangAlt("Xmp.dc.title", newAltLangMap);
+ meta.setXmpTagStringListLangAlt("Xmp.dc.title", newAltLangMap);
else if (d->objectNameEdit->isValid())
- meta->removeXmpTag("Xmp.dc.title");
+ meta.removeXmpTag("Xmp.dc.title");
if (d->nicknameCheck->isChecked())
- meta->setXmpTagString("Xmp.xmp.Nickname", d->nicknameEdit->text());
+ meta.setXmpTagString("Xmp.xmp.Nickname", d->nicknameEdit->text());
else
- meta->removeXmpTag("Xmp.xmp.Nickname");
+ meta.removeXmpTag("Xmp.xmp.Nickname");
if (d->identifiersEdit->getValues(oldList, newList))
- meta->setXmpTagStringSeq("Xmp.xmp.Identifier", newList);
+ meta.setXmpTagStringSeq("Xmp.xmp.Identifier", newList);
else
- meta->removeXmpTag("Xmp.xmp.Identifier");
+ meta.removeXmpTag("Xmp.xmp.Identifier");
if (d->specialInstructionCheck->isChecked())
- meta->setXmpTagString("Xmp.photoshop.Instructions", d->specialInstructionEdit->toPlainText());
+ meta.setXmpTagString("Xmp.photoshop.Instructions", d->specialInstructionEdit->toPlainText());
else
- meta->removeXmpTag("Xmp.photoshop.Instructions");
-
- xmpData = meta->getXmp();
+ meta.removeXmpTag("Xmp.photoshop.Instructions");
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.h
index b1bf3f6d72..e082467fb5 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpstatus.h
@@ -26,7 +26,12 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
+
+// Local includes
+
+#include "dmetadata.h"
+
+using namespace Digikam;
namespace DigikamGenericMetadataEditPlugin
{
@@ -40,8 +45,8 @@ public:
explicit XMPStatus(QWidget* const parent);
~XMPStatus() override;
- void applyMetadata(QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
Q_SIGNALS:
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.cpp b/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.cpp
index 6feb1ec686..bcd22d5b78 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.cpp
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.cpp
@@ -91,27 +91,21 @@ XMPSubjects::~XMPSubjects()
{
}
-void XMPSubjects::readMetadata(QByteArray& xmpData)
+void XMPSubjects::readMetadata(DMetadata& meta)
{
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
- setSubjectsList(meta->getXmpSubjects());
+ setSubjectsList(meta.getXmpSubjects());
}
-void XMPSubjects::applyMetadata(QByteArray& xmpData)
+void XMPSubjects::applyMetadata(DMetadata& meta)
{
- QScopedPointer<DMetadata> meta(new DMetadata);
- meta->setXmp(xmpData);
QStringList newSubjects = subjectsList();
// We remove in first all existing subjects.
- meta->removeXmpTag("Xmp.iptc.SubjectCode");
+ meta.removeXmpTag("Xmp.iptc.SubjectCode");
// And add new list if necessary.
if (m_subjectsCheck->isChecked())
- meta->setXmpSubjects(newSubjects);
-
- xmpData = meta->getXmp();
+ meta.setXmpSubjects(newSubjects);
}
} // namespace DigikamGenericMetadataEditPlugin
diff --git a/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.h b/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.h
index 2e991a7dc7..5065be00cb 100644
--- a/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.h
+++ b/core/dplugins/generic/metadata/metadataedit/xmp/xmpsubjects.h
@@ -27,7 +27,6 @@
// Qt includes
#include <QWidget>
-#include <QByteArray>
// Local includes
@@ -48,8 +47,8 @@ public:
explicit XMPSubjects(QWidget* const parent);
~XMPSubjects() override;
- void applyMetadata(QByteArray& xmpData);
- void readMetadata(QByteArray& xmpData);
+ void applyMetadata(DMetadata& meta);
+ void readMetadata(DMetadata& meta);
};
} // namespace DigikamGenericMetadataEditPlugin
--
2.31.1