bool MetadataHub::write(DImg& image, WriteComponent writeMode, bool ignoreLazySync, const MetadataSettingsContainer& settings) { applyChangeNotifications(); // if no DMetadata object is needed at all, don't construct one if (!willWriteMetadata(writeMode, settings)) { return false; } // See DImgLoader::readMetadata() and saveMetadata() DMetadata metadata; metadata.setData(image.getMetadata()); QString filePath = image.originalFilePath(); if (filePath.isEmpty()) { filePath = image.lastSavedFilePath(); } if (!ignoreLazySync && settings.useLazySync && !filePath.isEmpty()) { ImageInfo info = ImageInfo::fromLocalFile(filePath); MetadataHubMngr::instance()->addPending(info); return true; } if (!filePath.isEmpty()) { writeToBaloo(filePath); } return write(metadata, writeMode, settings); }
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; }