void KUrlMimeData::setMetaData(const MetaDataMap& metaData, QMimeData *mimeData) { QByteArray metaDataData; // :) for(MetaDataMap::const_iterator it = metaData.begin(); it != metaData.end(); ++it) { metaDataData += it.key().toUtf8(); metaDataData += "$@@$"; metaDataData += it.value().toUtf8(); metaDataData += "$@@$"; } mimeData->setData(QString::fromLatin1("application/x-kio-metadata"), metaDataData); }
bool DMetadata::removeXmpTags(const QStringList& tagFilters) { MetaDataMap m = getXmpTagsDataList(tagFilters); if (m.isEmpty()) return false; for (MetaDataMap::iterator it = m.begin() ; it != m.end() ; ++it) { removeXmpTag(it.key().toLatin1().constData()); } return true; }
KExiv2::MetaDataMap KExiv2::getIptcTagsDataList(const QStringList& iptcKeysFilter, bool invertSelection) const { if (d->iptcMetadata().empty()) return MetaDataMap(); try { Exiv2::IptcData iptcData = d->iptcMetadata(); iptcData.sortByKey(); QString ifDItemName; MetaDataMap metaDataMap; for (Exiv2::IptcData::iterator md = iptcData.begin(); md != iptcData.end(); ++md) { QString key = QString::fromLocal8Bit(md->key().c_str()); // Decode the tag value with a user friendly output. std::ostringstream os; os << *md; QString value = QString(os.str().c_str()); // To make a string just on one line. value.replace('\n', ' '); // Some Iptc key are redondancy. check if already one exist... MetaDataMap::iterator it = metaDataMap.find(key); // We apply a filter to get only the Iptc tags that we need. if (!invertSelection) { if (iptcKeysFilter.contains(key.section('.', 1, 1))) { if (it == metaDataMap.end()) metaDataMap.insert(key, value); else { QString v = *it; v.append(", "); v.append(value); metaDataMap.insert(key, v); } } } else { if (!iptcKeysFilter.contains(key.section('.', 1, 1))) { if (it == metaDataMap.end()) metaDataMap.insert(key, value); else { QString v = *it; v.append(", "); v.append(value); metaDataMap.insert(key, v); } } } } return metaDataMap; } catch (Exiv2::Error& e) { d->printExiv2ExceptionError("Cannot parse Iptc metadata using Exiv2 ", e); } return MetaDataMap(); }