Hi,

Attached patch adds support for XMP metadata to Gwenview. I would like
to see it go into KDE 4.3.

Since it takes advantage of the latest features from Exiv2, the patch is
quite simple. It introduces only one new string: XMP, which I believe in
fact should not be translated.

Is it OK to apply?

Aurélien

PS: Please CC me.
>From 9eed2735afbbb558d6ffa31cba505676440ff83b Mon Sep 17 00:00:00 2001
From: =?utf-8?q?Aur=C3=A9lien=20G=C3=A2teau?= <[email protected]>
Date: Wed, 6 May 2009 19:09:40 +0200
Subject: [PATCH] Add support for Xmp.

---
 gwenview/lib/imagemetainfomodel.cpp |   16 ++++++++++++++--
 1 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/gwenview/lib/imagemetainfomodel.cpp b/gwenview/lib/imagemetainfomodel.cpp
index 292a6f9..6e40575 100644
--- a/gwenview/lib/imagemetainfomodel.cpp
+++ b/gwenview/lib/imagemetainfomodel.cpp
@@ -45,7 +45,8 @@ enum GroupRow {
 	NoGroup = -1,
 	GeneralGroup,
 	ExifGroup,
-	IptcGroup
+	IptcGroup,
+	XmpGroup
 };
 
 
@@ -276,10 +277,11 @@ struct ImageMetaInfoModelPrivate {
 ImageMetaInfoModel::ImageMetaInfoModel()
 : d(new ImageMetaInfoModelPrivate) {
 	d->mModel = this;
-	d->mMetaInfoGroupVector.resize(3);
+	d->mMetaInfoGroupVector.resize(4);
 	d->mMetaInfoGroupVector[GeneralGroup] = new MetaInfoGroup(i18nc("@title:group General info about the image", "General"));
 	d->mMetaInfoGroupVector[ExifGroup] = new MetaInfoGroup(i18nc("@title:group", "Exif"));
 	d->mMetaInfoGroupVector[IptcGroup] = new MetaInfoGroup(i18nc("@title:group", "Iptc"));
+	d->mMetaInfoGroupVector[XmpGroup]  = new MetaInfoGroup(i18nc("@title:group", "Xmp"));
 	d->initGeneralGroup();
 }
 
@@ -324,10 +326,13 @@ void ImageMetaInfoModel::setImageSize(const QSize& size) {
 void ImageMetaInfoModel::setExiv2Image(const Exiv2::Image* image) {
 	MetaInfoGroup* exifGroup = d->mMetaInfoGroupVector[ExifGroup];
 	MetaInfoGroup* iptcGroup = d->mMetaInfoGroupVector[IptcGroup];
+	MetaInfoGroup* xmpGroup  = d->mMetaInfoGroupVector[XmpGroup];
 	QModelIndex exifIndex = index(ExifGroup, 0);
 	QModelIndex iptcIndex = index(IptcGroup, 0);
+	QModelIndex xmpIndex  = index(XmpGroup, 0);
 	d->clearGroup(exifGroup, exifIndex);
 	d->clearGroup(iptcGroup, iptcIndex);
+	d->clearGroup(xmpGroup,  xmpIndex);
 
 	if (!image) {
 		return;
@@ -342,6 +347,11 @@ void ImageMetaInfoModel::setExiv2Image(const Exiv2::Image* image) {
 		const Exiv2::IptcData& iptcData = image->iptcData();
 		d->fillExivGroup<Exiv2::IptcData, Exiv2::IptcData::const_iterator>(iptcIndex, iptcGroup, iptcData);
 	}
+
+	if (image->checkMode(Exiv2::mdXmp) & Exiv2::amRead) {
+		const Exiv2::XmpData& xmpData = image->xmpData();
+		d->fillExivGroup<Exiv2::XmpData, Exiv2::XmpData::const_iterator>(xmpIndex, xmpGroup, xmpData);
+	}
 }
 
 
@@ -353,6 +363,8 @@ void ImageMetaInfoModel::getInfoForKey(const QString& key, QString* label, QStri
 		group = d->mMetaInfoGroupVector[ExifGroup];
 	} else if (key.startsWith(QLatin1String("Iptc"))) {
 		group = d->mMetaInfoGroupVector[IptcGroup];
+	} else if (key.startsWith(QLatin1String("Xmp"))) {
+		group = d->mMetaInfoGroupVector[XmpGroup];
 	} else {
 		kWarning() << "Unknown metainfo key" << key;
 		return;
-- 
1.6.0.4

_______________________________________________
release-team mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/release-team

Reply via email to