Fix build with exiv2 >=0.28.0.

Index: src/DkCore/DkMetaData.cpp
--- src/DkCore/DkMetaData.cpp.orig
+++ src/DkCore/DkMetaData.cpp
@@ -69,8 +69,7 @@ QSharedPointer<DkMetaDataT> DkMetaDataT::copy() const
         // ImageFactory::create(type) may crash even if old Image object has that type
         try {
             // Load new Exiv2::Image object
-            int i_type = mExifImg->imageType();
-            metaDataN->mExifImg = Exiv2::ImageFactory::create(i_type);
+            metaDataN->mExifImg = Exiv2::ImageFactory::create(mExifImg->imageType());
             // Copy exif data from old object into new object
             Exiv2::ExifData data = mExifImg->exifData();
             metaDataN->mExifImg->setExifData(data); // explicit copy of list<Exifdatum>
@@ -114,8 +113,8 @@ void DkMetaDataT::readMetaData(const QString &filePath
             std::string strFilePath = (fileInfo.isSymLink()) ? fileInfo.symLinkTarget().toStdString() : filePath.toStdString();
             mExifImg = Exiv2::ImageFactory::open(strFilePath);
         } else {
-            Exiv2::BasicIo::AutoPtr exifBuffer(new Exiv2::MemIo((const byte *)ba->constData(), ba->size()));
-            mExifImg = Exiv2::ImageFactory::open(exifBuffer);
+            Exiv2::BasicIo::UniquePtr exifBuffer(new Exiv2::MemIo((const byte *)ba->constData(), ba->size()));
+            mExifImg = Exiv2::ImageFactory::open(std::move(exifBuffer));
         }
     } catch (...) {
         // TODO: check crashes here
@@ -217,13 +216,13 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArr
     Exiv2::XmpData &xmpData = mExifImg->xmpData();
     Exiv2::IptcData &iptcData = mExifImg->iptcData();
 
-    Exiv2::Image::AutoPtr exifImgN;
-    Exiv2::MemIo::AutoPtr exifMem;
+    Exiv2::Image::UniquePtr exifImgN;
+    Exiv2::MemIo::UniquePtr exifMem;
 
     try {
         // Load new exif object (based on byte array of raw image file, see overload)
-        exifMem = Exiv2::MemIo::AutoPtr(new Exiv2::MemIo((byte *)ba->data(), ba->size()));
-        exifImgN = Exiv2::ImageFactory::open(exifMem);
+        exifMem = Exiv2::MemIo::UniquePtr(new Exiv2::MemIo((byte *)ba->data(), ba->size()));
+        exifImgN = Exiv2::ImageFactory::open(std::move(exifMem));
     } catch (...) {
         qDebug() << "could not open image for exif data";
         return false;
@@ -246,8 +245,8 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArr
     // Copy image + new exif and return temporary object as byte array
     // The calling function should then write it back to the file
     Exiv2::DataBuf exifBuf = exifImgN->io().read((long)exifImgN->io().size());
-    if (exifBuf.pData_) {
-        QSharedPointer<QByteArray> tmp = QSharedPointer<QByteArray>(new QByteArray((const char *)exifBuf.pData_, exifBuf.size_));
+    if (exifBuf.c_data()) {
+        QSharedPointer<QByteArray> tmp = QSharedPointer<QByteArray>(new QByteArray((const char *)exifBuf.c_data(), exifBuf.size()));
 
         if (tmp->size() > qRound(ba->size() * 0.5f))
             ba = tmp;
@@ -257,7 +256,7 @@ bool DkMetaDataT::saveMetaData(QSharedPointer<QByteArr
         return false;
 
     // Replace old exif object with new one and clear "dirty" flag
-    mExifImg = exifImgN;
+    mExifImg = std::move(exifImgN);
     mExifState = loaded;
 
     return true;
@@ -304,7 +303,7 @@ int DkMetaDataT::getOrientationDegree() const
             Exiv2::ExifData::iterator pos = exifData.findKey(key);
 
             if (pos != exifData.end() && pos->count() != 0) {
-                Exiv2::Value::AutoPtr v = pos->getValue();
+                Exiv2::Value::UniquePtr v = pos->getValue();
                 orientation = (int)pos->toFloat();
 
                 switch (orientation) {
@@ -384,7 +383,7 @@ int DkMetaDataT::getRating() const
         Exiv2::ExifData::iterator pos = exifData.findKey(key);
 
         if (pos != exifData.end() && pos->count() != 0) {
-            Exiv2::Value::AutoPtr v = pos->getValue();
+            Exiv2::Value::UniquePtr v = pos->getValue();
             exifRating = v->toFloat();
         }
     }
@@ -396,7 +395,7 @@ int DkMetaDataT::getRating() const
 
         // xmp Rating tag
         if (pos != xmpData.end() && pos->count() != 0) {
-            Exiv2::Value::AutoPtr v = pos->getValue();
+            Exiv2::Value::UniquePtr v = pos->getValue();
             xmpRating = v->toFloat();
         }
 
@@ -405,7 +404,7 @@ int DkMetaDataT::getRating() const
             key = Exiv2::XmpKey("Xmp.MicrosoftPhoto.Rating");
             pos = xmpData.findKey(key);
             if (pos != xmpData.end() && pos->count() != 0) {
-                Exiv2::Value::AutoPtr v = pos->getValue();
+                Exiv2::Value::UniquePtr v = pos->getValue();
                 xmpRating = v->toFloat();
             }
         }
@@ -466,7 +465,7 @@ QString DkMetaDataT::getNativeExifValue(const QString 
             if (pos->count() < 2000) { // diem: this is about performance - adobe obviously embeds whole images into tiff exiv data
 
                 // qDebug() << "pos count: " << pos->count();
-                // Exiv2::Value::AutoPtr v = pos->getValue();
+                // Exiv2::Value::UniquePtr v = pos->getValue();
                 if (humanReadable) {
                     std::stringstream ss;
                     ss << *pos;
@@ -505,7 +504,7 @@ QString DkMetaDataT::getXmpValue(const QString &key) c
         }
 
         if (pos != xmpData.end() && pos->count() != 0) {
-            Exiv2::Value::AutoPtr v = pos->getValue();
+            Exiv2::Value::UniquePtr v = pos->getValue();
             info = exiv2ToQString(pos->toString());
         }
     }
@@ -545,7 +544,7 @@ QString DkMetaDataT::getExifValue(const QString &key) 
         }
 
         if (pos != exifData.end() && pos->count() != 0) {
-            // Exiv2::Value::AutoPtr v = pos->getValue();
+            // Exiv2::Value::UniquePtr v = pos->getValue();
             info = exiv2ToQString(pos->toString());
         }
     }
@@ -573,7 +572,7 @@ QString DkMetaDataT::getIptcValue(const QString &key) 
         }
 
         if (pos != iptcData.end() && pos->count() != 0) {
-            Exiv2::Value::AutoPtr v = pos->getValue();
+            Exiv2::Value::UniquePtr v = pos->getValue();
             info = exiv2ToQString(pos->toString());
         }
     }
@@ -715,7 +714,7 @@ QImage DkMetaDataT::getThumbnail() const
         Exiv2::ExifThumb thumb(exifData);
         Exiv2::DataBuf buffer = thumb.copy();
 
-        QByteArray ba = QByteArray((char *)buffer.pData_, buffer.size_);
+        QByteArray ba = QByteArray((char*)buffer.c_data(), buffer.size());
         qThumb.loadFromData(ba);
     } catch (...) {
         qDebug() << "Sorry, I could not load the thumb from the exif data...";
@@ -994,8 +993,8 @@ void DkMetaDataT::setThumbnail(QImage thumb)
 
         try {
             // whipe all exif data of the thumbnail
-            Exiv2::MemIo::AutoPtr exifBufferThumb(new Exiv2::MemIo((const byte *)ba.constData(), ba.size()));
-            Exiv2::Image::AutoPtr exifImgThumb = Exiv2::ImageFactory::open(exifBufferThumb);
+            Exiv2::MemIo::UniquePtr exifBufferThumb(new Exiv2::MemIo((const byte *)ba.constData(), ba.size()));
+            Exiv2::Image::UniquePtr exifImgThumb = Exiv2::ImageFactory::open(std::move(exifBufferThumb));
 
             if (exifImgThumb.get() != 0 && exifImgThumb->good())
                 exifImgThumb->clearExifData();
@@ -1106,12 +1105,12 @@ void DkMetaDataT::setOrientation(int o)
         pos = exifData.findKey(key);
     }
 
-    Exiv2::Value::AutoPtr v = pos->getValue();
+    Exiv2::Value::UniquePtr v = pos->getValue();
     Exiv2::UShortValue *prv = dynamic_cast<Exiv2::UShortValue *>(v.release());
     if (!prv)
         return;
 
-    Exiv2::UShortValue::AutoPtr rv = Exiv2::UShortValue::AutoPtr(prv);
+    Exiv2::UShortValue::UniquePtr rv = Exiv2::UShortValue::UniquePtr(prv);
     if (rv->value_.empty())
         return;
 
@@ -1202,7 +1201,7 @@ void DkMetaDataT::setRating(int r)
         exifData["Exif.Image.Rating"] = uint16_t(r);
         exifData["Exif.Image.RatingPercent"] = uint16_t(r);
 
-        Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText);
+        Exiv2::Value::UniquePtr v = Exiv2::Value::create(Exiv2::xmpText);
         v->read(sRating);
         xmpData.add(Exiv2::XmpKey("Xmp.xmp.Rating"), v.get());
         v->read(sRatingPercent);
@@ -1448,9 +1447,9 @@ DkRotatingRect DkMetaDataT::getXMPRect(const QSize &si
     return DkRotatingRect(rr);
 }
 
-Exiv2::Image::AutoPtr DkMetaDataT::loadSidecar(const QString &filePath) const
+Exiv2::Image::UniquePtr DkMetaDataT::loadSidecar(const QString &filePath) const
 {
-    Exiv2::Image::AutoPtr xmpImg;
+    Exiv2::Image::UniquePtr xmpImg;
 
     // TODO: check if the file type supports xmp
 
@@ -1500,7 +1499,7 @@ bool DkMetaDataT::setXMPValue(Exiv2::XmpData &xmpData,
         if (!pos->setValue(xmpValue.toStdString()))
             setXMPValueSuccessful = true;
     } else {
-        Exiv2::Value::AutoPtr v = Exiv2::Value::create(Exiv2::xmpText);
+        Exiv2::Value::UniquePtr v = Exiv2::Value::create(Exiv2::xmpText);
         if (!v->read(xmpValue.toStdString())) {
             if (!xmpData.add(Exiv2::XmpKey(key), v.get()))
                 setXMPValueSuccessful = true;
