Hello community,

here is the log from the commit of package libkexiv2 for openSUSE:Factory 
checked in at 2012-01-27 15:21:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/libkexiv2 (Old)
 and      /work/SRC/openSUSE:Factory/.libkexiv2.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "libkexiv2", Maintainer is "[email protected]"

Changes:
--------
--- /work/SRC/openSUSE:Factory/libkexiv2/libkexiv2.changes      2011-12-08 
12:12:37.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.libkexiv2.new/libkexiv2.changes 2012-01-27 
15:21:40.000000000 +0100
@@ -1,0 +2,16 @@
+Wed Jan 18 21:00:01 CET 2012 - [email protected]
+
+- update to 4.8.0
+  * first stable release of KDE 4.8 (only critical fixes over 4.7.98)
+  * see http://kde.org/announcements/4.8/ for details
+  
+
+-------------------------------------------------------------------
+Tue Jan 10 18:46:58 CET 2012 - [email protected]
+
+- update to 4.7.98
+  * RC2+ milestone release of KDE 4.8
+  *  see http://kde.org/announcements/4.8/ for details
+  
+
+-------------------------------------------------------------------

Old:
----
  libkexiv2-4.7.4.tar.bz2

New:
----
  libkexiv2-4.8.0.tar.bz2

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ libkexiv2.spec ++++++
--- /var/tmp/diff_new_pack.gk6hLp/_old  2012-01-27 15:21:41.000000000 +0100
+++ /var/tmp/diff_new_pack.gk6hLp/_new  2012-01-27 15:21:41.000000000 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package libkexiv2
 #
-# Copyright (c) 2011 SUSE LINUX Products GmbH, Nuernberg, Germany.
+# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -16,7 +16,7 @@
 #
 
 Name:           libkexiv2
-Version:        4.7.4
+Version:        4.8.0
 Release:        0
 Summary:        Library to manipulate picture meta data
 License:        GPL-2.0+
@@ -49,6 +49,7 @@
 
 %package -n libkexiv2-10
 Summary:        Library to manipulate picture meta data
+Group:          Development/Libraries/KDE
 
 %description -n libkexiv2-10
 Libkexiv2 is a wrapper around Exiv2 library to manipulate pictures
@@ -65,6 +66,7 @@
 
 %package devel
 Summary:        Library to manipulate picture meta data
+Group:          Development/Libraries/KDE
 Requires:       libexiv2-devel
 Requires:       libkde4-devel
 Requires:       libkexiv2-10 = %{version}

++++++ libkexiv2-4.7.4.tar.bz2 -> libkexiv2-4.8.0.tar.bz2 ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/CMakeLists.txt 
new/libkexiv2-4.8.0/CMakeLists.txt
--- old/libkexiv2-4.7.4/CMakeLists.txt  2011-05-20 22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/CMakeLists.txt  2011-09-26 11:45:43.000000000 +0200
@@ -41,7 +41,7 @@
 SET(LIBKEXIV2_AREA_CODE_GENERAL 51003)
 ADD_DEFINITIONS(-DKDE_DEFAULT_DEBUG_AREA=${LIBKEXIV2_AREA_CODE_GENERAL})
 
-SET(EXIV2_MIN_VERSION "0.20")
+SET(EXIV2_MIN_VERSION "0.21")
 FIND_PACKAGE(Exiv2)
 MACRO_LOG_FEATURE(EXIV2_FOUND "Exiv2" "Required to build libkexiv2." 
"http://www.exiv2.org";
                   TRUE ${EXIV2_MIN_VERSION} "")
@@ -68,11 +68,12 @@
 # 1.0.0 => 8.0.0     (Released with KDE 4.4.0)
 # 1.1.0 => 8.1.0     (Released with KDE 4.5.0)
 # 1.2.0 => 9.0.0     (Released with KDE 4.6.0 - Including XMP sidecar support)
-# 2.0.0 => 10.0.0    (included into digiKam 2.0.0 collection)
+# 2.0.0 => 10.0.0    (Released with KDE 4.7.0)
+# 2.1.0 => 10.0.1    (Released with KDE 4.7.1) - Add AltLangStrEdit visible 
lines API
 
 # Library API version
 SET(KEXIV2_LIB_MAJOR_VERSION "2")
