[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [digikam/development/6.0.0] /: Big change in MetaEngine API. All setter methods take a bolean argume
From:       Gilles Caulier <null () kde ! org>
Date:       2018-02-28 20:48:46
Message-ID: E1er8ec-0001BX-6W () code ! kde ! org
[Download RAW message or body]

Git commit a296ffb1b007dc6ceecccdaf4719f5c9c9932602 by Gilles Caulier.
Committed on 28/02/2018 at 20:44.
Pushed by cgilles into branch 'development/6.0.0'.

Big change in MetaEngine API. All setter methods take a bolean argument to indicate if program id must be \
set in metadata. This is time consuming and is rarely used. this operation is now processed only when \
metdata are written in file. By this way the API is more clean and simple to use.

M  +1    -1    libs/dimg/filters/lens/lensfunfilter.cpp
M  +78   -119  libs/dmetadata/dmetadata.cpp
M  +8    -11   libs/dmetadata/dmetadata.h
M  +73   -73   libs/dmetadata/dmetadata_ffmpeg.cpp
M  +10   -2    libs/dmetadata/metaengine.cpp
M  +44   -67   libs/dmetadata/metaengine.h
M  +15   -42   libs/dmetadata/metaengine_exif.cpp
M  +45   -54   libs/dmetadata/metaengine_gps.cpp
M  +13   -28   libs/dmetadata/metaengine_image.cpp
M  +11   -36   libs/dmetadata/metaengine_iptc.cpp
M  +23   -62   libs/dmetadata/metaengine_xmp.cpp
M  +2    -2    tests/dmetadata/commentreadwritetest.cpp
M  +1    -1    tests/dmetadata/erasetag.cpp
M  +2    -2    tests/dmetadata/ratingreadwritetest.cpp
M  +24   -26   tests/dmetadata/setxmpface.cpp
M  +2    -2    tests/dmetadata/tagsreadwritetest.cpp
M  +3    -3    tests/timestampupdate/timestampupdatetest.cpp
M  +2    -2    utilities/geolocation/editor/items/gpsimageitem.cpp
M  +4    -4    utilities/metadataedit/exif/exifcaption.cpp
M  +2    -2    utilities/metadataedit/xmp/xmpcontent.cpp
M  +3    -3    utilities/metadataedit/xmp/xmpproperties.cpp
M  +1    -1    utilities/metadataedit/xmp/xmpstatus.cpp

https://commits.kde.org/digikam/a296ffb1b007dc6ceecccdaf4719f5c9c9932602

diff --git a/libs/dimg/filters/lens/lensfunfilter.cpp b/libs/dimg/filters/lens/lensfunfilter.cpp
index d5cfa083c2..62bf8a36aa 100644
--- a/libs/dimg/filters/lens/lensfunfilter.cpp
+++ b/libs/dimg/filters/lens/lensfunfilter.cpp
@@ -348,7 +348,7 @@ bool LensFunFilter::registerSettingsToXmp(MetaEngineData& data) const
 
     DMetadata meta(data);
     bool ret = meta.setXmpTagString("Xmp.digiKam.LensCorrectionSettings",
-                                    str.replace(QLatin1Char('\n'), QLatin1String(" ; ")), false);
+                                    str.replace(QLatin1Char('\n'), QLatin1String(" ; ")));
     data     = meta.data();
 
     return ret;
diff --git a/libs/dmetadata/dmetadata.cpp b/libs/dmetadata/dmetadata.cpp
index 0df0f4b073..589f631f45 100644
--- a/libs/dmetadata/dmetadata.cpp
+++ b/libs/dmetadata/dmetadata.cpp
@@ -130,54 +130,54 @@ bool DMetadata::loadUsingRawEngine(const QString& filePath)
 
         if (!identify.model.isNull())
         {
-            setExifTagString("Exif.Image.Model", identify.model, false);
+            setExifTagString("Exif.Image.Model", identify.model);
         }
 
         if (!identify.make.isNull())
         {
-            setExifTagString("Exif.Image.Make", identify.make, false);
+            setExifTagString("Exif.Image.Make", identify.make);
         }
 
         if (!identify.owner.isNull())
         {
-            setExifTagString("Exif.Image.Artist", identify.owner, false);
+            setExifTagString("Exif.Image.Artist", identify.owner);
         }
 
         if (identify.sensitivity != -1)
         {
-            setExifTagLong("Exif.Photo.ISOSpeedRatings", lroundf(identify.sensitivity), false);
+            setExifTagLong("Exif.Photo.ISOSpeedRatings", lroundf(identify.sensitivity));
         }
 
         if (identify.dateTime.isValid())
         {
-            setImageDateTime(identify.dateTime, false, false);
+            setImageDateTime(identify.dateTime, false);
         }
 
         if (identify.exposureTime != -1.0)
         {
             convertToRationalSmallDenominator(identify.exposureTime, &num, &den);
-            setExifTagRational("Exif.Photo.ExposureTime", num, den, false);
+            setExifTagRational("Exif.Photo.ExposureTime", num, den);
         }
 
         if (identify.aperture != -1.0)
         {
             convertToRational(identify.aperture, &num, &den, 8);
-            setExifTagRational("Exif.Photo.ApertureValue", num, den, false);
+            setExifTagRational("Exif.Photo.ApertureValue", num, den);
         }
 
         if (identify.focalLength != -1.0)
         {
             convertToRational(identify.focalLength, &num, &den, 8);
-            setExifTagRational("Exif.Photo.FocalLength", num, den, false);
+            setExifTagRational("Exif.Photo.FocalLength", num, den);
         }
 
         if (identify.imageSize.isValid())
         {
-            setImageDimensions(identify.imageSize, false);
+            setImageDimensions(identify.imageSize);
         }
 
         // A RAW image is always uncalibrated. */
-        setImageColorWorkSpace(WORKSPACE_UNCALIBRATED, false);
+        setImageColorWorkSpace(WORKSPACE_UNCALIBRATED);
 
         return true;
     }
@@ -185,18 +185,6 @@ bool DMetadata::loadUsingRawEngine(const QString& filePath)
     return false;
 }
 
-bool DMetadata::setProgramId(bool on) const
-{
-    if (on)
-    {
-        QString version(digiKamVersion());
-        QLatin1String software("digiKam");
-        return setImageProgramId(software, version);
-    }
-
-    return true;
-}
-
 int DMetadata::getMSecsInfo() const
 {
     int ms  = 0;
@@ -359,7 +347,7 @@ bool DMetadata::setImageComments(const CaptionsMap& comments, const DMetadataSet
 
     if (supportXmp())
     {
-        if (!setXmpTagStringListLangAlt("Xmp.digiKam.CaptionsAuthorNames", comments.authorsList(), \
false)) +        if (!setXmpTagStringListLangAlt("Xmp.digiKam.CaptionsAuthorNames", \
comments.authorsList()))  {
             return false;
         }
@@ -369,13 +357,13 @@ bool DMetadata::setImageComments(const CaptionsMap& comments, const DMetadataSet
 
         if (!defaultAuthor.isNull())
         {
-            if (!setXmpTagString("Xmp.acdsee.author", defaultAuthor, false))
+            if (!setXmpTagString("Xmp.acdsee.author", defaultAuthor))
             {
                 return false;
             }
         }
 
-        if (!setXmpTagStringListLangAlt("Xmp.digiKam.CaptionsDateTimeStamps", comments.datesList(), \
false)) +        if (!setXmpTagStringListLangAlt("Xmp.digiKam.CaptionsDateTimeStamps", \
comments.datesList()))  {
             return false;
         }
@@ -406,7 +394,7 @@ bool DMetadata::setImageComments(const CaptionsMap& comments, const DMetadataSet
                     case NamespaceEntry::COMMENT_ALTLANG:
                         if (!defaultComment.isNull())
                         {
-                            if (!setXmpTagStringLangAlt(nameSpace, defaultComment, QString(), false))
+                            if (!setXmpTagStringLangAlt(nameSpace, defaultComment, QString()))
                             {
                                 qCDebug(DIGIKAM_METAENGINE_LOG) << "Setting image comment failed" << \
nameSpace;  return false;
@@ -415,7 +403,7 @@ bool DMetadata::setImageComments(const CaptionsMap& comments, const DMetadataSet
                         break;
 
                     case NamespaceEntry::COMMENT_ATLLANGLIST:
-                        if (!setXmpTagStringListLangAlt(nameSpace, comments.toAltLangMap(), false))
+                        if (!setXmpTagStringListLangAlt(nameSpace, comments.toAltLangMap()))
                         {
                             return false;
                         }
@@ -424,7 +412,7 @@ bool DMetadata::setImageComments(const CaptionsMap& comments, const DMetadataSet
                     case NamespaceEntry::COMMENT_XMP:
                         if (!defaultComment.isNull())
                         {
-                            if (!setXmpTagString(nameSpace, defaultComment, false))
+                            if (!setXmpTagString(nameSpace, defaultComment))
                             {
                                 return false;
                             }
@@ -620,7 +608,7 @@ bool DMetadata::setImageTitles(const CaptionsMap& titles) const
     if (supportXmp())
     {
         // NOTE : setXmpTagStringListLangAlt remove xmp tag before to add new values
-        if (!setXmpTagStringListLangAlt("Xmp.dc.title", titles.toAltLangMap(), false))
+        if (!setXmpTagStringListLangAlt("Xmp.dc.title", titles.toAltLangMap()))
         {
             return false;
         }
@@ -629,7 +617,7 @@ bool DMetadata::setImageTitles(const CaptionsMap& titles) const
 
         if (!defaultTitle.isEmpty())
         {
-            if (!setXmpTagString("Xmp.acdsee.caption", defaultTitle, false))
+            if (!setXmpTagString("Xmp.acdsee.caption", defaultTitle))
             {
                 return false;
             }
@@ -754,11 +742,6 @@ bool DMetadata::setImagePickLabel(int pickId) const
 
     qCDebug(DIGIKAM_METAENGINE_LOG) << getFilePath() << " ==> Pick Label: " << pickId;
 
-    if (!setProgramId())
-    {
-        return false;
-    }
-
     if (supportXmp())
     {
         if (!setXmpTagString("Xmp.digiKam.PickLabel", QString::number(pickId)))
@@ -780,11 +763,6 @@ bool DMetadata::setImageColorLabel(int colorId) const
 
     qCDebug(DIGIKAM_METAENGINE_LOG) << getFilePath() << " ==> Color Label: " << colorId;
 
-    if (!setProgramId())
-    {
-        return false;
-    }
-
     if (supportXmp())
     {
         if (!setXmpTagString("Xmp.digiKam.ColorLabel", QString::number(colorId)))
@@ -847,12 +825,6 @@ bool DMetadata::setImageRating(int rating, const DMetadataSettingsContainer &set
 
     qCDebug(DIGIKAM_METAENGINE_LOG) << getFilePath() << " ==> Rating: +++++++++++" << rating;
 
-    if (!setProgramId())
-    {
-        qCDebug(DIGIKAM_METAENGINE_LOG) << "Could not set program id";
-        return false;
-    }
-
     QList<NamespaceEntry> toWrite = settings.getReadMapping(QLatin1String(DM_RATING_CONTAINER));
 
     if (!settings.unifyReadWrite())
@@ -931,7 +903,7 @@ bool DMetadata::setImageHistory(QString& imageHistoryXml) const
 {
     if (supportXmp())
     {
-        if (!setXmpTagString("Xmp.digiKam.ImageHistory", imageHistoryXml, false))
+        if (!setXmpTagString("Xmp.digiKam.ImageHistory", imageHistoryXml))
         {
             return false;
         }
@@ -1585,7 +1557,7 @@ bool DMetadata::setACDSeeTagsPath(const QStringList &tagsPath) const
 
     if (!xmlTags.isEmpty())
     {
-        if (!setXmpTagString("Xmp.acdsee.categories", xmlACDSee, false))
+        if (!setXmpTagString("Xmp.acdsee.categories", xmlACDSee))
         {
             return false;
         }
@@ -1697,10 +1669,10 @@ bool DMetadata::setImageFacesMap(QMultiMap< QString, QVariant >& facesPath, bool
     }
 
     setXmpTagString(qxmpTagName.toLatin1().constData(),
-                    QString(), MetaEngine::XmpTagType(1),false);
+                    QString(), MetaEngine::XmpTagType(1));
 
     setXmpTagString(winQxmpTagName.toLatin1().constData(),
-                    QString(), MetaEngine::XmpTagType(1),false);
+                    QString(), MetaEngine::XmpTagType(1));
 
     QMap<QString, QVariant>::const_iterator it = facesPath.constBegin();
     int i   = 1;
@@ -1723,11 +1695,11 @@ bool DMetadata::setImageFacesMap(QMultiMap< QString, QVariant >& facesPath, bool
 
         /** Set tag rect **/
         setXmpTagString(winRectTagKey.arg(i).toLatin1().constData(), rectString,
-                             MetaEngine::XmpTagType(0),false);
+                             MetaEngine::XmpTagType(0));
         /** Set tag name **/
 
         setXmpTagString(winNameTagKey.arg(i).toLatin1().constData(),it.key(),
-                             MetaEngine::XmpTagType(0),false);
+                             MetaEngine::XmpTagType(0));
 
         /** Writing rectangle in Metadata Group format **/
         x += w/2;
@@ -1735,34 +1707,34 @@ bool DMetadata::setImageFacesMap(QMultiMap< QString, QVariant >& facesPath, bool
 
         /** Set tag name **/
         ok &= setXmpTagString(nameTagKey.arg(i).toLatin1().constData(),
-                              it.key(),MetaEngine::XmpTagType(0),false);
+                              it.key(),MetaEngine::XmpTagType(0));
         /** Set tag type as Face **/
         ok &= setXmpTagString(typeTagKey.arg(i).toLatin1().constData(),
-                              QLatin1String("Face"), MetaEngine::XmpTagType(0),false);
+                              QLatin1String("Face"), MetaEngine::XmpTagType(0));
 
         /** Set tag Area, with xmp type struct **/
         ok &= setXmpTagString(areaTagKey.arg(i).toLatin1().constData(),
-                              QString(), MetaEngine::XmpTagType(2),false);
+                              QString(), MetaEngine::XmpTagType(2));
 
         /** Set stArea:x inside Area structure **/
         ok &= setXmpTagString(areaxTagKey.arg(i).toLatin1().constData(),
-                              QString::number(x), MetaEngine::XmpTagType(0),false);
+                              QString::number(x), MetaEngine::XmpTagType(0));
 
         /** Set stArea:y inside Area structure **/
         ok &= setXmpTagString(areayTagKey.arg(i).toLatin1().constData(),
-                              QString::number(y), MetaEngine::XmpTagType(0),false);
+                              QString::number(y), MetaEngine::XmpTagType(0));
 
         /** Set stArea:w inside Area structure **/
         ok &= setXmpTagString(areawTagKey.arg(i).toLatin1().constData(),
-                              QString::number(w), MetaEngine::XmpTagType(0),false);
+                              QString::number(w), MetaEngine::XmpTagType(0));
 
         /** Set stArea:h inside Area structure **/
         ok &= setXmpTagString(areahTagKey.arg(i).toLatin1().constData(),
-                              QString::number(h), MetaEngine::XmpTagType(0),false);
+                              QString::number(h), MetaEngine::XmpTagType(0));
 
         /** Set stArea:unit inside Area structure  as normalized **/
         ok &= setXmpTagString(areanormTagKey.arg(i).toLatin1().constData(),
-                              QLatin1String("normalized"), MetaEngine::XmpTagType(0),false);
+                              QLatin1String("normalized"), MetaEngine::XmpTagType(0));
 
         ++it;
         ++i;
@@ -1778,11 +1750,6 @@ bool DMetadata::setMetadataTemplate(const Template& t) const
         return false;
     }
 
-    if (!setProgramId())
-    {
-        return false;
-    }
-
     QStringList authors               = t.authors();
     QString authorsPosition           = t.authorsPosition();
     QString credit                    = t.credit();
@@ -1797,52 +1764,52 @@ bool DMetadata::setMetadataTemplate(const Template& t) const
 
     if (supportXmp())
     {
-        if (!setXmpTagStringSeq("Xmp.dc.creator", authors, false))
+        if (!setXmpTagStringSeq("Xmp.dc.creator", authors))
         {
             return false;
         }
 
-        if (!setXmpTagStringSeq("Xmp.tiff.Artist", authors, false))
+        if (!setXmpTagStringSeq("Xmp.tiff.Artist", authors))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.AuthorsPosition", authorsPosition, false))
+        if (!setXmpTagString("Xmp.photoshop.AuthorsPosition", authorsPosition))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.Credit", credit, false))
+        if (!setXmpTagString("Xmp.photoshop.Credit", credit))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.Source", source, false))
+        if (!setXmpTagString("Xmp.photoshop.Source", source))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.dc.source", source, false))
+        if (!setXmpTagString("Xmp.dc.source", source))
         {
             return false;
         }
 
-        if (!setXmpTagStringListLangAlt("Xmp.dc.rights", copyright, false))
+        if (!setXmpTagStringListLangAlt("Xmp.dc.rights", copyright))
         {
             return false;
         }
 
-        if (!setXmpTagStringListLangAlt("Xmp.tiff.Copyright", copyright, false))
+        if (!setXmpTagStringListLangAlt("Xmp.tiff.Copyright", copyright))
         {
             return false;
         }
 
-        if (!setXmpTagStringListLangAlt("Xmp.xmpRights.UsageTerms", rightUsage, false))
+        if (!setXmpTagStringListLangAlt("Xmp.xmpRights.UsageTerms", rightUsage))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.Instructions", instructions, false))
+        if (!setXmpTagString("Xmp.photoshop.Instructions", instructions))
         {
             return false;
         }
@@ -1852,7 +1819,7 @@ bool DMetadata::setMetadataTemplate(const Template& t) const
 
     if (!setIptcTagsStringList("Iptc.Application2.Byline", 32,
                                getIptcTagsStringList("Iptc.Application2.Byline"),
-                               authors, false))
+                               authors))
     {
         return false;
     }
@@ -2073,42 +2040,42 @@ bool DMetadata::setCreatorContactInfo(const IptcCoreContactInfo& info) const
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", info.city, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCity", info.city))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", info.country, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrCtry", info.country))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", info.address, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrExtadr", info.address))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", info.postalCode, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrPcode", info.postalCode))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion", info.provinceState, \
false)) +    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiAdrRegion", \
info.provinceState))  {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", info.email, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiEmailWork", info.email))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", info.phone, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiTelWork", info.phone))
     {
         return false;
     }
 
