bool AssignTemplate::toolOperations() { DMetadata meta; if (image().isNull()) { if (!meta.load(inputUrl().toLocalFile())) { return false; } } else { meta.setData(image().getMetadata()); } QString title = settings()[QLatin1String("TemplateTitle")].toString(); if (title == Template::removeTemplateTitle()) { meta.removeMetadataTemplate(); } else if (title.isEmpty()) { // Nothing to do. } else { Template t = TemplateManager::defaultManager()->findByTitle(title); meta.removeMetadataTemplate(); meta.setMetadataTemplate(t); } bool ret = true; if (image().isNull()) { QFile::remove(outputUrl().toLocalFile()); ret = QFile::copy(inputUrl().toLocalFile(), outputUrl().toLocalFile()); if (ret && !title.isEmpty()) { ret = meta.save(outputUrl().toLocalFile()); } } else { if (!title.isEmpty()) { image().setMetadata(meta.data()); } ret = savefromDImg(); } return ret; }
bool MetadataHub::write(DMetadata& metadata, WriteComponent writeMode, const MetadataSettingsContainer& settings) { applyChangeNotifications(); bool dirty = false; metadata.setSettings(settings); // find out in advance if we have something to write - needed for FullWriteIfChanged mode bool saveTitle = (settings.saveComments && (d->titlesStatus == MetadataAvailable) && writeMode.testFlag(WRITE_TITLE)); bool saveComment = (settings.saveComments && (d->commentsStatus == MetadataAvailable) && writeMode.testFlag(WRITE_COMMENTS)); bool saveDateTime = (settings.saveDateTime && (d->dateTimeStatus == MetadataAvailable) && writeMode.testFlag(WRITE_DATETIME)); bool savePickLabel = (settings.savePickLabel && (d->pickLabelStatus == MetadataAvailable) && writeMode.testFlag(WRITE_PICKLABEL)); bool saveColorLabel = (settings.saveColorLabel && (d->colorLabelStatus == MetadataAvailable) && writeMode.testFlag(WRITE_COLORLABEL)); bool saveRating = (settings.saveRating && (d->ratingStatus == MetadataAvailable) && writeMode.testFlag(WRITE_RATING)); bool saveTemplate = (settings.saveTemplate && (d->templateStatus == MetadataAvailable) && writeMode.testFlag(WRITE_TEMPLATE)); bool saveTags = settings.saveTags && writeMode.testFlag(WRITE_TAGS); bool saveFaces = settings.saveFaceTags && writeMode.testFlag((WRITE_TAGS)); if (saveTitle) { // Store titles in image as Iptc Object name and Xmp. dirty |= metadata.setImageTitles(d->titles); } if (saveComment) { // Store comments in image as JFIF comments, Exif comments, Iptc Caption, and Xmp. dirty |= metadata.setImageComments(d->comments); } if (saveDateTime) { // Store Image Date & Time as Exif and Iptc tags. dirty |= metadata.setImageDateTime(d->dateTime, false); } if (savePickLabel) { // Store Image Pick Label as XMP tag. dirty |= metadata.setImagePickLabel(d->pickLabel); } if (saveColorLabel) { // Store Image Color Label as XMP tag. dirty |= metadata.setImageColorLabel(d->colorLabel); } if (saveRating) { // Store Image rating as Iptc tag. dirty |= metadata.setImageRating(d->rating); } if (saveTemplate) { QString title = d->metadataTemplate.templateTitle(); if (title == Template::removeTemplateTitle()) { dirty |= metadata.removeMetadataTemplate(); } else if (title.isEmpty()) { // Nothing to do. } else { // Store metadata template as XMP tag. dirty |= metadata.removeMetadataTemplate(); dirty |= metadata.setMetadataTemplate(d->metadataTemplate); } } dirty |= metadata.setImageFacesMap(d->faceTagsList,saveFaces); dirty |= writeTags(metadata,saveTags); return dirty; }