X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fconfig.cc;h=1f5a25ae4dcb52f785930d8948bb5998f25dbb23;hb=cf8bbea2de38c4e9ac140f55b27311b7b6dcd814;hp=d20536f14afc00f3c4c2539322a7af89499f75e1;hpb=6f31627406a63d09c3ec33494a54158095663111;p=dcpomatic.git diff --git a/src/lib/config.cc b/src/lib/config.cc index d20536f14..1f5a25ae4 100644 --- a/src/lib/config.cc +++ b/src/lib/config.cc @@ -42,10 +42,12 @@ #include "i18n.h" using std::vector; +using std::cout; using std::ifstream; using std::string; using std::list; using std::max; +using std::remove; using std::exception; using std::cerr; using boost::shared_ptr; @@ -158,9 +160,12 @@ Config::read () _default_dcp_content_type = DCPContentType::from_isdcf_name (c.get ()); } - _dcp_metadata.issuer = f.optional_string_child ("DCPMetadataIssuer").get_value_or (""); - _dcp_metadata.creator = f.optional_string_child ("DCPMetadataCreator").get_value_or (""); - + if (f.optional_string_child ("DCPMetadataIssuer")) { + _dcp_issuer = f.string_child ("DCPMetadataIssuer"); + } else if (f.optional_string_child ("DCPIssuer")) { + _dcp_issuer = f.string_child ("DCPIssuer"); + } + if (version && version.get() >= 2) { _default_isdcf_metadata = ISDCFMetadata (f.node_child ("ISDCFMetadata")); } else { @@ -215,6 +220,11 @@ Config::read () _log_types = f.optional_number_child ("LogTypes").get_value_or (Log::TYPE_GENERAL | Log::TYPE_WARNING | Log::TYPE_ERROR); + list his = f.node_children ("History"); + for (list::const_iterator i = his.begin(); i != his.end(); ++i) { + _history.push_back ((*i)->content ()); + } + cxml::NodePtr signer = f.optional_node_child ("Signer"); dcp::CertificateChain signer_chain; if (signer) { @@ -328,8 +338,7 @@ Config::write () const if (_default_dcp_content_type) { root->add_child("DefaultDCPContentType")->add_child_text (_default_dcp_content_type->isdcf_name ()); } - root->add_child("DCPMetadataIssuer")->add_child_text (_dcp_metadata.issuer); - root->add_child("DCPMetadataCreator")->add_child_text (_dcp_metadata.creator); + root->add_child("DCPIssuer")->add_child_text (_dcp_issuer); _default_isdcf_metadata.as_xml (root->add_child ("ISDCFMetadata")); @@ -371,6 +380,10 @@ Config::write () const root->add_child("DecryptionCertificate")->add_child_text (_decryption_certificate.certificate (true)); root->add_child("DecryptionPrivateKey")->add_child_text (_decryption_private_key); + for (vector::const_iterator i = _history.begin(); i != _history.end(); ++i) { + root->add_child("History")->add_child_text (i->string ()); + } + doc.write_to_file_formatted (file(false).string ()); } @@ -416,3 +429,17 @@ Config::reset_kdm_email () "Best regards,\nDCP-o-matic" ); } + +void +Config::add_to_history (boost::filesystem::path p) +{ + /* Remove existing instances of this path in the history */ + _history.erase (remove (_history.begin(), _history.end(), p), _history.end ()); + + _history.insert (_history.begin (), p); + if (_history.size() > HISTORY_SIZE) { + _history.pop_back (); + } + + changed (); +}