-    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", info.webUrl, false))
+    if (!setXmpTagString("Xmp.iptc.CreatorContactInfo/Iptc4xmpCore:CiUrlWork", info.webUrl))
     {
         return false;
     }
@@ -2145,27 +2112,27 @@ bool DMetadata::setIptcCoreLocation(const IptcCoreLocationInfo& location) const
 {
     if (supportXmp())
     {
-        if (!setXmpTagString("Xmp.photoshop.Country", location.country, false))
+        if (!setXmpTagString("Xmp.photoshop.Country", location.country))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.iptc.CountryCode", location.countryCode, false))
+        if (!setXmpTagString("Xmp.iptc.CountryCode", location.countryCode))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.City", location.city, false))
+        if (!setXmpTagString("Xmp.photoshop.City", location.city))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.iptc.Location", location.location, false))
+        if (!setXmpTagString("Xmp.iptc.Location", location.location))
         {
             return false;
         }
 
-        if (!setXmpTagString("Xmp.photoshop.State", location.provinceState, false))
+        if (!setXmpTagString("Xmp.photoshop.State", location.provinceState))
         {
             return false;
         }
@@ -2323,12 +2290,15 @@ bool DMetadata::setIccProfile(const IccProfile& profile)
     else
     {
         QByteArray data = IccProfile(profile).data();
+
         if (!setExifTagData("Exif.Image.InterColorProfile", data))
         {
             return false;
         }
     }
+
     removeExifColorSpace();
+
     return true;
 }
 
@@ -3266,16 +3236,10 @@ MetaEngine::AltLangMap DMetadata::toAltLangMap(const QVariant& var)
     return map;
 }
 
-bool DMetadata::addToXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToAdd,
-                                     bool setProgramName) const
+bool DMetadata::addToXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToAdd) \
const  {
     //#ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-    {
-        return false;
-    }
-
     QStringList oldEntries = getXmpTagStringBag(xmpTagName, false);
     QStringList newEntries = entriesToAdd;
 
@@ -3288,7 +3252,7 @@ bool DMetadata::addToXmpTagStringBag(const char* const xmpTagName, const QString
         }
     }
 
-    if (setXmpTagStringBag(xmpTagName, newEntries, false))
+    if (setXmpTagStringBag(xmpTagName, newEntries))
     {
         return true;
     }
@@ -3298,16 +3262,10 @@ bool DMetadata::addToXmpTagStringBag(const char* const xmpTagName, const QString
     return false;
 }
 
-bool DMetadata::removeFromXmpTagStringBag(const char* const xmpTagName, const QStringList& \
                entriesToRemove,
-        bool setProgramName) const
+bool DMetadata::removeFromXmpTagStringBag(const char* const xmpTagName, const QStringList& \
entriesToRemove) const  {
     //#ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-    {
-        return false;
-    }
-
     QStringList currentEntries = getXmpTagStringBag(xmpTagName, false);
     QStringList newEntries;
 
@@ -3320,7 +3278,7 @@ bool DMetadata::removeFromXmpTagStringBag(const char* const xmpTagName, const QS
         }
     }
 
-    if (setXmpTagStringBag(xmpTagName, newEntries, false))
+    if (setXmpTagStringBag(xmpTagName, newEntries))
     {
         return true;
     }
@@ -3335,14 +3293,14 @@ QStringList DMetadata::getXmpKeywords() const
     return (getXmpTagStringBag("Xmp.dc.subject", false));
 }
 
-bool DMetadata::setXmpKeywords(const QStringList& newKeywords, bool setProgramName) const
+bool DMetadata::setXmpKeywords(const QStringList& newKeywords) const
 {
-    return setXmpTagStringBag("Xmp.dc.subject", newKeywords, setProgramName);
+    return setXmpTagStringBag("Xmp.dc.subject", newKeywords);
 }
 
-bool DMetadata::removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName)
+bool DMetadata::removeXmpKeywords(const QStringList& keywordsToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.dc.subject", keywordsToRemove, setProgramName);
+    return removeFromXmpTagStringBag("Xmp.dc.subject", keywordsToRemove);
 }
 
 QStringList DMetadata::getXmpSubCategories() const
@@ -3350,14 +3308,14 @@ QStringList DMetadata::getXmpSubCategories() const
     return (getXmpTagStringBag("Xmp.photoshop.SupplementalCategories", false));
 }
 
-bool DMetadata::setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName) const
+bool DMetadata::setXmpSubCategories(const QStringList& newSubCategories) const
 {
-    return addToXmpTagStringBag("Xmp.photoshop.SupplementalCategories", newSubCategories, \
setProgramName); +    return addToXmpTagStringBag("Xmp.photoshop.SupplementalCategories", \
newSubCategories);  }
 
-bool DMetadata::removeXmpSubCategories(const QStringList& subCategoriesToRemove, bool setProgramName)
+bool DMetadata::removeXmpSubCategories(const QStringList& subCategoriesToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.photoshop.SupplementalCategories", subCategoriesToRemove, \
setProgramName); +    return removeFromXmpTagStringBag("Xmp.photoshop.SupplementalCategories", \
subCategoriesToRemove);  }
 
 QStringList DMetadata::getXmpSubjects() const
@@ -3365,21 +3323,21 @@ QStringList DMetadata::getXmpSubjects() const
     return (getXmpTagStringBag("Xmp.iptc.SubjectCode", false));
 }
 
-bool DMetadata::setXmpSubjects(const QStringList& newSubjects, bool setProgramName) const
+bool DMetadata::setXmpSubjects(const QStringList& newSubjects) const
 {
-    return addToXmpTagStringBag("Xmp.iptc.SubjectCode", newSubjects, setProgramName);
+    return addToXmpTagStringBag("Xmp.iptc.SubjectCode", newSubjects);
 }
 
-bool DMetadata::removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName)
+bool DMetadata::removeXmpSubjects(const QStringList& subjectsToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.iptc.SubjectCode", subjectsToRemove, setProgramName);
+    return removeFromXmpTagStringBag("Xmp.iptc.SubjectCode", subjectsToRemove);
 }
 
 bool DMetadata::removeExifColorSpace() const
 {
     bool ret =  true;
-    ret      &= removeExifTag("Exif.Photo.ColorSpace", true);
-    ret      &= removeXmpTag("Xmp.exif.ColorSpace", true);
+    ret     &= removeExifTag("Exif.Photo.ColorSpace");
+    ret     &= removeXmpTag("Xmp.exif.ColorSpace");
 
     return ret;
 }
@@ -3391,6 +3349,7 @@ QString DMetadata::getExifTagStringFromTagsList(const QStringList& tagsList) con
     foreach(const QString& tag, tagsList)
     {
         val = getExifTagString(tag.toLatin1().constData());
+
         if (!val.isEmpty())
             return val;
     }
diff --git a/libs/dmetadata/dmetadata.h b/libs/dmetadata/dmetadata.h
index 54c4443fa7..1155eb26c1 100644
--- a/libs/dmetadata/dmetadata.h
+++ b/libs/dmetadata/dmetadata.h
@@ -203,15 +203,13 @@ public:
         all new with all already existing entries to prevent duplicates in the image.
         Return true if the entries have been added to metadata.
      */
-    bool addToXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToAdd,
-                              bool setProgramName) const;
+    bool addToXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToAdd) const;
 
     /** Remove those Xmp tag entries that are listed in entriesToRemove from the entries in metadata.
         Return true if tag entries are no longer contained in metadata.
         All other entries are preserved.
      */
-    bool removeFromXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToRemove,
-                                   bool setProgramName) const;
+    bool removeFromXmpTagStringBag(const char* const xmpTagName, const QStringList& entriesToRemove) \
const;  
     /** Return a strings list of Xmp keywords from image. Return an empty list if no keyword are set.
      */
@@ -222,12 +220,12 @@ public:
         all new keywords with all already existing keywords to prevent duplicate entries in image.
         Return true if keywords have been changed in metadata.
      */
-    bool setXmpKeywords(const QStringList& newKeywords, bool setProgramName=true) const;
+    bool setXmpKeywords(const QStringList& newKeywords) const;
 
     /** Remove those Xmp keywords that are listed in keywordsToRemove from the keywords in metadata.
         Return true if keywords are no longer contained in metadata.
      */
-    bool removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName=true);
+    bool removeXmpKeywords(const QStringList& keywordsToRemove);
 
     /** Return a strings list of Xmp subjects from image. Return an empty list if no subject are set.
      */
@@ -238,12 +236,12 @@ public:
         all new subject with all already existing subject to prevent duplicate entries in image.
         Return true if subjects have been changed in metadata.
      */
-    bool setXmpSubjects(const QStringList& newSubjects, bool setProgramName=true) const;
+    bool setXmpSubjects(const QStringList& newSubjects) const;
 
     /** Remove those Xmp subjects that are listed in subjectsToRemove from the subjects in metadata.
         Return true if subjects are no longer contained in metadata.
      */
-    bool removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName=true);
+    bool removeXmpSubjects(const QStringList& subjectsToRemove);
 
     /** Return a strings list of Xmp sub-categories from image. Return an empty list if no sub-category
         are set.
@@ -255,12 +253,12 @@ public:
         all new sub-categories with all already existing sub-categories to prevent duplicate entries in \
image.  Return true if sub-categories have been changed in metadata.
      */
-    bool setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName=true) const;
+    bool setXmpSubCategories(const QStringList& newSubCategories) const;
 
     /** Remove those Xmp sub-categories that are listed in categoriesToRemove from the sub-categories in \
metadata.  Return true if subjects are no longer contained in metadata.
      */
-    bool removeXmpSubCategories(const QStringList& categoriesToRemove, bool setProgramName=true);
+    bool removeXmpSubCategories(const QStringList& categoriesToRemove);
 
     bool removeExifTags(const QStringList& tagFilters);
     bool removeIptcTags(const QStringList& tagFilters);
