File indexing completed on 2024-05-12 15:59:15

0001 /*
0002  *  SPDX-FileCopyrightText: 2008 Cyrille Berger <cberger@cberger.net>
0003  *
0004  *  SPDX-License-Identifier: LGPL-2.1-or-later
0005  */
0006 
0007 #include "kis_meta_data_filter_p.h"
0008 #include <QDate>
0009 
0010 #include <klocalizedstring.h>
0011 #include <KritaVersionWrapper.h>
0012 
0013 #include "kis_meta_data_entry.h"
0014 #include "kis_meta_data_schema.h"
0015 #include "kis_meta_data_schema_registry.h"
0016 #include "kis_meta_data_store.h"
0017 #include "kis_meta_data_value.h"
0018 
0019 #include "kis_debug.h"
0020 
0021 using namespace KisMetaData;
0022 
0023 AnonymizerFilter::~AnonymizerFilter()
0024 {
0025 }
0026 
0027 bool AnonymizerFilter::defaultEnabled() const
0028 {
0029     return false;
0030 }
0031 
0032 QString AnonymizerFilter::id() const
0033 {
0034     return "Anonymizer";
0035 }
0036 
0037 QString AnonymizerFilter::name() const
0038 {
0039     return i18n("Anonymizer");
0040 }
0041 
0042 QString AnonymizerFilter::description() const
0043 {
0044     return i18n("Remove personal information: author, location...");
0045 }
0046 
0047 void AnonymizerFilter::filter(KisMetaData::Store* store) const
0048 {
0049     dbgMetaData << "Anonymize a store";
0050     const KisMetaData::Schema* dcSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::DublinCoreSchemaUri);
0051     store->removeEntry(dcSchema, "contributor");
0052     store->removeEntry(dcSchema, "creator");
0053     store->removeEntry(dcSchema, "publisher");
0054     store->removeEntry(dcSchema, "rights");
0055 
0056     const KisMetaData::Schema* psSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::PhotoshopSchemaUri);
0057     store->removeEntry(psSchema, "AuthorsPosition");
0058     store->removeEntry(psSchema, "CaptionWriter");
0059     store->removeEntry(psSchema, "Credit");
0060     store->removeEntry(psSchema, "City");
0061     store->removeEntry(psSchema, "Country");
0062 }
0063 
0064 //------------------------------------//
0065 //---------- ToolInfoFilter ----------//
0066 //------------------------------------//
0067 
0068 ToolInfoFilter::~ToolInfoFilter()
0069 {
0070 }
0071 
0072 bool ToolInfoFilter::defaultEnabled() const
0073 {
0074     return true;
0075 }
0076 
0077 QString ToolInfoFilter::id() const
0078 {
0079     return "ToolInfo";
0080 }
0081 
0082 QString ToolInfoFilter::name() const
0083 {
0084     return i18n("Tool information");
0085 }
0086 
0087 QString ToolInfoFilter::description() const
0088 {
0089     return i18n("Add the name of the tool used for creation and the modification date");
0090 }
0091 
0092 void ToolInfoFilter::filter(KisMetaData::Store* store) const
0093 {
0094     const KisMetaData::Schema* xmpSchema = KisMetaData::SchemaRegistry::instance()->schemaFromUri(KisMetaData::Schema::XMPSchemaUri);
0095     store->getEntry(xmpSchema, "ModifyDate").value() = Value(QDate::currentDate());
0096     store->getEntry(xmpSchema, "MetadataDate").value() = Value(QDate::currentDate());
0097     if (!store->containsEntry(xmpSchema, "CreatorTool")) {
0098         store->getEntry(xmpSchema, "CreatorTool").value() = Value(i18n("Krita %1", KritaVersionWrapper::versionString()));
0099     }
0100 }