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 "kde-maintainers@suse.de" 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 - dmueller@suse.de + +- 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 - dmueller@suse.de + +- 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-inf... 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; QListExiv2::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: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org