@@ -268,7 +266,6 @@ public:
 
 private:
 
-    bool setProgramId(bool on=true) const;
     bool setIptcTag(const QString& text, int maxLength, const char* const debugLabel, const char* const \
tagKey) const;  
     QVariant fromExifOrXmp(const char* const exifTagName, const char* const xmpTagName) const;
diff --git a/libs/dmetadata/dmetadata_ffmpeg.cpp b/libs/dmetadata/dmetadata_ffmpeg.cpp
index 0fcfae68d1..30dd36b928 100644
--- a/libs/dmetadata/dmetadata_ffmpeg.cpp
+++ b/libs/dmetadata/dmetadata_ffmpeg.cpp
@@ -121,13 +121,13 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     AVDictionary* dict       = 0;
 
     QFileInfo fi(filePath);
-    setXmpTagString("Xmp.video.FileName",    fi.fileName(), false);
-    setXmpTagString("Xmp.video.FileSize",    QString::number(fi.size() / (1024*1024)), false);
-    setXmpTagString("Xmp.video.FileType",    fi.suffix(), false);
-    setXmpTagString("Xmp.video.MimeType",    QMimeDatabase().mimeTypeForFile(filePath).name(), false);
-    setXmpTagString("Xmp.video.Duration",    QString::number(totalSecs), false);
-    setXmpTagString("Xmp.video.MaxBitRate",  QString::number(bitrate), false);
-    setXmpTagString("Xmp.video.StreamCount", QString::number(fmt_ctx->nb_streams), false);
+    setXmpTagString("Xmp.video.FileName",    fi.fileName());
+    setXmpTagString("Xmp.video.FileSize",    QString::number(fi.size() / (1024*1024)));
+    setXmpTagString("Xmp.video.FileType",    fi.suffix());
+    setXmpTagString("Xmp.video.MimeType",    QMimeDatabase().mimeTypeForFile(filePath).name());
+    setXmpTagString("Xmp.video.Duration",    QString::number(totalSecs));
+    setXmpTagString("Xmp.video.MaxBitRate",  QString::number(bitrate));
+    setXmpTagString("Xmp.video.StreamCount", QString::number(fmt_ctx->nb_streams));
 
     // To only register one video and one audio stream in XMP metadata.
     bool vstream = false;
@@ -143,11 +143,11 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
             astream           = true;
             const char* cname = avcodec_get_name(codec->codec_id);
 
-            setXmpTagString("Xmp.audio.Codec", QString::fromUtf8(cname), false);
-            setXmpTagString("Xmp.audio.CodecDescription", \
                QString::fromUtf8(avcodec_descriptor_get_by_name(cname)->long_name), false);
-            setXmpTagString("Xmp.audio.SampleRate", QString::number(codec->sample_rate), false);
-            setXmpTagString("Xmp.audio.ChannelType", QString::number(codec->channels), false);
-            setXmpTagString("Xmp.audio.Format",     \
QString::fromUtf8(av_get_sample_fmt_name((AVSampleFormat)codec->format)), false); +            \
setXmpTagString("Xmp.audio.Codec", QString::fromUtf8(cname)); +            \
setXmpTagString("Xmp.audio.CodecDescription", \
QString::fromUtf8(avcodec_descriptor_get_by_name(cname)->long_name)); +            \
setXmpTagString("Xmp.audio.SampleRate", QString::number(codec->sample_rate)); +            \
setXmpTagString("Xmp.audio.ChannelType", QString::number(codec->channels)); +            \
setXmpTagString("Xmp.audio.Format",     \
QString::fromUtf8(av_get_sample_fmt_name((AVSampleFormat)codec->format)));  
             // --------------
 
@@ -162,7 +162,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
             if (entry)
             {
-                setXmpTagString("Xmp.audio.TrackLang", QString::fromUtf8(entry->value), false);
+                setXmpTagString("Xmp.audio.TrackLang", QString::fromUtf8(entry->value));
             }
             
             // --------------
@@ -173,7 +173,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
             {
                 QDateTime dt = QDateTime::fromString(QString::fromUtf8(entry->value), Qt::ISODate);
                 setXmpTagString("Xmp.audio.TrackCreateDate",
-                                QString::number(s_secondsSinceJanuary1904(dt)), false);
+                                QString::number(s_secondsSinceJanuary1904(dt)));
             }
         }
 
@@ -182,10 +182,10 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
             vstream           = true;
             const char* cname = avcodec_get_name(codec->codec_id); 
 
-            setXmpTagString("Xmp.video.Codec", QString::fromUtf8(cname), false);
-            setXmpTagString("Xmp.video.CodecDescription", \
                QString::fromUtf8(avcodec_descriptor_get_by_name(cname)->long_name), false);
-            setXmpTagString("Xmp.video.Format",     \
                QString::fromUtf8(av_get_pix_fmt_name((AVPixelFormat)codec->format)), false);
-            setXmpTagString("Xmp.video.ColorSpace", \
QString::fromUtf8(av_color_space_name(codec->color_space)), false); +            \
setXmpTagString("Xmp.video.Codec", QString::fromUtf8(cname)); +            \
setXmpTagString("Xmp.video.CodecDescription", \
QString::fromUtf8(avcodec_descriptor_get_by_name(cname)->long_name)); +            \
setXmpTagString("Xmp.video.Format",     \
QString::fromUtf8(av_get_pix_fmt_name((AVPixelFormat)codec->format))); +            \
setXmpTagString("Xmp.video.ColorSpace", QString::fromUtf8(av_color_space_name(codec->color_space)));  
             int aspectRatio = codec->sample_aspect_ratio.num;
             int frameRate   = stream->avg_frame_rate.num;
@@ -196,19 +196,19 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
             if (stream->avg_frame_rate.den)
                 frameRate /= stream->avg_frame_rate.den;
 
-            setXmpTagString("Xmp.video.SourceImageWidth",  QString::number(codec->width),  false);
-            setXmpTagString("Xmp.video.SourceImageHeight", QString::number(codec->height), false);
+            setXmpTagString("Xmp.video.SourceImageWidth",  QString::number(codec->width));
+            setXmpTagString("Xmp.video.SourceImageHeight", QString::number(codec->height));
 
             // Backport size in Exif and Iptc
-            setImageDimensions(QSize(codec->width, codec->height), false);
+            setImageDimensions(QSize(codec->width, codec->height));
 
             if (aspectRatio)
-                setXmpTagString("Xmp.video.AspectRatio", QString::number(aspectRatio), false);
+                setXmpTagString("Xmp.video.AspectRatio", QString::number(aspectRatio));
 
             if (frameRate)
-                setXmpTagString("Xmp.video.FrameRate", QString::number(frameRate), false);
+                setXmpTagString("Xmp.video.FrameRate", QString::number(frameRate));
 
-            setXmpTagString("Xmp.video.PixelDepth",  QString::number(codec->bits_per_coded_sample), \
false); +            setXmpTagString("Xmp.video.PixelDepth",  \
QString::number(codec->bits_per_coded_sample));  
             // ----------------------------
 
@@ -247,9 +247,9 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
                             break;
                     }
 
-                    setXmpTagString("Xmp.video.Orientation", QString::number(ori), false);
+                    setXmpTagString("Xmp.video.Orientation", QString::number(ori));
                     // Backport orientation in Exif
-                    setImageOrientation(ori, false);
+                    setImageOrientation(ori);
                 }
             }
            
@@ -259,7 +259,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
             if (entry)
             {
-                setXmpTagString("Xmp.video.Language", QString::fromUtf8(entry->value), false);
+                setXmpTagString("Xmp.video.Language", QString::fromUtf8(entry->value));
             }
 
             // --------------
@@ -270,7 +270,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
             {
                 QDateTime dt = QDateTime::fromString(QString::fromUtf8(entry->value), Qt::ISODate);
                 setXmpTagString("Xmp.video.TrackCreateDate",
-                                QString::number(s_secondsSinceJanuary1904(dt)), false);
+                                QString::number(s_secondsSinceJanuary1904(dt)));
             }
         }
     }
@@ -320,7 +320,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.InfoText", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.InfoText", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -329,7 +329,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Subject", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Subject", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -338,7 +338,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.SoftwareVersion", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.SoftwareVersion", QString::fromUtf8(entry->value));
     }
     else
     {
@@ -346,7 +346,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
         if (entry)
         {
-            setXmpTagString("Xmp.video.SoftwareVersion", QString::fromUtf8(entry->value), false);
+            setXmpTagString("Xmp.video.SoftwareVersion", QString::fromUtf8(entry->value));
         }
     }
 
@@ -356,7 +356,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.FirmwareVersion", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.FirmwareVersion", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -365,7 +365,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Composer", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Composer", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -374,7 +374,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Lyrics", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Lyrics", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -383,7 +383,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Performers", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Performers", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -392,7 +392,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Producer", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Producer", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -401,7 +401,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value));
     }
     else
     {
@@ -409,7 +409,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
         if (entry)
         {
-            setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value), false);
+            setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value));
         }
         else
         {
@@ -417,7 +417,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
             if (entry)
             {
-                setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value), false);
+                setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value));
             }
         }
     }
@@ -428,7 +428,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Director", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Director", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -437,7 +437,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Medium", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Medium", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -446,7 +446,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Grouping", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Grouping", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -455,7 +455,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Encoder", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Encoder", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -464,7 +464,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Subtitle", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Subtitle", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -473,7 +473,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.SourceCredits", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.SourceCredits", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -482,7 +482,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Format", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Format", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -491,7 +491,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Rating", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Rating", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -500,7 +500,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Make", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Make", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -509,7 +509,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Model", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Model", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -518,7 +518,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.URL", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.URL", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -527,7 +527,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Title", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Title", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -536,7 +536,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Artist", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -545,7 +545,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Copyright", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Copyright", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -555,9 +555,9 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     if (entry)
     {
         QString data = QString::fromUtf8(entry->value);
-        setXmpTagString("Xmp.video.Comment",     data, false);
+        setXmpTagString("Xmp.video.Comment", data);
         // Backport comment in Exif
-        setExifComment(data, false);
+        setExifComment(data);
     }
 
     // --------------
@@ -566,7 +566,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Information", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Information", QString::fromUtf8(entry->value));
     }
     else
     {
@@ -574,7 +574,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
         if (entry)
         {
-            setXmpTagString("Xmp.video.Information", QString::fromUtf8(entry->value), false);
+            setXmpTagString("Xmp.video.Information", QString::fromUtf8(entry->value));
         }
     }
 
@@ -584,7 +584,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Album", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Album", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -593,7 +593,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
     if (entry)
     {
-        setXmpTagString("Xmp.video.Genre", QString::fromUtf8(entry->value), false);
+        setXmpTagString("Xmp.video.Genre", QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -608,7 +608,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
         int track = value.toInt(&ok);
 
         if (ok && track)
-            setXmpTagString("Xmp.video.TrackNumber", QString::number(track), false);
+            setXmpTagString("Xmp.video.TrackNumber", QString::number(track));
     }
 
     // --------------
@@ -618,7 +618,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     if (entry)
     {
         int year = QString::fromUtf8(entry->value).toInt();
-        setXmpTagString("Xmp.video.Year", QString::number(year), false);
+        setXmpTagString("Xmp.video.Year", QString::number(year));
     }
 
     // --------------
@@ -628,11 +628,11 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     if (entry)
     {
         QString data = QString::fromUtf8(entry->value);
-        setXmpTagString("Xmp.video.DateTimeOriginal", data, false);
-        setXmpTagString("Xmp.video.DateTimeDigitized", data, false);
+        setXmpTagString("Xmp.video.DateTimeOriginal", data);
+        setXmpTagString("Xmp.video.DateTimeDigitized", data);
         // Backport date in Exif and Iptc.
         QDateTime dt = QDateTime::fromString(data, Qt::ISODate);
-        setImageDateTime(dt, true, false);
+        setImageDateTime(dt, true);
     }
 
     // --------------
@@ -642,7 +642,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     if (entry)
     {
         setXmpTagString("Xmp.video.ModificationDate",
-                        QString::fromUtf8(entry->value), false);
+                        QString::fromUtf8(entry->value));
     }
 
     // --------------
@@ -653,7 +653,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     {
         QDateTime dt = QDateTime::fromString(QString::fromUtf8(entry->value), Qt::ISODate);
         setXmpTagString("Xmp.video.MediaCreateDate",
-                        QString::number(s_secondsSinceJanuary1904(dt)), false);
+                        QString::number(s_secondsSinceJanuary1904(dt)));
     }
     
     // --------------
@@ -664,7 +664,7 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
     if (entry)
     {
         QString data     = QString::fromUtf8(entry->value);
-        setXmpTagString("Xmp.video.GPSCoordinates", data, false);
+        setXmpTagString("Xmp.video.GPSCoordinates", data);
 
         // Backport location in Exif.
         data.remove(QLatin1Char('/'));
@@ -691,16 +691,16 @@ bool DMetadata::loadUsingFFmpeg(const QString& filePath)
 
         if (b1 && b2)
         {
-            setGPSInfo(alt, lattitude, longitude, false);
+            setGPSInfo(alt, lattitude, longitude);
 
             setXmpTagString("Xmp.video.GPSLatitude",
-                            getXmpTagString("Xmp.exif.GPSLatitude"),  false);     
+                            getXmpTagString("Xmp.exif.GPSLatitude"));     
             setXmpTagString("Xmp.video.GPSLongitude",
-                            getXmpTagString("Xmp.exif.GPSLongitude"), false);    
+                            getXmpTagString("Xmp.exif.GPSLongitude"));    
             setXmpTagString("Xmp.video.GPSMapDatum",
-                            getXmpTagString("Xmp.exif.GPSMapDatum"),  false);      
+                            getXmpTagString("Xmp.exif.GPSMapDatum"));      
             setXmpTagString("Xmp.video.GPSVersionID",
-                            getXmpTagString("Xmp.exif.GPSVersionID"), false);     
+                            getXmpTagString("Xmp.exif.GPSVersionID"));     
         }
     }
 