-SET(KEXIV2_LIB_MINOR_VERSION "0")
+SET(KEXIV2_LIB_MINOR_VERSION "1")
 SET(KEXIV2_LIB_PATCH_VERSION "0")
 
 # Suffix to add at end of version string. Usual values are:
@@ -88,7 +89,7 @@
 # For details : 
http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
 SET(KEXIV2_LIB_SO_CUR_VERSION "10")
 SET(KEXIV2_LIB_SO_REV_VERSION "0")
-SET(KEXIV2_LIB_SO_AGE_VERSION "0")
+SET(KEXIV2_LIB_SO_AGE_VERSION "1")
 
 # =======================================================
 # Set env. variables accordinly.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/altlangstredit.cpp 
new/libkexiv2-4.8.0/libkexiv2/altlangstredit.cpp
--- old/libkexiv2-4.7.4/libkexiv2/altlangstredit.cpp    2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/altlangstredit.cpp    2011-09-26 
11:45:43.000000000 +0200
@@ -27,6 +27,8 @@
 
 // Qt includes
 
+#include <QEvent>
+#include <QStyle>
 #include <QLabel>
 #include <QMap>
 #include <QToolButton>
@@ -55,10 +57,10 @@
 
     AltLangStrEditPriv()
     {
-        titleLabel     = 0;
-        delValueButton = 0;
-        languageCB     = 0;
-
+        titleLabel      = 0;
+        delValueButton  = 0;
+        languageCB      = 0;
+        linesVisible    = 0;
         currentLanguage = "x-default";
 
         // We cannot use KLocale::allLanguagesList() here because KDE only
@@ -249,6 +251,8 @@
 
     QString                        currentLanguage;
 
+    uint                           linesVisible;
+
     QLabel*                        titleLabel;
 
     QToolButton*                   delValueButton;
@@ -458,4 +462,41 @@
     emit signalValueAdded(d->currentLanguage, text);
 }
 
+void AltLangStrEdit::setLinesVisible(uint lines)
+{
+    d->linesVisible = lines;
+
+    if (d->linesVisible == 0)
+    {
+        d->valueEdit->setFixedHeight(QWIDGETSIZE_MAX); // reset
+    }
+    else
+    {
+        d->valueEdit->setFixedHeight(d->valueEdit->fontMetrics().lineSpacing() 
* d->linesVisible         +
+                                     d->valueEdit->contentsMargins().top()     
                          +
+                                     d->valueEdit->contentsMargins().bottom()  
                          +
+                                     1                                         
                          +
+                                     
2*(d->valueEdit->style()->pixelMetric(QStyle::PM_DefaultFrameWidth) +
+                                        
d->valueEdit->style()->pixelMetric(QStyle::PM_FocusFrameVMargin))
+                                    );
+    }
+
+    // It's not possible to display scrollbar properlly if size is too small
+    if (d->linesVisible < 3)
+        d->valueEdit->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
+}
+
+uint AltLangStrEdit::linesVisible() const
+{
+    return d->linesVisible;
+}
+
+void AltLangStrEdit::changeEvent(QEvent* e)
+{
+    if (e->type() == QEvent::FontChange)
+        setLinesVisible(linesVisible());
+
+    QWidget::changeEvent(e);
+}
+
 }  // namespace KExiv2Iface
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/altlangstredit.h 
new/libkexiv2-4.8.0/libkexiv2/altlangstredit.h
--- old/libkexiv2-4.7.4/libkexiv2/altlangstredit.h      2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/altlangstredit.h      2011-09-26 
11:45:43.000000000 +0200
@@ -57,6 +57,11 @@
     QString currentLanguageCode() const;
     QString languageCode(int index) const;
 
+    /** Fix lines visibile in text editor to lines. If zero, do not fix layout 
to number of lines visible.
+     */
+    void setLinesVisible(uint lines);
+    uint linesVisible() const;
+
     QString defaultAltLang() const;
     bool    asDefaultAltLang() const;
 
