QString SwWindow::getImageCaption(const KPMetadata& meta) const { QString caption = meta.getCommentsDecoded(); if (!caption.isEmpty()) return caption; if (meta.hasExif()) { caption = meta.getExifComment(); if (!caption.isEmpty()) return caption; } if (meta.hasXmp()) { caption = meta.getXmpTagStringLangAlt("Xmp.dc.description", QString(), false); if (!caption.isEmpty()) return caption; caption = meta.getXmpTagStringLangAlt("Xmp.exif.UserComment", QString(), false); if (!caption.isEmpty()) return caption; caption = meta.getXmpTagStringLangAlt("Xmp.tiff.ImageDescription", QString(), false); if (!caption.isEmpty()) return caption; } if (meta.hasIptc()) { caption = meta.getIptcTagString("Iptc.Application2.Caption", false); if (!caption.isEmpty() && !caption.trimmed().isEmpty()) return caption; } return caption; }
void IPTCEnvelope::readMetadata(QByteArray& iptcData) { blockSignals(true); KPMetadata meta; meta.setIptc(iptcData); QString data, format, version; QStringList list; QDate date; QTime time; QString dateStr, timeStr; d->destinationEdit->clear(); d->destinationCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.Destination", false); if (!data.isNull()) { d->destinationEdit->setText(data); d->destinationCheck->setChecked(true); } d->destinationEdit->setEnabled(d->destinationCheck->isChecked()); d->envelopeIDEdit->clear(); d->envelopeIDCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.EnvelopeNumber", false); if (!data.isNull()) { d->envelopeIDEdit->setText(data); d->envelopeIDCheck->setChecked(true); } d->envelopeIDEdit->setEnabled(d->envelopeIDCheck->isChecked()); d->serviceIDEdit->clear(); d->serviceIDCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.ServiceId", false); if (!data.isNull()) { d->serviceIDEdit->setText(data); d->serviceIDCheck->setChecked(true); } d->serviceIDEdit->setEnabled(d->serviceIDCheck->isChecked()); d->unoIDEdit->clear(); d->unoIDCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.UNO", false); if (!data.isNull()) { d->unoIDEdit->setText(data); d->unoIDCheck->setChecked(true); } d->unoIDEdit->setEnabled(d->unoIDCheck->isChecked()); d->productIDEdit->clear(); d->productIDCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.ProductId", false); if (!data.isNull()) { d->productIDEdit->setText(data); d->productIDCheck->setChecked(true); } d->productIDEdit->setEnabled(d->productIDCheck->isChecked()); d->priorityCB->setCurrentIndex(0); d->priorityCheck->setChecked(false); data = meta.getIptcTagString("Iptc.Envelope.EnvelopePriority", false); if (!data.isNull()) { const int val = data.toInt(); if (val >= 0 && val <= 9) { d->priorityCB->setCurrentIndex(val); d->priorityCheck->setChecked(true); } else d->priorityCheck->setValid(false); } d->priorityCB->setEnabled(d->priorityCheck->isChecked()); d->formatCB->setCurrentIndex(0); d->formatCheck->setChecked(false); format = meta.getIptcTagString("Iptc.Envelope.FileFormat", false); version = meta.getIptcTagString("Iptc.Envelope.FileVersion", false); if (!format.isNull()) { if (!version.isNull()) { if (format.size() == 1) format.prepend("0"); if (version.size() == 1) version.prepend("0"); QString key = QString("%1-%2").arg(format).arg(version); int index = -1, i = 0; for (IPTCEnvelopePriv::FileFormatMap::Iterator it = d->fileFormatMap.begin(); it != d->fileFormatMap.end(); ++it) { if (it.key() == key) index = i; i++; } if (index != -1) { d->formatCB->setCurrentIndex(index); d->formatCheck->setChecked(true); } else d->formatCheck->setValid(false); } else d->formatCheck->setValid(false); } d->formatCB->setEnabled(d->formatCheck->isChecked()); dateStr = meta.getIptcTagString("Iptc.Envelope.DateSent", false); timeStr = meta.getIptcTagString("Iptc.Envelope.TimeSent", false); d->dateSentSel->setDate(QDate::currentDate()); d->dateSentCheck->setChecked(false); if (!dateStr.isEmpty()) { date = QDate::fromString(dateStr, Qt::ISODate); if (date.isValid()) { d->dateSentSel->setDate(date); d->dateSentCheck->setChecked(true); } } d->dateSentSel->setEnabled(d->dateSentCheck->isChecked()); d->timeSentSel->setTime(QTime::currentTime()); d->timeSentCheck->setChecked(false); d->zoneSentSel->setToUTC(); if (!timeStr.isEmpty()) { time = QTime::fromString(timeStr, Qt::ISODate); if (time.isValid()) { d->timeSentSel->setTime(time); d->timeSentCheck->setChecked(true); d->zoneSentSel->setTimeZone(timeStr); } } d->timeSentSel->setEnabled(d->timeSentCheck->isChecked()); d->zoneSentSel->setEnabled(d->timeSentCheck->isChecked()); blockSignals(false); }