diff --git a/libs/dmetadata/metaengine.cpp b/libs/dmetadata/metaengine.cpp
index 288bc9d439..0dba60ecb6 100644
--- a/libs/dmetadata/metaengine.cpp
+++ b/libs/dmetadata/metaengine.cpp
@@ -34,6 +34,7 @@
 // Local includes
 
 #include "digikam_debug.h"
+#include "digikam_version.h"
 
 namespace Digikam
 {
@@ -355,6 +356,11 @@ bool MetaEngine::load(const QString& filePath)
 
 bool MetaEngine::save(const QString& imageFilePath) const
 {
+    if (!setProgramId())
+    {
+        return false;
+    }
+
     // If our image is really a symlink, we should follow the symlink so that
     // when we delete the file and rewrite it, we are honoring the symlink
     // (rather than just deleting it and putting a file there).
@@ -520,9 +526,11 @@ bool MetaEngine::updateFileTimeStamp() const
     return d->updateFileTimeStamp;
 }
 
-bool MetaEngine::setProgramId(bool /*on*/) const
+bool MetaEngine::setProgramId() const
 {
-    return true;
+    QString version(digiKamVersion());
+    QLatin1String software("digiKam");
+    return setImageProgramId(software, version);
 }
 
 }  // namespace Digikam
diff --git a/libs/dmetadata/metaengine.h b/libs/dmetadata/metaengine.h
index f1b46ba72b..4a1dc815b1 100644
--- a/libs/dmetadata/metaengine.h
+++ b/libs/dmetadata/metaengine.h
@@ -323,7 +323,7 @@ public:
     /** Set the size of image in pixels in Exif tags. Return true if size have been changed
         in metadata.
      */
-    bool setImageDimensions(const QSize& size, bool setProgramName=true) const;
+    bool setImageDimensions(const QSize& size) const;
 
     /** Return the image orientation set in Exif metadata. The makernotes of image are also parsed to
         get this information. See ImageOrientation values for details.
@@ -333,7 +333,7 @@ public:
     /** Set the Exif orientation tag of image. See ImageOrientation values for details
         Return true if orientation have been changed in metadata.
      */
-    bool setImageOrientation(ImageOrientation orientation, bool setProgramName=true) const;
+    bool setImageOrientation(ImageOrientation orientation) const;
 
     /** Return the image color-space set in Exif metadata. The makernotes of image are also parsed to
         get this information. See ImageColorWorkSpace values for details.
@@ -343,7 +343,7 @@ public:
     /** Set the Exif color-space tag of image. See ImageColorWorkSpace values for details
         Return true if work-space have been changed in metadata.
      */
-    bool setImageColorWorkSpace(ImageColorWorkSpace workspace, bool setProgramName=true) const;
+    bool setImageColorWorkSpace(ImageColorWorkSpace workspace) const;
 
     /** Return the time stamp of image. Exif information are check in first, IPTC in second
         if image don't have Exif information. If no time stamp is found, a null date is returned.
@@ -353,8 +353,7 @@ public:
     /** Set the Exif and Iptc time stamp. If 'setDateTimeDigitized' parameter is true, the 'Digitalized'
         time stamp is set, else only 'Created' time stamp is set.
      */
-    bool setImageDateTime(const QDateTime& dateTime, bool setDateTimeDigitized=false,
-                          bool setProgramName=true) const;
+    bool setImageDateTime(const QDateTime& dateTime, bool setDateTimeDigitized=false) const;
 
     /** Return the digitization time stamp of the image. First Exif information is checked, then IPTC.
         If no digitization time stamp is found, getImageDateTime() is called if fallbackToCreationTime
@@ -373,7 +372,7 @@ public:
         Re-implemente this method if you want to use another image file format than JPEG to
         save preview.
     */
-    virtual bool setImagePreview(const QImage& preview, bool setProgramName=true) const;
+    virtual bool setImagePreview(const QImage& preview) const;
 
     //@}
 
@@ -470,13 +469,13 @@ public:
     /** Set the Exif Thumbnail image. The thumbnail image must have the right dimensions before.
         Look Exif specification for details. Return true if thumbnail have been changed in metadata.
      */
-    bool setExifThumbnail(const QImage& thumb, bool setProgramName=true) const;
+    bool setExifThumbnail(const QImage& thumb) const;
 
     /** Remove the Exif Thumbnail from the image */
     bool removeExifThumbnail() const;
 
     /** Adds a JPEG thumbnail to a TIFF images. Use this instead of setExifThumbnail for TIFF images. */
-    bool setTiffThumbnail(const QImage& thumb, bool setProgramName=true) const;
+    bool setTiffThumbnail(const QImage& thumb) const;
 
     /** Return a QString copy of Exif user comments. Return a null string if user comments cannot
         be found.
@@ -486,7 +485,7 @@ public:
     /** Set the Exif user comments from image. Look Exif specification for more details about this tag.
         Return true if Exif user comments have been changed in metadata.
      */
-    bool setExifComment(const QString& comment, bool setProgramName=true) const;
+    bool setExifComment(const QString& comment) const;
 
     /** Get an Exif tags content like a string. If 'escapeCR' parameter is true, the CR characters
         will be removed. If Exif tag cannot be found a null string is returned.
@@ -495,7 +494,7 @@ public:
 
     /** Set an Exif tag content using a string. Return true if tag is set successfully.
      */
-    bool setExifTagString(const char* exifTagName, const QString& value, bool setProgramName=true) \
const; +    bool setExifTagString(const char* exifTagName, const QString& value) const;
 
     /** Get an Exif tag content like a long value. Return true if Exif tag be found.
      */
@@ -507,7 +506,7 @@ public:
 
     /** Set an Exif tag content using a long value. Return true if tag is set successfully.
      */
-    bool setExifTagLong(const char* exifTagName, long val, bool setProgramName=true) const;
+    bool setExifTagLong(const char* exifTagName, long val) const;
 
     /** Get the 'component' index of an Exif tags content like a rational value.
         'num' and 'den' are the numerator and the denominator of the rational value.
@@ -519,7 +518,7 @@ public:
         'num' and 'den' are the numerator and the denominator of the rational value.
         Return true if tag is set successfully.
      */
-    bool setExifTagRational(const char* exifTagName, long int num, long int den, bool \
setProgramName=true) const; +    bool setExifTagRational(const char* exifTagName, long int num, long int \
den) const;  
     /** Get an Exif tag content like a bytes array. Return an empty bytes array if Exif
         tag cannot be found.
@@ -528,7 +527,7 @@ public:
 
     /** Set an Exif tag content using a bytes array. Return true if tag is set successfully.
      */
-    bool setExifTagData(const char* exifTagName, const QByteArray& data, bool setProgramName=true) \
const; +    bool setExifTagData(const char* exifTagName, const QByteArray& data) const;
 
     /** Get an Exif tags content as a QVariant. Returns a null QVariant if the Exif
         tag cannot be found.
@@ -547,12 +546,12 @@ public:
         Setting a value with multiple components is currently not supported.
      */
     bool setExifTagVariant(const char* exifTagName, const QVariant& data,
-                           bool rationalWantSmallDenominator=true, bool setProgramName=true) const;
+                           bool rationalWantSmallDenominator=true) const;
 
     /** Remove the Exif tag 'exifTagName' from Exif metadata. Return true if tag is
         removed successfully or if no tag was present.
      */
-    bool removeExifTag(const char* exifTagName, bool setProgramName=true) const;
+    bool removeExifTag(const char* exifTagName) const;
 
     /** Return the Exif Tag title or a null string.
      */
@@ -631,7 +630,7 @@ public:
 
     /** Set an Iptc tag content using a string. Return true if tag is set successfully.
      */
-    bool setIptcTagString(const char* iptcTagName, const QString& value, bool setProgramName=true) \
const; +    bool setIptcTagString(const char* iptcTagName, const QString& value) const;
 
     /** Returns a strings list with of multiple Iptc tags from the image. Return an empty list if no tag \
                is found. */
     /** Get the values of all IPTC tags with the given tag name in a string list.
@@ -646,8 +645,7 @@ public:
         of one entry. Return true if all tags have been set successfully.
      */
     bool setIptcTagsStringList(const char* iptcTagName, int maxSize,
-                               const QStringList& oldValues, const QStringList& newValues,
-                               bool setProgramName=true) const;
+                               const QStringList& oldValues, const QStringList& newValues) const;
 
     /** Get an Iptc tag content as a bytes array. Return an empty bytes array if Iptc
         tag cannot be found.
@@ -656,12 +654,12 @@ public:
 
     /** Set an Iptc tag content using a bytes array. Return true if tag is set successfully.
      */
-    bool setIptcTagData(const char* iptcTagName, const QByteArray& data, bool setProgramName=true) \
const; +    bool setIptcTagData(const char* iptcTagName, const QByteArray& data) const;
 
     /** Remove the all instance of Iptc tags 'iptcTagName' from Iptc metadata. Return true if all
         tags have been removed successfully (or none were present).
      */
-    bool removeIptcTag(const char* iptcTagName, bool setProgramName=true) const;
+    bool removeIptcTag(const char* iptcTagName) const;
 
     /** Return the Iptc Tag title or a null string.
      */
@@ -700,8 +698,7 @@ public:
         all new keywords with all old keywords to prevent duplicate entries in image. Return true if \
keywords  have been changed in metadata.
      */
-    bool setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords,
-                         bool setProgramName=true) const;
+    bool setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords) const;
 
     /** Return a strings list of Iptc subjects from image. Return an empty list if no subject are set.
      */
@@ -712,8 +709,7 @@ public:
         all new subjects with all old subjects to prevent duplicate entries in image. Return true if \
subjects  have been changed in metadata.
      */
-    bool setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects,
-                         bool setProgramName=true) const;
+    bool setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects) const;
 
     /** Return a strings list of Iptc sub-categories from image. Return an empty list if no sub-category
         are set.
@@ -725,8 +721,7 @@ public:
         from image. The method will compare all new sub-categories with all old sub-categories to \
                prevent
         duplicate entries in image. Return true if sub-categories have been changed in metadata.
      */
-    bool setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& newSubCategories,
-                              bool setProgramName=true) const;
+    bool setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& newSubCategories) \
const;  
     //@}
 
@@ -767,15 +762,14 @@ public:
 
     /** Set a Xmp tag content using a string. Return true if tag is set successfully.
      */
-    bool setXmpTagString(const char* xmpTagName, const QString& value,
-                         bool setProgramName=true) const;
+    bool setXmpTagString(const char* xmpTagName, const QString& value) const;
 
     /** Set a Xmp tag with a specific type. Return true if tag is set successfully.
      *  This method only accept NormalTag, ArrayBagTag and StructureTag.
      *  Other XmpTagTypes do nothing
      */
     bool setXmpTagString(const char* xmpTagName, const QString& value,
-                         XmpTagType type,bool setProgramName=true) const;
+                         XmpTagType type) const;
 
     /** Return the Xmp Tag title or a null string.
      */
@@ -816,8 +810,7 @@ public:
         description for details. If tag already exist, it wil be removed before.
         Return true if tag is set successfully.
      */
-    bool setXmpTagStringListLangAlt(const char* xmpTagName, const MetaEngine::AltLangMap& values,
-                                    bool setProgramName) const;
+    bool setXmpTagStringListLangAlt(const char* xmpTagName, const MetaEngine::AltLangMap& values) const;
 
     /** Get a Xmp tag content like a string set with an alternative language
         header 'langAlt' (like "fr-FR" for French - RFC3066 notation)
@@ -832,7 +825,7 @@ public:
         Return true if tag is set successfully.
      */
     bool setXmpTagStringLangAlt(const char* xmpTagName, const QString& value,
-                                const QString& langAlt, bool setProgramName=true) const;
+                                const QString& langAlt) const;
 
     /** Get a Xmp tag content like a sequence of strings. If 'escapeCR' parameter is true, the CR \
                characters
         will be removed from strings. If Xmp tag cannot be found a null string list is returned.
@@ -842,8 +835,7 @@ public:
     /** Set a Xmp tag content using the sequence of strings 'seq'.
         Return true if tag is set successfully.
      */
-    bool setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq,
-                            bool setProgramName=true) const;
+    bool setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq) const;
 
     /** Get a Xmp tag content like a bag of strings. If 'escapeCR' parameter is true, the CR characters
         will be removed from strings. If Xmp tag cannot be found a null string list is returned.
@@ -853,23 +845,20 @@ public:
     /** Set a Xmp tag content using the bag of strings 'bag'.
         Return true if tag is set successfully.
      */
-    bool setXmpTagStringBag(const char* xmpTagName, const QStringList& bag,
-                            bool setProgramName=true) const;
+    bool setXmpTagStringBag(const char* xmpTagName, const QStringList& bag) const;
 
     /** Set an Xmp tag content using a list of strings defined by the 'entriesToAdd' parameter.
         The existing entries are preserved. The method will compare
         all new with all already existing entries to prevent duplicates in the image.
         Return true if the entries have been added to metadata.
      */
-    bool addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd,
-                              bool setProgramName) const;
+    bool addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd) const;
 
     /** Remove those Xmp tag entries that are listed in entriesToRemove from the entries in metadata.
         Return true if tag entries are no longer contained in metadata.
         All other entries are preserved.
      */
-    bool removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove,
-                                   bool setProgramName) const;
+    bool removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove) const;
 
     /** Get an Xmp tag content as a QVariant. Returns a null QVariant if the Xmp
         tag cannot be found.
@@ -892,12 +881,12 @@ public:
         all new keywords with all already existing keywords to prevent duplicate entries in image.
         Return true if keywords have been changed in metadata.
      */
-    bool setXmpKeywords(const QStringList& newKeywords, bool setProgramName=true) const;
+    bool setXmpKeywords(const QStringList& newKeywords) const;
 
     /** Remove those Xmp keywords that are listed in keywordsToRemove from the keywords in metadata.
         Return true if keywords are no longer contained in metadata.
      */
-    bool removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName=true);
+    bool removeXmpKeywords(const QStringList& keywordsToRemove);
 
     /** Return a strings list of Xmp subjects from image. Return an empty list if no subject are set.
      */