@@ -95,6 +100,8 @@
 
     void loadLangAltListEntries();
 
+    virtual void changeEvent(QEvent* e);
+
 private:
 
     class AltLangStrEditPriv;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/kexiv2.cpp 
new/libkexiv2-4.8.0/libkexiv2/kexiv2.cpp
--- old/libkexiv2-4.7.4/libkexiv2/kexiv2.cpp    2011-05-20 22:36:10.000000000 
+0200
+++ new/libkexiv2-4.8.0/libkexiv2/kexiv2.cpp    2011-07-27 20:41:59.000000000 
+0200
@@ -36,7 +36,7 @@
 {
 
 KExiv2Data::KExiv2Data()
-          : d(0)
+    : d(0)
 {
 }
 
@@ -56,12 +56,12 @@
 }
 
 KExiv2::KExiv2()
-      : d(new KExiv2Priv)
+    : d(new KExiv2Priv)
 {
 }
 
 KExiv2::KExiv2(const KExiv2& metadata)
-      : d(new KExiv2Priv)
+    : d(new KExiv2Priv)
 {
     d->data = metadata.d->data;
 
@@ -69,14 +69,13 @@
 }
 
 KExiv2::KExiv2(const KExiv2Data& data)
-      : d(new KExiv2Priv)
+    : d(new KExiv2Priv)
 {
     setData(data);
 }
 
 KExiv2::KExiv2(const QString& filePath)
-      : d(new KExiv2Priv)
-
+    : d(new KExiv2Priv)
 {
     load(filePath);
 }
@@ -299,47 +298,21 @@
         return false;
     }
 