@@ -908,12 +897,12 @@ public:
         all new subject with all already existing subject to prevent duplicate entries in image.
         Return true if subjects have been changed in metadata.
      */
-    bool setXmpSubjects(const QStringList& newSubjects, bool setProgramName=true) const;
+    bool setXmpSubjects(const QStringList& newSubjects) const;
 
     /** Remove those Xmp subjects that are listed in subjectsToRemove from the subjects in metadata.
         Return true if subjects are no longer contained in metadata.
      */
-    bool removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName=true);
+    bool removeXmpSubjects(const QStringList& subjectsToRemove);
 
     /** Return a strings list of Xmp sub-categories from image. Return an empty list if no sub-category
         are set.
@@ -925,17 +914,17 @@ public:
         all new sub-categories with all already existing sub-categories to prevent duplicate entries in \
image.  Return true if sub-categories have been changed in metadata.
      */
-    bool setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName=true) const;
+    bool setXmpSubCategories(const QStringList& newSubCategories) const;
 
     /** Remove those Xmp sub-categories that are listed in categoriesToRemove from the sub-categories in \
metadata.  Return true if subjects are no longer contained in metadata.
      */
-    bool removeXmpSubCategories(const QStringList& categoriesToRemove, bool setProgramName=true);
+    bool removeXmpSubCategories(const QStringList& categoriesToRemove);
 
     /** Remove the Xmp tag 'xmpTagName' from Xmp metadata. Return true if tag is
         removed successfully or if no tag was present.
      */
-    bool removeXmpTag(const char* xmpTagName, bool setProgramName=true) const;
+    bool removeXmpTag(const char* xmpTagName) const;
 
 
     /** Register a namespace which Exiv2 doesn't know yet. This is only needed
@@ -957,7 +946,7 @@ public:
 
     /** Make sure all static required GPS EXIF and XMP tags exist
      */
-    bool initializeGPSInfo(const bool setProgramName);
+    bool initializeGPSInfo();
 
     /** Get all GPS location information set in image. Return true if all information can be found.
      */
@@ -983,22 +972,22 @@ public:
     /** Set all GPS location information into image. Return true if all information have been
         changed in metadata.
      */
-    bool setGPSInfo(const double altitude, const double latitude, const double longitude, const bool \
setProgramName=true); +    bool setGPSInfo(const double altitude, const double latitude, const double \
longitude);  
     /** Set all GPS location information into image. Return true if all information have been
         changed in metadata. If you do not want altitude to be set, pass a null pointer.
      */
-    bool setGPSInfo(const double* const altitude, const double latitude, const double longitude, const \
bool setProgramName=true); +    bool setGPSInfo(const double* const altitude, const double latitude, \
const double longitude);  
     /** Set all GPS location information into image. Return true if all information have been
         changed in metadata.
      */
-    bool setGPSInfo(const double altitude, const QString& latitude, const QString& longitude, const bool \
setProgramName=true); +    bool setGPSInfo(const double altitude, const QString& latitude, const QString& \
longitude);  
     /** Remove all Exif tags relevant of GPS location information. Return true if all tags have been
         removed successfully in metadata.
      */
-    bool removeGPSInfo(const bool setProgramName=true);
+    bool removeGPSInfo();
 
     /** This method converts 'number' to a rational value, returned in the 'numerator' and
         'denominator' parameters. Set the precision using 'rounding' parameter.
@@ -1067,22 +1056,10 @@ public:
 
 protected:
 
-    /** Re-implement this method to set automatically the Program Name and Program Version
-        information in Exif and Iptc metadata if 'on' argument is true. This method is called by all \
                methods which
-        change tags in metadata. By default this method does nothing and returns true.
-
-        In digiKam this method is re-implementated like this:
-
-        if (on)
-        {
-            QString version(digikam_version);
-            QString software("digiKam");
-            return setImageProgramId(software, version);
-        }
-
-        return true;
+    /** Set the Program Name and Program Version
+        information in Exif and Iptc metadata
      */
-    virtual bool setProgramId(bool on=true) const;
+    bool setProgramId() const;
 
 private:
 
diff --git a/libs/dmetadata/metaengine_exif.cpp b/libs/dmetadata/metaengine_exif.cpp
index af5ed65eb8..7586b87fe6 100644
--- a/libs/dmetadata/metaengine_exif.cpp
+++ b/libs/dmetadata/metaengine_exif.cpp
@@ -304,11 +304,8 @@ static bool is7BitAscii(const QByteArray& s)
     return true;
 }
 
-bool MetaEngine::setExifComment(const QString& comment, bool setProgramName) const
+bool MetaEngine::setExifComment(const QString& comment) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         removeExifTag("Exif.Image.ImageDescription");
@@ -316,7 +313,7 @@ bool MetaEngine::setExifComment(const QString& comment, bool setProgramName) con
 
         if (!comment.isNull())
         {
-            setExifTagString("Exif.Image.ImageDescription", comment, setProgramName);
+            setExifTagString("Exif.Image.ImageDescription", comment);
 
             // Write as Unicode only when necessary.
             QTextCodec* latin1Codec = QTextCodec::codecForName("iso8859-1");
@@ -395,11 +392,8 @@ QString MetaEngine::getExifTagDescription(const char* exifTagName)
     return QString();
 }
 
-bool MetaEngine::removeExifTag(const char* exifTagName, bool setProgramName) const
+bool MetaEngine::removeExifTag(const char* exifTagName) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         Exiv2::ExifKey exifKey(exifTagName);
@@ -451,11 +445,8 @@ bool MetaEngine::getExifTagRational(const char* exifTagName, long int& num, long
     return false;
 }
 
-bool MetaEngine::setExifTagLong(const char* exifTagName, long val, bool setProgramName) const
+bool MetaEngine::setExifTagLong(const char* exifTagName, long val) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         d->exifMetadata()[exifTagName] = static_cast<int32_t>(val);
@@ -473,11 +464,8 @@ bool MetaEngine::setExifTagLong(const char* exifTagName, long val, bool setProgr
     return false;
 }
 
-bool MetaEngine::setExifTagRational(const char* exifTagName, long int num, long int den, bool \
setProgramName) const +bool MetaEngine::setExifTagRational(const char* exifTagName, long int num, long \
int den) const  {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         d->exifMetadata()[exifTagName] = Exiv2::Rational(num, den);
@@ -495,14 +483,11 @@ bool MetaEngine::setExifTagRational(const char* exifTagName, long int num, long
     return false;
 }
 
-bool MetaEngine::setExifTagData(const char* exifTagName, const QByteArray& data, bool setProgramName) \
const +bool MetaEngine::setExifTagData(const char* exifTagName, const QByteArray& data) const
 {
     if (data.isEmpty())
         return false;
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         Exiv2::DataValue val((Exiv2::byte*)data.data(), data.size());
@@ -522,7 +507,7 @@ bool MetaEngine::setExifTagData(const char* exifTagName, const QByteArray& data,
 }
 
 bool MetaEngine::setExifTagVariant(const char* exifTagName, const QVariant& val,
-                               bool rationalWantSmallDenominator, bool setProgramName) const
+                               bool rationalWantSmallDenominator) const
 {
     switch (val.type())
     {
@@ -531,7 +516,7 @@ bool MetaEngine::setExifTagVariant(const char* exifTagName, const QVariant& val,
         case QVariant::Bool:
         case QVariant::LongLong:
         case QVariant::ULongLong:
-            return setExifTagLong(exifTagName, val.toInt(), setProgramName);
+            return setExifTagLong(exifTagName, val.toInt());
 
         case QVariant::Double:
         {
@@ -542,7 +527,7 @@ bool MetaEngine::setExifTagVariant(const char* exifTagName, const QVariant& val,
             else
                 convertToRational(val.toDouble(), &num, &den, 4);
 
-            return setExifTagRational(exifTagName, num, den, setProgramName);
+            return setExifTagRational(exifTagName, num, den);
         }
         case QVariant::List:
         {
@@ -555,7 +540,7 @@ bool MetaEngine::setExifTagVariant(const char* exifTagName, const QVariant& val,
             if (list.size() >= 2)
                 den = list[1].toInt();
 
-            return setExifTagRational(exifTagName, num, den, setProgramName);
+            return setExifTagRational(exifTagName, num, den);
         }
 
         case QVariant::Date:
@@ -566,9 +551,6 @@ bool MetaEngine::setExifTagVariant(const char* exifTagName, const QVariant& val,
             if(!dateTime.isValid())
                 return false;
 
-            if (!setProgramId(setProgramName))
-                return false;
-
             try
             {
                 const std::string &exifdatetime(dateTime.toString(QString::fromLatin1("yyyy:MM:dd \
hh:mm:ss")).toLatin1().constData()); @@ -588,10 +570,10 @@ bool MetaEngine::setExifTagVariant(const char* \
exifTagName, const QVariant& val,  
         case QVariant::String:
         case QVariant::Char:
-            return setExifTagString(exifTagName, val.toString(), setProgramName);
+            return setExifTagString(exifTagName, val.toString());
 
         case QVariant::ByteArray:
-            return setExifTagData(exifTagName, val.toByteArray(), setProgramName);
+            return setExifTagData(exifTagName, val.toByteArray());
         default:
             break;
     }
@@ -874,11 +856,8 @@ QString MetaEngine::getExifTagString(const char* exifTagName, bool escapeCR) con
     return QString();
 }
 
-bool MetaEngine::setExifTagString(const char* exifTagName, const QString& value, bool setProgramName) \
const +bool MetaEngine::setExifTagString(const char* exifTagName, const QString& value) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         d->exifMetadata()[exifTagName] = std::string(value.toLatin1().constData());
@@ -960,11 +939,8 @@ bool MetaEngine::rotateExifQImage(QImage& image, ImageOrientation orientation) c
     return false;
 }
 
-bool MetaEngine::setExifThumbnail(const QImage& thumbImage, bool setProgramName) const
+bool MetaEngine::setExifThumbnail(const QImage& thumbImage) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     if (thumbImage.isNull())
     {
         return removeExifThumbnail();
@@ -993,11 +969,8 @@ bool MetaEngine::setExifThumbnail(const QImage& thumbImage, bool setProgramName)
     return false;
 }
 
-bool MetaEngine::setTiffThumbnail(const QImage& thumbImage, bool setProgramName) const
+bool MetaEngine::setTiffThumbnail(const QImage& thumbImage) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     removeExifThumbnail();
 
     try
diff --git a/libs/dmetadata/metaengine_gps.cpp b/libs/dmetadata/metaengine_gps.cpp
index f178b30df4..1635fcdd49 100644
--- a/libs/dmetadata/metaengine_gps.cpp
+++ b/libs/dmetadata/metaengine_gps.cpp
@@ -317,11 +317,8 @@ QString MetaEngine::getGPSLongitudeString() const
     return convertToGPSCoordinateString(false, longitude);
 }
 
-bool MetaEngine::initializeGPSInfo(const bool setProgramName)
+bool MetaEngine::initializeGPSInfo()
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // TODO: what happens if these already exist?
@@ -337,8 +334,8 @@ bool MetaEngine::initializeGPSInfo(const bool setProgramName)
         d->exifMetadata()["Exif.GPSInfo.GPSMapDatum"] = "WGS-84";
 
 #ifdef _XMP_SUPPORT_
-        setXmpTagString("Xmp.exif.GPSVersionID", QString::fromLatin1("2.0.0.0"), false);
-        setXmpTagString("Xmp.exif.GPSMapDatum",  QString::fromLatin1("WGS-84"),  false);
+        setXmpTagString("Xmp.exif.GPSVersionID", QString::fromLatin1("2.0.0.0"));
+        setXmpTagString("Xmp.exif.GPSMapDatum",  QString::fromLatin1("WGS-84"));
 #endif // _XMP_SUPPORT_
 
         return true;
@@ -355,23 +352,20 @@ bool MetaEngine::initializeGPSInfo(const bool setProgramName)
     return false;
 }
 
-bool MetaEngine::setGPSInfo(const double altitude, const double latitude, const double longitude, const \
bool setProgramName) +bool MetaEngine::setGPSInfo(const double altitude, const double latitude, const \
double longitude)  {
-    return setGPSInfo(&altitude, latitude, longitude, setProgramName);
+    return setGPSInfo(&altitude, latitude, longitude);
 }
 
-bool MetaEngine::setGPSInfo(const double* const altitude, const double latitude, const double longitude, \
const bool setProgramName) +bool MetaEngine::setGPSInfo(const double* const altitude, const double \
latitude, const double longitude)  {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // In first, we need to clean up all existing GPS info.
-        removeGPSInfo(setProgramName);
+        removeGPSInfo();
 
         // now re-initialize the GPS info:
-        if (!initializeGPSInfo(setProgramName))
+        if (!initializeGPSInfo())
             return false;
 
         char scratchBuf[100];
@@ -397,8 +391,8 @@ bool MetaEngine::setGPSInfo(const double* const altitude, const double latitude,
             d->exifMetadata()["Exif.GPSInfo.GPSAltitude"] = scratchBuf;
 
 #ifdef _XMP_SUPPORT_
-            setXmpTagString("Xmp.exif.GPSAltitudeRef", ((*altitude) >= 0) ? QString::fromLatin1("0") : \
                QString::fromLatin1("1"), false);
-            setXmpTagString("Xmp.exif.GPSAltitude",    QString::fromLatin1(scratchBuf),                  \
false); +            setXmpTagString("Xmp.exif.GPSAltitudeRef", ((*altitude) >= 0) ? \
QString::fromLatin1("0") : QString::fromLatin1("1")); +            \
setXmpTagString("Xmp.exif.GPSAltitude",    QString::fromLatin1(scratchBuf));  #endif // _XMP_SUPPORT_
         }
 
@@ -434,8 +428,8 @@ bool MetaEngine::setGPSInfo(const double* const altitude, const double latitude,
          * because the reference is included in Xmp.exif.GPSLatitude.
          * Is there a historic reason for writing it anyway?
          */
-        setXmpTagString("Xmp.exif.GPSLatitudeRef", (latitude < 0) ? QString::fromLatin1("S") : \
                QString::fromLatin1("N"), false);
-        setXmpTagString("Xmp.exif.GPSLatitude",    convertToGPSCoordinateString(true, latitude),         \
false); +        setXmpTagString("Xmp.exif.GPSLatitudeRef", (latitude < 0) ? QString::fromLatin1("S") : \
QString::fromLatin1("N")); +        setXmpTagString("Xmp.exif.GPSLatitude",    \
convertToGPSCoordinateString(true, latitude));  #endif // _XMP_SUPPORT_
 
         // LONGITUDE
@@ -469,8 +463,8 @@ bool MetaEngine::setGPSInfo(const double* const altitude, const double latitude,
          * because the reference is included in Xmp.exif.GPSLongitude.
          * Is there a historic reason for writing it anyway?
          */
-        setXmpTagString("Xmp.exif.GPSLongitudeRef", (longitude < 0) ? QString::fromLatin1("W") : \
                QString::fromLatin1("E"), false);
-        setXmpTagString("Xmp.exif.GPSLongitude",    convertToGPSCoordinateString(false, longitude),      \
false); +        setXmpTagString("Xmp.exif.GPSLongitudeRef", (longitude < 0) ? QString::fromLatin1("W") : \
QString::fromLatin1("E")); +        setXmpTagString("Xmp.exif.GPSLongitude",    \
convertToGPSCoordinateString(false, longitude));  #endif // _XMP_SUPPORT_
 
         return true;
@@ -487,7 +481,7 @@ bool MetaEngine::setGPSInfo(const double* const altitude, const double latitude,
     return false;
 }
 
-bool MetaEngine::setGPSInfo(const double altitude, const QString& latitude, const QString& longitude, \
const bool setProgramName) +bool MetaEngine::setGPSInfo(const double altitude, const QString& latitude, \
const QString& longitude)  {
     double longitudeValue, latitudeValue;
 
@@ -497,14 +491,11 @@ bool MetaEngine::setGPSInfo(const double altitude, const QString& latitude, cons
     if (!convertFromGPSCoordinateString(longitude, &longitudeValue))
         return false;
 
-    return setGPSInfo(&altitude, latitudeValue, longitudeValue, setProgramName);
+    return setGPSInfo(&altitude, latitudeValue, longitudeValue);
 }
 
-bool MetaEngine::removeGPSInfo(const bool setProgramName)
+bool MetaEngine::removeGPSInfo()
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QStringList gpsTagsKeys;
@@ -532,34 +523,34 @@ bool MetaEngine::removeGPSInfo(const bool setProgramName)
          * and Xmp.exif.GPSLatitudeRef. But because we write them in setGPSInfo(),
          * we should also remove them here.
          */
-        removeXmpTag("Xmp.exif.GPSLatitudeRef", false);
-        removeXmpTag("Xmp.exif.GPSLongitudeRef", false);
-        removeXmpTag("Xmp.exif.GPSVersionID", false);
-        removeXmpTag("Xmp.exif.GPSLatitude", false);
-        removeXmpTag("Xmp.exif.GPSLongitude", false);
-        removeXmpTag("Xmp.exif.GPSAltitudeRef", false);
-        removeXmpTag("Xmp.exif.GPSAltitude", false);
-        removeXmpTag("Xmp.exif.GPSTimeStamp", false);
-        removeXmpTag("Xmp.exif.GPSSatellites", false);
-        removeXmpTag("Xmp.exif.GPSStatus", false);
-        removeXmpTag("Xmp.exif.GPSMeasureMode", false);
-        removeXmpTag("Xmp.exif.GPSDOP", false);
-        removeXmpTag("Xmp.exif.GPSSpeedRef", false);
-        removeXmpTag("Xmp.exif.GPSSpeed", false);
-        removeXmpTag("Xmp.exif.GPSTrackRef", false);
-        removeXmpTag("Xmp.exif.GPSTrack", false);
-        removeXmpTag("Xmp.exif.GPSImgDirectionRef", false);
-        removeXmpTag("Xmp.exif.GPSImgDirection", false);
-        removeXmpTag("Xmp.exif.GPSMapDatum", false);
-        removeXmpTag("Xmp.exif.GPSDestLatitude", false);
-        removeXmpTag("Xmp.exif.GPSDestLongitude", false);
-        removeXmpTag("Xmp.exif.GPSDestBearingRef", false);
-        removeXmpTag("Xmp.exif.GPSDestBearing", false);
-        removeXmpTag("Xmp.exif.GPSDestDistanceRef", false);
-        removeXmpTag("Xmp.exif.GPSDestDistance", false);
-        removeXmpTag("Xmp.exif.GPSProcessingMethod", false);
-        removeXmpTag("Xmp.exif.GPSAreaInformation", false);
-        removeXmpTag("Xmp.exif.GPSDifferential", false);
+        removeXmpTag("Xmp.exif.GPSLatitudeRef");
+        removeXmpTag("Xmp.exif.GPSLongitudeRef");
+        removeXmpTag("Xmp.exif.GPSVersionID");
+        removeXmpTag("Xmp.exif.GPSLatitude");
+        removeXmpTag("Xmp.exif.GPSLongitude");
+        removeXmpTag("Xmp.exif.GPSAltitudeRef");
+        removeXmpTag("Xmp.exif.GPSAltitude");
+        removeXmpTag("Xmp.exif.GPSTimeStamp");
+        removeXmpTag("Xmp.exif.GPSSatellites");
+        removeXmpTag("Xmp.exif.GPSStatus");
+        removeXmpTag("Xmp.exif.GPSMeasureMode");
+        removeXmpTag("Xmp.exif.GPSDOP");
+        removeXmpTag("Xmp.exif.GPSSpeedRef");
+        removeXmpTag("Xmp.exif.GPSSpeed");
+        removeXmpTag("Xmp.exif.GPSTrackRef");
+        removeXmpTag("Xmp.exif.GPSTrack");
+        removeXmpTag("Xmp.exif.GPSImgDirectionRef");
+        removeXmpTag("Xmp.exif.GPSImgDirection");
+        removeXmpTag("Xmp.exif.GPSMapDatum");
+        removeXmpTag("Xmp.exif.GPSDestLatitude");
+        removeXmpTag("Xmp.exif.GPSDestLongitude");
+        removeXmpTag("Xmp.exif.GPSDestBearingRef");
+        removeXmpTag("Xmp.exif.GPSDestBearing");
+        removeXmpTag("Xmp.exif.GPSDestDistanceRef");
+        removeXmpTag("Xmp.exif.GPSDestDistance");
+        removeXmpTag("Xmp.exif.GPSProcessingMethod");
+        removeXmpTag("Xmp.exif.GPSAreaInformation");
+        removeXmpTag("Xmp.exif.GPSDifferential");
 #endif // _XMP_SUPPORT_
 
         return true;
diff --git a/libs/dmetadata/metaengine_image.cpp b/libs/dmetadata/metaengine_image.cpp
index 1fd33bf171..ebac1d5aaa 100644
--- a/libs/dmetadata/metaengine_image.cpp
+++ b/libs/dmetadata/metaengine_image.cpp
@@ -74,10 +74,10 @@ bool MetaEngine::setImageProgramId(const QString& program, const QString& versio
             Exiv2::XmpData::const_iterator it = xmpData.findKey(key);
 
             if (it == xmpData.end())
-                setXmpTagString("Xmp.xmp.CreatorTool", software, false);
+                setXmpTagString("Xmp.xmp.CreatorTool", software);
         }
 
-        setXmpTagString("Xmp.tiff.Software", software, false);
+        setXmpTagString("Xmp.tiff.Software", software);
 
 #endif // _XMP_SUPPORT_
 
@@ -200,11 +200,8 @@ QSize MetaEngine::getImageDimensions() const
     return QSize();
 }
 
-bool MetaEngine::setImageDimensions(const QSize& size, bool setProgramName) const
+bool MetaEngine::setImageDimensions(const QSize& size) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // Set Exif values.
@@ -219,10 +216,10 @@ bool MetaEngine::setImageDimensions(const QSize& size, bool setProgramName) cons
 
 #ifdef _XMP_SUPPORT_
 
-        setXmpTagString("Xmp.tiff.ImageWidth",      QString::number(size.width()),  false);
-        setXmpTagString("Xmp.tiff.ImageLength",     QString::number(size.height()), false);
-        setXmpTagString("Xmp.exif.PixelXDimension", QString::number(size.width()),  false);
-        setXmpTagString("Xmp.exif.PixelYDimension", QString::number(size.height()), false);
+        setXmpTagString("Xmp.tiff.ImageWidth",      QString::number(size.width()));
+        setXmpTagString("Xmp.tiff.ImageLength",     QString::number(size.height()));
+        setXmpTagString("Xmp.exif.PixelXDimension", QString::number(size.width()));
+        setXmpTagString("Xmp.exif.PixelYDimension", QString::number(size.height()));
 
 #endif // _XMP_SUPPORT_
 
@@ -341,11 +338,8 @@ MetaEngine::ImageOrientation MetaEngine::getImageOrientation() const
     return ORIENTATION_UNSPECIFIED;
 }
 
-bool MetaEngine::setImageOrientation(ImageOrientation orientation, bool setProgramName) const
+bool MetaEngine::setImageOrientation(ImageOrientation orientation) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         if (orientation < ORIENTATION_UNSPECIFIED || orientation > ORIENTATION_ROT_270)
@@ -363,7 +357,7 @@ bool MetaEngine::setImageOrientation(ImageOrientation orientation, bool setProgr
 
 #ifdef _XMP_SUPPORT_
 
-        setXmpTagString("Xmp.tiff.Orientation", QString::number((int)orientation), false);
+        setXmpTagString("Xmp.tiff.Orientation", QString::number((int)orientation));
 
 #endif // _XMP_SUPPORT_
 
@@ -498,11 +492,8 @@ MetaEngine::ImageColorWorkSpace MetaEngine::getImageColorWorkSpace() const
     return WORKSPACE_UNSPECIFIED;
 }
 
-bool MetaEngine::setImageColorWorkSpace(ImageColorWorkSpace workspace, bool setProgramName) const
+bool MetaEngine::setImageColorWorkSpace(ImageColorWorkSpace workspace) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // Set Exif value.
@@ -513,7 +504,7 @@ bool MetaEngine::setImageColorWorkSpace(ImageColorWorkSpace workspace, bool setP
 
 #ifdef _XMP_SUPPORT_
 
-        setXmpTagString("Xmp.exif.ColorSpace", QString::number((int)workspace), false);
+        setXmpTagString("Xmp.exif.ColorSpace", QString::number((int)workspace));
 
 #endif // _XMP_SUPPORT_
 
@@ -837,14 +828,11 @@ QDateTime MetaEngine::getImageDateTime() const
     return QDateTime();
 }
 
-bool MetaEngine::setImageDateTime(const QDateTime& dateTime, bool setDateTimeDigitized, bool \
setProgramName) const +bool MetaEngine::setImageDateTime(const QDateTime& dateTime, bool \
setDateTimeDigitized) const  {
     if (!dateTime.isValid())
         return false;
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // In first we write date & time into Exif.
@@ -1056,11 +1044,8 @@ bool MetaEngine::getImagePreview(QImage& preview) const
     return false;
 }
 
-bool MetaEngine::setImagePreview(const QImage& preview, bool setProgramName) const
+bool MetaEngine::setImagePreview(const QImage& preview) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     if (preview.isNull())
     {
         removeIptcTag("Iptc.Application2.Preview");
diff --git a/libs/dmetadata/metaengine_iptc.cpp b/libs/dmetadata/metaengine_iptc.cpp
index 6934769d28..29b188e108 100644
--- a/libs/dmetadata/metaengine_iptc.cpp
+++ b/libs/dmetadata/metaengine_iptc.cpp
@@ -295,11 +295,8 @@ QString MetaEngine::getIptcTagDescription(const char* iptcTagName)
     return QString();
 }
 
-bool MetaEngine::removeIptcTag(const char* iptcTagName, bool setProgramName) const
+bool MetaEngine::removeIptcTag(const char* iptcTagName) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         Exiv2::IptcData::iterator it = d->iptcMetadata().begin();
@@ -335,14 +332,11 @@ bool MetaEngine::removeIptcTag(const char* iptcTagName, bool setProgramName) con
     return false;
 }
 
-bool MetaEngine::setIptcTagData(const char* iptcTagName, const QByteArray& data, bool setProgramName) \
const +bool MetaEngine::setIptcTagData(const char* iptcTagName, const QByteArray& data) const
 {
     if (data.isEmpty())
         return false;
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         Exiv2::DataValue val((Exiv2::byte *)data.data(), data.size());
@@ -422,11 +416,8 @@ QString MetaEngine::getIptcTagString(const char* iptcTagName, bool escapeCR) con
     return QString();
 }
 
-bool MetaEngine::setIptcTagString(const char* iptcTagName, const QString& value, bool setProgramName) \
const +bool MetaEngine::setIptcTagString(const char* iptcTagName, const QString& value) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         d->iptcMetadata()[iptcTagName] = std::string(value.toUtf8().constData());
@@ -487,12 +478,8 @@ QStringList MetaEngine::getIptcTagsStringList(const char* iptcTagName, bool esca
 }
 
 bool MetaEngine::setIptcTagsStringList(const char* iptcTagName, int maxSize,
-                                       const QStringList& oldValues, const QStringList& newValues,
-                                       bool setProgramName) const
+                                       const QStringList& oldValues, const QStringList& newValues) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QStringList oldvals = oldValues;
@@ -536,7 +523,7 @@ bool MetaEngine::setIptcTagsStringList(const char* iptcTagName, int maxSize,
         d->iptcMetadata() = iptcData;
 
         // Make sure character set is UTF-8
-        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"), false);
+        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"));
 
         return true;
     }
@@ -589,12 +576,8 @@ QStringList MetaEngine::getIptcKeywords() const
     return QStringList();
 }
 
-bool MetaEngine::setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords,
-                             bool setProgramName) const
+bool MetaEngine::setIptcKeywords(const QStringList& oldKeywords, const QStringList& newKeywords) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QStringList oldkeys = oldKeywords;
@@ -637,7 +620,7 @@ bool MetaEngine::setIptcKeywords(const QStringList& oldKeywords, const QStringLi
         d->iptcMetadata() = iptcData;
 
         // Make sure character set is UTF-8
-        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"), false);
+        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"));
 
         return true;
     }
@@ -688,12 +671,8 @@ QStringList MetaEngine::getIptcSubjects() const
     return QStringList();
 }
 
-bool MetaEngine::setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects,
-                                 bool setProgramName) const
+bool MetaEngine::setIptcSubjects(const QStringList& oldSubjects, const QStringList& newSubjects) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QStringList oldDef = oldSubjects;
@@ -731,7 +710,7 @@ bool MetaEngine::setIptcSubjects(const QStringList& oldSubjects, const QStringLi
         d->iptcMetadata() = iptcData;
 
         // Make sure character set is UTF-8
-        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"), false);
+        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"));
 
         return true;
     }