-    // ensure that symlinks are used correctly
-    QString fileName = filePath;
-    QFileInfo info(fileName);
-    if (info.isSymLink())
-    {
-        kDebug() << "filePath" << filePath << "is a symlink."
-                 << "Using target" << info.symLinkTarget();
-        fileName = info.symLinkTarget();
-    }
+    QFileInfo info(filePath);
 
     try
     {
         Exiv2::Image::AutoPtr image;
 
-        // If XMP sidecar exist and if we want manage it, parse it instead the 
image.
-        if (d->useXMPSidecar4Reading)
+        if (!info.isReadable())
         {
-            QString xmpSidecarPath = sidecarFilePathForFile(fileName);
-            QFileInfo xmpSidecarFileInfo(xmpSidecarPath);
-
-            if (xmpSidecarFileInfo.exists() && xmpSidecarFileInfo.isReadable())
-            {
-                // TODO: We should rather read both image and sidecar metadata
-                // and merge the two, with sidecar taking precedence
-                image = Exiv2::ImageFactory::open((const char*)
-                        (QFile::encodeName(xmpSidecarPath)));
-            }
+            kDebug() << "File '" << info.filePath().toAscii().constData() << 
"' is not readable.";
+            return false;
         }
+        
+        image        = Exiv2::ImageFactory::open((const 
char*)(QFile::encodeName(filePath)));
+        d->filePath  = filePath;
 
-        // No XMP sidecar file managed. We load image file metadata instead.
-        if (!image.get())
-        {
-            if (!info.isReadable())
-            {
-                kDebug() << "File '" << info.fileName().toAscii().constData() 
<< "' is not readable.";
-                return false;
-            }
-            image = Exiv2::ImageFactory::open((const 
char*)(QFile::encodeName(fileName)));
-        }
-
-        d->filePath = fileName;
         image->readMetadata();
 
         // Size and mimetype ---------------------------------
@@ -362,8 +335,30 @@
 #ifdef _XMP_SUPPORT_
 
         // Xmp metadata -----------------------------------
+        Exiv2::Image::AutoPtr xmpsidecar;
 
-        d->xmpMetadata() = image->xmpData();
+        // If XMP sidecar exist and if we want manage it, parse it instead the 
image.
+        // TODO: We should rather read both image XMP and sidecar XMP
+        // metadata and merge the two, with sidecar taking precedence.
+        if (d->useXMPSidecar4Reading)
+        {
+            QString xmpSidecarPath = sidecarFilePathForFile(filePath);
+            QFileInfo xmpSidecarFileInfo(xmpSidecarPath);
+
+            if (xmpSidecarFileInfo.exists() && xmpSidecarFileInfo.isReadable())
+            {
+                xmpsidecar = Exiv2::ImageFactory::open((const char*)
+                             (QFile::encodeName(xmpSidecarPath)));
+
+                d->xmpMetadata() = xmpsidecar->xmpData();
+            }
+        }
+
+        // No XMP sidecar file managed. We load image file metadata instead.
+        if (!xmpsidecar.get())
+        {
+            d->xmpMetadata() = image->xmpData();
+        }
 
 #endif // _XMP_SUPPORT_
 
@@ -379,8 +374,31 @@
 
 bool KExiv2::save(const QString& imageFilePath) const
 {
+    // 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).
+
+    // However, this may be surprising to the user when they are writing 
sidecar
+    // files.  They might expect them to show up where the symlink is.  So, we
+    // shouldn't follow the link when figuring out what the filename for the
+    // sidecar should be.
+
+    // Note, we are not yet handling the case where the sidecar itself is a
+    // symlink.
+    QString regularFilePath = imageFilePath; // imageFilePath might be a
+                                             // symlink.  Below we will change
+                                             // regularFile to the pointed to
+                                             // file if so.
+    QFileInfo givenFileInfo(imageFilePath);
+    if (givenFileInfo.isSymLink())
+    {
+        kDebug() << "filePath" << imageFilePath << "is a symlink."
+                 << "Using target" << givenFileInfo.symLinkTarget();
+        regularFilePath = givenFileInfo.canonicalPath();// Walk all the 
symlinks
+    }
+
     // NOTE: see B.K.O #137770 & #138540 : never touch the file if is read 
only.
-    QFileInfo finfo(imageFilePath);
+    QFileInfo finfo(regularFilePath);
     QFileInfo dinfo(finfo.path());
     if (!dinfo.isWritable())
     {
@@ -394,30 +412,46 @@
     {
         case WRITETOSIDECARONLY:
             ret = d->saveToXMPSidecar(imageFilePath);
-            if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
+            if (ret)
+            {
+                kDebug() << "Metadata for file '" << 
givenFileInfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
+            }
             break;
 
         case WRITETOSIDECARANDIMAGE:
             ret = d->saveToFile(finfo);
-            if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
+            if (ret)
+            {
+                kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
+            }
 
             ret |=  d->saveToXMPSidecar(imageFilePath);
-            if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
+            if (ret)
+            {
+                kDebug() << "Metadata for file '" << 
givenFileInfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
+            }
             break;
 
         case WRITETOSIDECARONLY4READONLYFILES:
             ret = d->saveToFile(finfo);
-            if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
-            if (!ret)
+            if (ret)
+            {
+                kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
+            }
+            else
             {
                 ret |= d->saveToXMPSidecar(imageFilePath);
-                if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
+                if (ret) 
+                    kDebug() << "Metadata for file '" << 
givenFileInfo.fileName().toAscii().constData() << "' written to XMP sidecar.";
             }
             break;
 
-        default:          // WRITETOIMAGEONLY:
+        default: // WRITETOIMAGEONLY:
             ret = d->saveToFile(finfo);
-            if (ret) kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
+            if (ret)
+            {
+                kDebug() << "Metadata for file '" << 
finfo.fileName().toAscii().constData() << "' written to file.";
+            }
             break;
     }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/kexiv2exif.cpp 
new/libkexiv2-4.8.0/libkexiv2/kexiv2exif.cpp
--- old/libkexiv2-4.7.4/libkexiv2/kexiv2exif.cpp        2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/kexiv2exif.cpp        2011-11-04 
15:35:49.000000000 +0100
@@ -263,12 +263,15 @@
 
     try
     {
+        removeExifTag("Exif.Image.ImageDescription");
         removeExifTag("Exif.Photo.UserComment");
 
         if (!comment.isNull())
         {
+            setExifTagString("Exif.Image.ImageDescription", comment, 
setProgramName);
+
             // Write as Unicode only when necessary.
-            QTextCodec *latin1Codec = QTextCodec::codecForName("iso8859-1");
+            QTextCodec* latin1Codec = QTextCodec::codecForName("iso8859-1");
             if (latin1Codec->canEncode(comment))
             {
                 // write as ASCII
@@ -291,7 +294,7 @@
                 // Null termination means \0\0, strlen does not work,
                 // do not use any const-char*-only methods,
                 // pass a std::string and not a const char * to 
ExifDatum::operator=().
-                const unsigned short *ucs2 = comment.utf16();
+                const unsigned short* ucs2 = comment.utf16();
                 std::string exifComment("charset=\"Unicode\" ");
                 exifComment.append((const char*)ucs2, sizeof(unsigned short) * 
comment.length());
                 d->exifMetadata()["Exif.Photo.UserComment"] = exifComment;
@@ -880,25 +883,19 @@
     if (!setProgramId(setProgramName))
         return false;
 
+    if (thumbImage.isNull())
+    {
+        return removeExifThumbnail();
+    }
+
     try
     {
-#if (EXIV2_TEST_VERSION(0,17,91))
         QByteArray data;
         QBuffer buffer(&data);
         buffer.open(QIODevice::WriteOnly);
         thumbImage.save(&buffer, "JPEG");
         Exiv2::ExifThumb thumb(d->exifMetadata());
         thumb.setJpegThumbnail((Exiv2::byte *)data.data(), data.size());
-#else
-        KTemporaryFile thumbFile;
-        thumbFile.setSuffix("KExiv2ExifThumbnail");
-        thumbFile.setAutoRemove(true);
-        thumbFile.open();
-        thumb.save(thumbFile.fileName(), "JPEG");
-        kDebug() << "Thumbnail temp file: " << 
thumbFile.fileName().toAscii().data();
-        const std::string &fileName((const 
char*)(QFile::encodeName(thumbFile.fileName())));
-        d->exifMetadata().setJpegThumbnail( fileName );
-#endif
         return true;
     }
     catch( Exiv2::Error& e )
@@ -918,7 +915,6 @@
 
     try
     {
-#if (EXIV2_TEST_VERSION(0,17,91))
         // Make sure IFD0 is explicitly marked as a main image
         Exiv2::ExifData::const_iterator pos = 
d->exifMetadata().findKey(Exiv2::ExifKey("Exif.Image.NewSubfileType"));
         if (pos == d->exifMetadata().end() || pos->count() != 1 || 
pos->toLong() != 0) {
@@ -933,22 +929,25 @@
             else
                 ++md;
         }
-        // Set thumbnail tags
-        QByteArray data;
-        QBuffer buffer(&data);
-        buffer.open(QIODevice::WriteOnly);
-        thumbImage.save(&buffer, "JPEG");
 
-        Exiv2::DataBuf buf((Exiv2::byte *)data.data(), data.size());
-        Exiv2::ULongValue val;
-        val.read("0");
-        val.setDataArea(buf.pData_, buf.size_);
-        d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormat"] = val;
-        d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormatLength"] = 
uint32_t(buf.size_);
-        d->exifMetadata()["Exif.SubImage1.Compression"] = uint16_t(6); // JPEG 
(old-style)
-        d->exifMetadata()["Exif.SubImage1.NewSubfileType"] = uint32_t(1); // 
Thumbnail image
-        return true;
-#endif
+        if (!thumbImage.isNull())
+        {
+            // Set thumbnail tags
+            QByteArray data;
+            QBuffer buffer(&data);
+            buffer.open(QIODevice::WriteOnly);
+            thumbImage.save(&buffer, "JPEG");
+
+            Exiv2::DataBuf buf((Exiv2::byte *)data.data(), data.size());
+            Exiv2::ULongValue val;
+            val.read("0");
+            val.setDataArea(buf.pData_, buf.size_);
+            d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormat"] = val;
+            d->exifMetadata()["Exif.SubImage1.JPEGInterchangeFormatLength"] = 
uint32_t(buf.size_);
+            d->exifMetadata()["Exif.SubImage1.Compression"] = uint16_t(6); // 
JPEG (old-style)
+            d->exifMetadata()["Exif.SubImage1.NewSubfileType"] = uint32_t(1); 
// Thumbnail image
+            return true;
+        }
     }
     catch( Exiv2::Error& e )
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/kexiv2image.cpp 
new/libkexiv2-4.8.0/libkexiv2/kexiv2image.cpp
--- old/libkexiv2-4.7.4/libkexiv2/kexiv2image.cpp       2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/kexiv2image.cpp       2011-11-04 
15:35:49.000000000 +0100
@@ -393,9 +393,13 @@
     }
 
     if (exifColorSpace == 1)
+    {
         return WORKSPACE_SRGB; // as specified by standard
+    }
     else if (exifColorSpace == 2)
+    {
         return WORKSPACE_ADOBERGB; // not in the standard!
+    }
     else
     {
         if (exifColorSpace == 65535)
@@ -785,14 +789,12 @@
                     return dateTime;
                 }
             }
-
         }
 
         // In second, trying to get Date & time from Iptc tags.
 
         if (!d->iptcMetadata().empty())
         {
-
             // Try digitization Iptc date time entries.
 
             Exiv2::IptcData iptcData(d->iptcMetadata());
@@ -834,8 +836,6 @@
         return QDateTime();
 }
 
-
-
 bool KExiv2::getImagePreview(QImage& preview) const
 {
     try
@@ -859,6 +859,14 @@
     if (!setProgramId(setProgramName))
         return false;
 
+    if (preview.isNull())
+    {
+        removeIptcTag("Iptc.Application2.Preview");
+        removeIptcTag("Iptc.Application2.PreviewFormat");
+        removeIptcTag("Iptc.Application2.PreviewVersion");
+        return true;
+    }
+
     try
     {
         QByteArray data;
@@ -868,7 +876,7 @@
         // A little bit compressed preview jpeg image to limit IPTC size.
         preview.save(&buffer, "JPEG");
         kDebug() << "JPEG image preview size: (" << preview.width() << " x "
-                      << preview.height() << ") pixels - " << data.size() << " 
bytes";
+                 << preview.height() << ") pixels - " << data.size() << " 
bytes";
 
         Exiv2::DataValue val;
         val.read((Exiv2::byte *)data.data(), data.size());
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/kexiv2previews.cpp 
new/libkexiv2-4.8.0/libkexiv2/kexiv2previews.cpp
--- old/libkexiv2-4.7.4/libkexiv2/kexiv2previews.cpp    2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/kexiv2previews.cpp    2011-07-27 
20:41:59.000000000 +0200
@@ -35,7 +35,7 @@
 namespace KExiv2Iface
 {
 
-class KExiv2PreviewsPriv
+class KExiv2Previews::KExiv2PreviewsPriv
 {
 public:
 
@@ -66,13 +66,15 @@
         }
     }
 
+public:
+
     Exiv2::Image::AutoPtr           image;
     Exiv2::PreviewManager*          manager;
     QList<Exiv2::PreviewProperties> properties;
 };
 
 KExiv2Previews::KExiv2Previews(const QString& filePath)
-              : d(new KExiv2PreviewsPriv)
+    : d(new KExiv2PreviewsPriv)
 {
     try
     {
@@ -86,7 +88,7 @@
 }
 
 KExiv2Previews::KExiv2Previews(const QByteArray& imgData)
-              : d(new KExiv2PreviewsPriv)
+    : d(new KExiv2PreviewsPriv)
 {
     try
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/kexiv2previews.h 
new/libkexiv2-4.8.0/libkexiv2/kexiv2previews.h
--- old/libkexiv2-4.7.4/libkexiv2/kexiv2previews.h      2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/kexiv2previews.h      2011-07-27 
20:41:59.000000000 +0200
@@ -43,8 +43,6 @@
 namespace KExiv2Iface
 {
 
-class KExiv2PreviewsPriv;
-
 class KEXIV2_EXPORT KExiv2Previews
 {
 public:
@@ -62,6 +60,7 @@
 
     /// Returns the pixel size of the original image, as read from the file 
(not the metadata).
     QSize originalSize() const;
+
     /// Returns the mimeType of the original image, detected from the file's 
content.
     QString originalMimeType() const;
 
@@ -98,6 +97,7 @@
 
 private:
 
+    class KExiv2PreviewsPriv;
     KExiv2PreviewsPriv* const d;
 };
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/msgtextedit.cpp 
new/libkexiv2-4.8.0/libkexiv2/msgtextedit.cpp
--- old/libkexiv2-4.7.4/libkexiv2/msgtextedit.cpp       2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/msgtextedit.cpp       2011-11-04 
15:35:49.000000000 +0100
@@ -64,13 +64,13 @@
 void MsgTextEdit::setClickMessage(const QString& msg)
 {
     d->message = msg;
-    viewport()->repaint();
+    viewport()->update();
 }
 
 void MsgTextEdit::setText(const QString& txt)
 {
     KTextEdit::setText(txt);
-    viewport()->repaint();
+    viewport()->update();
 }
 
 void MsgTextEdit::paintEvent(QPaintEvent* e)
@@ -90,19 +90,19 @@
 
 void MsgTextEdit::dropEvent(QDropEvent* e)
 {
-    viewport()->repaint();
+    viewport()->update();
     KTextEdit::dropEvent(e);
 }
 
 void MsgTextEdit::focusInEvent(QFocusEvent* e)
 {
-    viewport()->repaint();
+    viewport()->update();
     KTextEdit::focusInEvent(e);
 }
 
 void MsgTextEdit::focusOutEvent(QFocusEvent* e)
 {
-    viewport()->repaint();
+    viewport()->update();
     KTextEdit::focusOutEvent(e);
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/subjectwidget.cpp 
new/libkexiv2-4.8.0/libkexiv2/subjectwidget.cpp
--- old/libkexiv2-4.7.4/libkexiv2/subjectwidget.cpp     2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/subjectwidget.cpp     2011-11-04 
15:35:49.000000000 +0100
@@ -10,7 +10,7 @@
  * @author Copyright (C) 2006-2011 by Gilles Caulier
  *         <a href="mailto:caulier dot gilles at gmail dot com">caulier dot 
gilles at gmail dot com</a>
  * @author Copyright (C) 2009-2011 by Andi Clemens
- *         <a href="mailto:andi dot clemens at gmx dot net">andi dot clemens 
at gmx dot net</a>
+ *         <a href="mailto:andi dot clemens at googlemail dot com">andi dot 
clemens at googlemail dot com</a>
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General
@@ -193,7 +193,10 @@
 
     // --------------------------------------------------------
 
-    d->iprLabel    = new QLabel(i18n("I.P.R:"));
+    d->iprLabel    = new QLabel(i18nc("Information Provider Reference: "
+                                      "A name, registered with the IPTC/NAA, "
+                                      "identifying the provider that 
guarantees "
+                                      "the uniqueness of the UNO", "I.P.R:"));
     d->refLabel    = new QLabel(i18n("Reference:"));
     d->nameLabel   = new QLabel(i18n("Name:"));
     d->matterLabel = new QLabel(i18n("Matter:"));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/libkexiv2-4.7.4/libkexiv2/subjectwidget.h 
new/libkexiv2-4.8.0/libkexiv2/subjectwidget.h
--- old/libkexiv2-4.7.4/libkexiv2/subjectwidget.h       2011-05-20 
22:36:10.000000000 +0200
+++ new/libkexiv2-4.8.0/libkexiv2/subjectwidget.h       2011-11-04 
15:35:49.000000000 +0100
@@ -10,7 +10,7 @@
  * @author Copyright (C) 2006-2011 by Gilles Caulier
  *         <a href="mailto:caulier dot gilles at gmail dot com">caulier dot 
gilles at gmail dot com</a>
  * @author Copyright (C) 2009-2011 by Andi Clemens
- *         <a href="mailto:andi dot clemens at gmx dot net">andi dot clemens 
at gmx dot net</a>
+ *         <a href="mailto:andi dot clemens at googlemail dot com">andi dot 
clemens at googlemail dot com</a>
  *
  * This program is free software; you can redistribute it
  * and/or modify it under the terms of the GNU General

-- 
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to