@@ -782,12 +761,8 @@ QStringList MetaEngine::getIptcSubCategories() const
     return QStringList();
 }
 
-bool MetaEngine::setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& \
                newSubCategories,
-                                      bool setProgramName) const
+bool MetaEngine::setIptcSubCategories(const QStringList& oldSubCategories, const QStringList& \
newSubCategories) const  {
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QStringList oldkeys = oldSubCategories;
@@ -826,7 +801,7 @@ bool MetaEngine::setIptcSubCategories(const QStringList& oldSubCategories, const
         d->iptcMetadata() = iptcData;
 
         // Make sure character set is UTF-8
-        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"), false);
+        setIptcTagString("Iptc.Envelope.CharacterSet", QString::fromLatin1("\33%G"));
 
         return true;
     }
diff --git a/libs/dmetadata/metaengine_xmp.cpp b/libs/dmetadata/metaengine_xmp.cpp
index 85d416badf..ae177b1648 100644
--- a/libs/dmetadata/metaengine_xmp.cpp
+++ b/libs/dmetadata/metaengine_xmp.cpp
@@ -380,13 +380,10 @@ QString MetaEngine::getXmpTagString(const char* xmpTagName, bool escapeCR) const
     return QString();
 }
 
-bool MetaEngine::setXmpTagString(const char* xmpTagName, const QString& value, bool setProgramName) \
const +bool MetaEngine::setXmpTagString(const char* xmpTagName, const QString& value) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         const std::string &txt(value.toUtf8().constData());
@@ -408,20 +405,16 @@ bool MetaEngine::setXmpTagString(const char* xmpTagName, const QString& value, b
 
     Q_UNUSED(xmpTagName);
     Q_UNUSED(value);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
     return false;
 }
 bool MetaEngine::setXmpTagString(const char* xmpTagName, const QString& value,
-                             MetaEngine::XmpTagType type, bool setProgramName) const
+                                 MetaEngine::XmpTagType type) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         const std::string &txt(value.toUtf8().constData());
@@ -460,7 +453,6 @@ bool MetaEngine::setXmpTagString(const char* xmpTagName, const QString& value,
 
     Q_UNUSED(xmpTagName);
     Q_UNUSED(value);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
@@ -516,14 +508,10 @@ MetaEngine::AltLangMap MetaEngine::getXmpTagStringListLangAlt(const char* xmpTag
     return AltLangMap();
 }
 
-bool MetaEngine::setXmpTagStringListLangAlt(const char* xmpTagName, const MetaEngine::AltLangMap& \
                values,
-                                        bool setProgramName) const
+bool MetaEngine::setXmpTagStringListLangAlt(const char* xmpTagName, const MetaEngine::AltLangMap& \
values) const  {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         // Remove old XMP alternative Language tag.
@@ -560,7 +548,6 @@ bool MetaEngine::setXmpTagStringListLangAlt(const char* xmpTagName, const MetaEn
 
     Q_UNUSED(xmpTagName);
     Q_UNUSED(values);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
@@ -620,13 +607,10 @@ QString MetaEngine::getXmpTagStringLangAlt(const char* xmpTagName, const QString
 }
 
 bool MetaEngine::setXmpTagStringLangAlt(const char* xmpTagName, const QString& value,
-                                        const QString& langAlt, bool setProgramName) const
+                                        const QString& langAlt) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         QString language(QString::fromLatin1("x-default")); // default alternative language.
@@ -675,7 +659,6 @@ bool MetaEngine::setXmpTagStringLangAlt(const char* xmpTagName, const QString& v
     Q_UNUSED(xmpTagName);
     Q_UNUSED(value);
     Q_UNUSED(langAlt);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
@@ -734,14 +717,10 @@ QStringList MetaEngine::getXmpTagStringSeq(const char* xmpTagName, bool escapeCR
     return QStringList();
 }
 
-bool MetaEngine::setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq,
-                                    bool setProgramName) const
+bool MetaEngine::setXmpTagStringSeq(const char* xmpTagName, const QStringList& seq) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         if (seq.isEmpty())
@@ -776,7 +755,6 @@ bool MetaEngine::setXmpTagStringSeq(const char* xmpTagName, const QStringList& s
 
     Q_UNUSED(xmpTagName);
     Q_UNUSED(seq);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
@@ -834,14 +812,10 @@ QStringList MetaEngine::getXmpTagStringBag(const char* xmpTagName, bool escapeCR
     return QStringList();
 }
 
-bool MetaEngine::setXmpTagStringBag(const char* xmpTagName, const QStringList& bag,
-                                    bool setProgramName) const
+bool MetaEngine::setXmpTagStringBag(const char* xmpTagName, const QStringList& bag) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         if (bag.isEmpty())
@@ -876,19 +850,14 @@ bool MetaEngine::setXmpTagStringBag(const char* xmpTagName, const QStringList& b
 
     Q_UNUSED(xmpTagName);
     Q_UNUSED(bag);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
     return false;
 }
 
-bool MetaEngine::addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd,
-                                       bool setProgramName) const
+bool MetaEngine::addToXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToAdd) const
 {
-    if (!setProgramId(setProgramName))
-        return false;
-
     QStringList oldEntries = getXmpTagStringBag(xmpTagName, false);
     QStringList newEntries = entriesToAdd;
 
@@ -899,18 +868,14 @@ bool MetaEngine::addToXmpTagStringBag(const char* xmpTagName, const QStringList&
             newEntries.append(*it);
     }
 
-    if (setXmpTagStringBag(xmpTagName, newEntries, false))
+    if (setXmpTagStringBag(xmpTagName, newEntries))
         return true;
 
     return false;
 }
 
-bool MetaEngine::removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove,
-                                       bool setProgramName) const
+bool MetaEngine::removeFromXmpTagStringBag(const char* xmpTagName, const QStringList& entriesToRemove) \
const  {
-    if (!setProgramId(setProgramName))
-        return false;
-
     QStringList currentEntries = getXmpTagStringBag(xmpTagName, false);
     QStringList newEntries;
 
@@ -921,7 +886,7 @@ bool MetaEngine::removeFromXmpTagStringBag(const char* xmpTagName, const QString
             newEntries.append(*it);
     }
 
-    if (setXmpTagStringBag(xmpTagName, newEntries, false))
+    if (setXmpTagStringBag(xmpTagName, newEntries))
         return true;
 
     return false;
@@ -1114,13 +1079,10 @@ bool MetaEngine::unregisterXmpNameSpace(const QString& uri)
     return false;
 }
 
-bool MetaEngine::removeXmpTag(const char* xmpTagName, bool setProgramName) const
+bool MetaEngine::removeXmpTag(const char* xmpTagName) const
 {
 #ifdef _XMP_SUPPORT_
 
-    if (!setProgramId(setProgramName))
-        return false;
-
     try
     {
         Exiv2::XmpKey xmpKey(xmpTagName);
@@ -1144,7 +1106,6 @@ bool MetaEngine::removeXmpTag(const char* xmpTagName, bool setProgramName) const
 #else
 
     Q_UNUSED(xmpTagName);
-    Q_UNUSED(setProgramName);
 
 #endif // _XMP_SUPPORT_
 
@@ -1156,14 +1117,14 @@ QStringList MetaEngine::getXmpKeywords() const
     return (getXmpTagStringBag("Xmp.dc.subject", false));
 }
 
-bool MetaEngine::setXmpKeywords(const QStringList& newKeywords, bool setProgramName) const
+bool MetaEngine::setXmpKeywords(const QStringList& newKeywords) const
 {
-    return addToXmpTagStringBag("Xmp.dc.subject", newKeywords, setProgramName);
+    return addToXmpTagStringBag("Xmp.dc.subject", newKeywords);
 }
 
-bool MetaEngine::removeXmpKeywords(const QStringList& keywordsToRemove, bool setProgramName)
+bool MetaEngine::removeXmpKeywords(const QStringList& keywordsToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.dc.subject", keywordsToRemove, setProgramName);
+    return removeFromXmpTagStringBag("Xmp.dc.subject", keywordsToRemove);
 }
 
 QStringList MetaEngine::getXmpSubCategories() const
@@ -1171,14 +1132,14 @@ QStringList MetaEngine::getXmpSubCategories() const
     return (getXmpTagStringBag("Xmp.photoshop.SupplementalCategories", false));
 }
 
-bool MetaEngine::setXmpSubCategories(const QStringList& newSubCategories, bool setProgramName) const
+bool MetaEngine::setXmpSubCategories(const QStringList& newSubCategories) const
 {
-    return addToXmpTagStringBag("Xmp.photoshop.SupplementalCategories", newSubCategories, \
setProgramName); +    return addToXmpTagStringBag("Xmp.photoshop.SupplementalCategories", \
newSubCategories);  }
 
-bool MetaEngine::removeXmpSubCategories(const QStringList& subCategoriesToRemove, bool setProgramName)
+bool MetaEngine::removeXmpSubCategories(const QStringList& subCategoriesToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.photoshop.SupplementalCategories", subCategoriesToRemove, \
setProgramName); +    return removeFromXmpTagStringBag("Xmp.photoshop.SupplementalCategories", \
subCategoriesToRemove);  }
 
 QStringList MetaEngine::getXmpSubjects() const
@@ -1186,14 +1147,14 @@ QStringList MetaEngine::getXmpSubjects() const
     return (getXmpTagStringBag("Xmp.iptc.SubjectCode", false));
 }
 
-bool MetaEngine::setXmpSubjects(const QStringList& newSubjects, bool setProgramName) const
+bool MetaEngine::setXmpSubjects(const QStringList& newSubjects) const
 {
-    return addToXmpTagStringBag("Xmp.iptc.SubjectCode", newSubjects, setProgramName);
+    return addToXmpTagStringBag("Xmp.iptc.SubjectCode", newSubjects);
 }
 
-bool MetaEngine::removeXmpSubjects(const QStringList& subjectsToRemove, bool setProgramName)
+bool MetaEngine::removeXmpSubjects(const QStringList& subjectsToRemove)
 {
-    return removeFromXmpTagStringBag("Xmp.iptc.SubjectCode", subjectsToRemove, setProgramName);
+    return removeFromXmpTagStringBag("Xmp.iptc.SubjectCode", subjectsToRemove);
 }
 
 MetaEngine::TagsMap MetaEngine::getXmpTagsList() const
diff --git a/tests/dmetadata/commentreadwritetest.cpp b/tests/dmetadata/commentreadwritetest.cpp
index 28a34d7508..0dd21cbd4a 100644
--- a/tests/dmetadata/commentreadwritetest.cpp
+++ b/tests/dmetadata/commentreadwritetest.cpp
@@ -151,8 +151,8 @@ void CommentReadWriteTest::testReadFromDisabledNamespaces()
              << commNs1
              << commNs2;
 
-    dmeta.setXmpTagStringListLangAlt("Xmp.dc.description", commentSet1.toAltLangMap(),false);
-    dmeta.setXmpTagStringLangAlt("Xmp.exif.UserComment", \
commentSet2.value(QLatin1String("x-default")).caption, QString(),false); +    \
dmeta.setXmpTagStringListLangAlt("Xmp.dc.description", commentSet1.toAltLangMap()); +    \
dmeta.setXmpTagStringLangAlt("Xmp.exif.UserComment", \
commentSet2.value(QLatin1String("x-default")).caption, QString());  
     rez = dmeta.getImageComments(dmsettings);
     QCOMPARE(rez.value(QLatin1String("x-default")).caption, \
                commentSet2.value(QLatin1String("x-default")).caption);
diff --git a/tests/dmetadata/erasetag.cpp b/tests/dmetadata/erasetag.cpp
index 06ba6005af..4eb35fb0b4 100644
--- a/tests/dmetadata/erasetag.cpp
+++ b/tests/dmetadata/erasetag.cpp
@@ -47,7 +47,7 @@ int main (int argc, char **argv)
     DMetadata meta;
     meta.load(filePath);
     meta.setWriteRawFiles(true);
-    bool b = meta.removeExifTag("Exif.OlympusIp.BlackLevel", false);
+    bool b = meta.removeExifTag("Exif.OlympusIp.BlackLevel");
     qDebug() << "Exif.OlympusIp.BlackLevel found = " << b;
 
     QByteArray ba = meta.getExifTagData("Exif.OlympusIp.BlackLevel");
diff --git a/tests/dmetadata/ratingreadwritetest.cpp b/tests/dmetadata/ratingreadwritetest.cpp
index a89fb95524..381f05ced0 100644
--- a/tests/dmetadata/ratingreadwritetest.cpp
+++ b/tests/dmetadata/ratingreadwritetest.cpp
@@ -148,8 +148,8 @@ void RatingReadWriteTest::testReadFromDisabledNamespaces()
     for (int i = 0; i < 6; i++)
     {
 
-        dmeta.setXmpTagString("Xmp.acdsee.rating", QString::number(5-i), false);
-        dmeta.setXmpTagString("Xmp.MicrosoftPhoto.Rating", QString::number(microsoftMappings.at(i)), \
false); +        dmeta.setXmpTagString("Xmp.acdsee.rating", QString::number(5-i));
+        dmeta.setXmpTagString("Xmp.MicrosoftPhoto.Rating", QString::number(microsoftMappings.at(i)));
 
         int rez = dmeta.getImageRating(dmsettings);
         QCOMPARE(rez, i);
diff --git a/tests/dmetadata/setxmpface.cpp b/tests/dmetadata/setxmpface.cpp
index 41ad2000a3..e047184bbc 100644
--- a/tests/dmetadata/setxmpface.cpp
+++ b/tests/dmetadata/setxmpface.cpp
@@ -33,11 +33,9 @@
 
 using namespace Digikam;
 
-bool setFaceTags(DMetadata& meta, const char* xmpTagName, const QMap<QString,QRectF>& faces,
-                 bool setProgramName)
+bool setFaceTags(DMetadata& meta, const char* xmpTagName, const QMap<QString,QRectF>& faces)
 {
-        Q_UNUSED(setProgramName);
-        meta.setXmpTagString(xmpTagName,QString(),DMetadata::XmpTagType(1),false);
+        meta.setXmpTagString(xmpTagName,QString(),DMetadata::XmpTagType(1));
 
         QString qxmpTagName(QString::fromLatin1(xmpTagName));
         QString nameTagKey     = qxmpTagName + QString::fromLatin1("[%1]/mwg-rs:Name");
@@ -58,28 +56,28 @@ bool setFaceTags(DMetadata& meta, const char* xmpTagName, const QMap<QString,QRe
             it.value().getRect(&x,&y,&w,&h);
             /** Set tag name **/
             meta.setXmpTagString(nameTagKey.arg(i).toLatin1().constData(),it.key(),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set tag type as Face **/
             meta.setXmpTagString(typeTagKey.arg(i).toLatin1().constData(),QString::fromLatin1("Face"),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set tag Area, with xmp type struct **/
             meta.setXmpTagString(areaTagKey.arg(i).toLatin1().constData(),QString(),
-                                 DMetadata::XmpTagType(2),false);
+                                 DMetadata::XmpTagType(2));
             /** Set stArea:x inside Area structure **/
             meta.setXmpTagString(areaxTagKey.arg(i).toLatin1().constData(),QString::number(x),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set stArea:y inside Area structure **/
             meta.setXmpTagString(areayTagKey.arg(i).toLatin1().constData(),QString::number(y),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set stArea:w inside Area structure **/
             meta.setXmpTagString(areawTagKey.arg(i).toLatin1().constData(),QString::number(w),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set stArea:h inside Area structure **/
             meta.setXmpTagString(areahTagKey.arg(i).toLatin1().constData(),QString::number(h),
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
             /** Set stArea:unit inside Area structure  as normalized **/
             meta.setXmpTagString(areanormTagKey.arg(i).toLatin1().constData(),QString::fromLatin1("normalized"),
                
-                                 DMetadata::XmpTagType(0),false);
+                                 DMetadata::XmpTagType(0));
 
             ++it;
             ++i;
@@ -101,22 +99,22 @@ void removeFaceTags(DMetadata& meta,const char* xmpTagName)
     QString areahTagKey    = qxmpTagName + QString::fromLatin1("[%1]/mwg-rs:Area/stArea:h");
     QString areanormTagKey = qxmpTagName + QString::fromLatin1("[%1]/mwg-rs:Area/stArea:unit");
 
-    meta.removeXmpTag(xmpTagName,false);
+    meta.removeXmpTag(xmpTagName);
     bool dirty = true;
     int i      =1;
 
-    while(dirty)
+    while (dirty)
     {
         dirty = false;
-        dirty |=meta.removeXmpTag(regionTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(nameTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(typeTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areaTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areaxTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areayTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areawTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areahTagKey.arg(i).toLatin1().constData(),false);
-        dirty |=meta.removeXmpTag(areanormTagKey.arg(i).toLatin1().constData(),false);
+        dirty |=meta.removeXmpTag(regionTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(nameTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(typeTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areaTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areaxTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areayTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areawTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areahTagKey.arg(i).toLatin1().constData());
+        dirty |=meta.removeXmpTag(areanormTagKey.arg(i).toLatin1().constData());
         i++;
     }
 }
@@ -164,9 +162,9 @@ int main (int argc, char **argv)
     QString op(QString::fromLatin1(argv[1]));
 
     if (op == QString::fromLatin1("add"))
-        setFaceTags(meta,bag.toLatin1().constData(),faces,false);
+        setFaceTags(meta, bag.toLatin1().constData(), faces);
     else
-        removeFaceTags(meta,bag.toLatin1().constData());
+        removeFaceTags(meta, bag.toLatin1().constData());
 
     meta.applyChanges();
 
@@ -176,7 +174,7 @@ int main (int argc, char **argv)
     meta2.load(filePath);
     meta2.setWriteRawFiles(true);
 
-    QString nameR = meta2.getXmpTagString(recoverName.toLatin1().constData(),false);
+    QString nameR = meta2.getXmpTagString(recoverName.toLatin1().constData(), false);
 
     qDebug() << "Saved name is:" << nameR;
 
diff --git a/tests/dmetadata/tagsreadwritetest.cpp b/tests/dmetadata/tagsreadwritetest.cpp
index 2e4d37a3fc..c78af7f107 100644
--- a/tests/dmetadata/tagsreadwritetest.cpp
+++ b/tests/dmetadata/tagsreadwritetest.cpp
@@ -212,7 +212,7 @@ void TagsReadWriteTest::testTagSeparatorRead()
     toWrite   = tagSet1;
     toWrite   = toWrite.replaceInStrings(QLatin1String("/"),QLatin1String("|"));
 
-    dmeta.setXmpTagStringBag("Xmp.lr.hierarchicalSubject",toWrite, false);
+    dmeta.setXmpTagStringBag("Xmp.lr.hierarchicalSubject", toWrite);
 
     reference = dmeta.getXmpTagStringBag("Xmp.lr.hierarchicalSubject", false);
 
@@ -250,7 +250,7 @@ void TagsReadWriteTest::testTagReadAlternativeNameSpace()
     toWrite   = tagSet1;
     toWrite   = toWrite.replaceInStrings(QLatin1String("/"),QLatin1String("|"));
 
-    dmeta.setXmpTagStringSeq("Xmp.lr.HierarchicalSubject",toWrite, false);
+    dmeta.setXmpTagStringSeq("Xmp.lr.HierarchicalSubject", toWrite);
 
     // We write some data to alternative namespace
     reference = dmeta.getXmpTagStringSeq("Xmp.lr.HierarchicalSubject", false);
diff --git a/tests/timestampupdate/timestampupdatetest.cpp \
b/tests/timestampupdate/timestampupdatetest.cpp index daa38c10da..9435c4e928 100644
--- a/tests/timestampupdate/timestampupdatetest.cpp
+++ b/tests/timestampupdate/timestampupdatetest.cpp
@@ -113,7 +113,7 @@ void TimeStampUpdateTest::cleanup()
     meta.setMetadataWritingMode(MetaEngine::WRITETOIMAGEONLY);
     meta.setUpdateFileTimeStamp(true);
     meta.load(originalImageFile);
-    meta.removeExifTag("Exif.Image.Model", false);
+    meta.removeExifTag("Exif.Image.Model");
     QVERIFY2(meta.applyChanges(), "Exif.Image.Model is removed");
     QVERIFY(meta.getExifTagString("Exif.Image.Model").isEmpty());
 
@@ -157,7 +157,7 @@ void TimeStampUpdateTest::testRescanImageIfModifiedSet2True()
     QVERIFY(model.isEmpty());
 
     // Change the metadata in image file
-    meta.setExifTagString("Exif.Image.Model", QLatin1String("TimeStampUpdateTestCamera"), false);
+    meta.setExifTagString("Exif.Image.Model", QLatin1String("TimeStampUpdateTestCamera"));
     QVERIFY2(meta.applyChanges(), "Exif.Image.Model is added");
     QVERIFY(meta.getExifTagString("Exif.Image.Model") == QLatin1String("TimeStampUpdateTestCamera"));
 
@@ -203,7 +203,7 @@ void TimeStampUpdateTest::testRescanImageIfModifiedSet2False()
     QVERIFY(model.isEmpty());
 
     // Change the metadata in image file
-    meta.setExifTagString("Exif.Image.Model", QLatin1String("TimeStampUpdateTestCamera"), false);
+    meta.setExifTagString("Exif.Image.Model", QLatin1String("TimeStampUpdateTestCamera"));
     QVERIFY2(meta.applyChanges(), "Exif.Image.Model is added");
     QVERIFY(meta.getExifTagString("Exif.Image.Model") == QLatin1String("TimeStampUpdateTestCamera"));
 
diff --git a/utilities/geolocation/editor/items/gpsimageitem.cpp \
b/utilities/geolocation/editor/items/gpsimageitem.cpp index 5ab45e301d..d5694461cc 100644
--- a/utilities/geolocation/editor/items/gpsimageitem.cpp
+++ b/utilities/geolocation/editor/items/gpsimageitem.cpp
@@ -823,14 +823,14 @@ QString GPSImageItem::saveChanges()
                 tagSeq.append(tag);
             }
 
-            bool success = meta->setXmpTagStringSeq("Xmp.digiKam.TagsList", tagSeq, true);
+            bool success = meta->setXmpTagStringSeq("Xmp.digiKam.TagsList", tagSeq);
 
             if (!success)
             {
                 returnString = i18n("Failed to save tags to file.");
             }
 
-            success = meta->setXmpTagStringSeq("Xmp.dc.subject", tagSeq, true);
+            success = meta->setXmpTagStringSeq("Xmp.dc.subject", tagSeq);
 
             if (!success)
             {
diff --git a/utilities/metadataedit/exif/exifcaption.cpp b/utilities/metadataedit/exif/exifcaption.cpp
index 2714d252c8..813ef8c219 100644
--- a/utilities/metadataedit/exif/exifcaption.cpp
+++ b/utilities/metadataedit/exif/exifcaption.cpp
@@ -388,12 +388,12 @@ void EXIFCaption::applyMetadata(QByteArray& exifData, QByteArray& iptcData, QByt
         if (meta.supportXmp() && syncXMPCaptionIsChecked())
         {
             meta.setXmpTagStringLangAlt("Xmp.dc.description",
-                                              d->userCommentEdit->toPlainText(),
-                                              QString(), false);
+                                        d->userCommentEdit->toPlainText(),
+                                        QString());
 
             meta.setXmpTagStringLangAlt("Xmp.exif.UserComment",
-                                              d->userCommentEdit->toPlainText(),
-                                              QString(), false);
+                                        d->userCommentEdit->toPlainText(),
+                                        QString());
         }
 
         if (syncIPTCCaptionIsChecked())
diff --git a/utilities/metadataedit/xmp/xmpcontent.cpp b/utilities/metadataedit/xmp/xmpcontent.cpp
index 8f06b735ac..12aac6424a 100644
--- a/utilities/metadataedit/xmp/xmpcontent.cpp
+++ b/utilities/metadataedit/xmp/xmpcontent.cpp
@@ -272,7 +272,7 @@ void XMPContent::applyMetadata(QByteArray& exifData, QByteArray& xmpData)
 
     if (d->captionEdit->getValues(oldAltLangMap, newAltLangMap))
     {
-        meta.setXmpTagStringListLangAlt("Xmp.dc.description", newAltLangMap, false);
+        meta.setXmpTagStringListLangAlt("Xmp.dc.description", newAltLangMap);
 
         if (syncEXIFCommentIsChecked())
             meta.setExifComment(getXMPCaption());
@@ -291,7 +291,7 @@ void XMPContent::applyMetadata(QByteArray& exifData, QByteArray& xmpData)
         meta.removeXmpTag("Xmp.photoshop.CaptionWriter");
 
     if (d->copyrightEdit->getValues(oldAltLangMap, newAltLangMap))
-        meta.setXmpTagStringListLangAlt("Xmp.dc.rights", newAltLangMap, false);
+        meta.setXmpTagStringListLangAlt("Xmp.dc.rights", newAltLangMap);
     else if (d->copyrightEdit->isValid())
         meta.removeXmpTag("Xmp.dc.rights");
 
diff --git a/utilities/metadataedit/xmp/xmpproperties.cpp b/utilities/metadataedit/xmp/xmpproperties.cpp
index be846a001e..f6bfbeba69 100644
--- a/utilities/metadataedit/xmp/xmpproperties.cpp
+++ b/utilities/metadataedit/xmp/xmpproperties.cpp
@@ -485,7 +485,7 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
         for (QStringList::Iterator it2 = newList.begin(); it2 != newList.end(); ++it2)
             newCode.append((*it2).left(2));
 
-        meta.setXmpTagStringBag("Xmp.dc.language", newCode, false);
+        meta.setXmpTagStringBag("Xmp.dc.language", newCode);
     }
     else
     {
@@ -508,7 +508,7 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
         for (QStringList::Iterator it2 = newList.begin(); it2 != newList.end(); ++it2)
             newCode.append((*it2).left(6));
 
-        meta.setXmpTagStringBag("Xmp.iptc.Scene", newCode, false);
+        meta.setXmpTagStringBag("Xmp.iptc.Scene", newCode);
     }
     else
     {
@@ -518,7 +518,7 @@ void XMPProperties::applyMetadata(QByteArray& xmpData)
     // ---------------------------------------------------------------
 
     if (d->objectTypeEdit->getValues(oldList, newList))
-        meta.setXmpTagStringBag("Xmp.dc.type", newList, false);
+        meta.setXmpTagStringBag("Xmp.dc.type", newList);
     else
         meta.removeXmpTag("Xmp.dc.type");
 
diff --git a/utilities/metadataedit/xmp/xmpstatus.cpp b/utilities/metadataedit/xmp/xmpstatus.cpp
index ed7f34b7fe..5e44c3d395 100644
--- a/utilities/metadataedit/xmp/xmpstatus.cpp
+++ b/utilities/metadataedit/xmp/xmpstatus.cpp
@@ -211,7 +211,7 @@ void XMPStatus::applyMetadata(QByteArray& xmpData)
     DMetadata::AltLangMap oldAltLangMap, newAltLangMap;
 
     if (d->objectNameEdit->getValues(oldAltLangMap, newAltLangMap))
-        meta.setXmpTagStringListLangAlt("Xmp.dc.title", newAltLangMap, false);
+        meta.setXmpTagStringListLangAlt("Xmp.dc.title", newAltLangMap);
     else if (d->objectNameEdit->isValid())
         meta.removeXmpTag("Xmp.dc.title");
 


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic