diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-05-07 00:00:40 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-05-07 00:00:40 +0200 |
| commit | 581797d640af1572f884ddf4395924894b745b3a (patch) | |
| tree | 2b34f05ffe9ad73c49225e82d91a8dede9f3d6de /src/lib | |
| parent | 2d8599e4277f1a357ed0f7101777ca9b18e3876a (diff) | |
Add a 'Make DKDM' dialogue box to simplify and (hopefully) clarify DKDM creation (#1637).
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/kdm_with_metadata.cc | 28 | ||||
| -rw-r--r-- | src/lib/kdm_with_metadata.h | 26 | ||||
| -rw-r--r-- | src/lib/screen.cc | 3 | ||||
| -rw-r--r-- | src/lib/send_kdm_email_job.cc | 18 | ||||
| -rw-r--r-- | src/lib/send_kdm_email_job.h | 8 | ||||
| -rw-r--r-- | src/lib/wscript | 1 |
6 files changed, 59 insertions, 25 deletions
diff --git a/src/lib/kdm_with_metadata.cc b/src/lib/kdm_with_metadata.cc index 08b6dbbab..0ef1b8f38 100644 --- a/src/lib/kdm_with_metadata.cc +++ b/src/lib/kdm_with_metadata.cc @@ -103,7 +103,7 @@ make_zip_file (list<KDMWithMetadataPtr> kdms, boost::filesystem::path zip_file, /** Collect a list of KDMWithMetadatas into a list of lists so that - * each list contains the KDMs for one cinema. + * each list contains the KDMs for one list. */ list<list<KDMWithMetadataPtr> > collect (list<KDMWithMetadataPtr> kdms) @@ -115,7 +115,7 @@ collect (list<KDMWithMetadataPtr> kdms) list<list<KDMWithMetadataPtr> >::iterator j = grouped.begin (); while (j != grouped.end()) { - if (j->front()->cinema() == i->cinema()) { + if (j->front()->group() == i->group()) { j->push_back (i); break; } @@ -132,10 +132,10 @@ collect (list<KDMWithMetadataPtr> kdms) } -/** Write one directory per cinema into another directory */ +/** Write one directory per list into another directory */ int write_directories ( - list<list<KDMWithMetadataPtr> > cinema_kdms, + list<list<KDMWithMetadataPtr> > kdms, boost::filesystem::path directory, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, @@ -144,7 +144,7 @@ write_directories ( { int written = 0; - BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) { + BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, kdms) { boost::filesystem::path path = directory; path /= container_name_format.get(i.front()->name_values(), "", "s"); if (!boost::filesystem::exists (path) || confirm_overwrite (path)) { @@ -161,7 +161,7 @@ write_directories ( /** Write one ZIP file per cinema into a directory */ int write_zip_files ( - list<list<KDMWithMetadataPtr> > cinema_kdms, + list<list<KDMWithMetadataPtr> > kdms, boost::filesystem::path directory, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, @@ -170,7 +170,7 @@ write_zip_files ( { int written = 0; - BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) { + BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, kdms) { boost::filesystem::path path = directory; path /= container_name_format.get(i.front()->name_values(), ".zip", "s"); if (!boost::filesystem::exists (path) || confirm_overwrite (path)) { @@ -188,7 +188,7 @@ write_zip_files ( /** Email one ZIP file per cinema to the cinema. - * @param cinema_kdms KDMS to email. + * @param kdms KDMs to email. * @param container_name_format Format of folder / ZIP to use. * @param filename_format Format of filenames to use. * @param name_values Values to substitute into \p container_name_format and \p filename_format. @@ -196,7 +196,7 @@ write_zip_files ( */ void email ( - list<list<KDMWithMetadataPtr> > cinema_kdms, + list<list<KDMWithMetadataPtr> > kdms, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, string cpl_name @@ -208,9 +208,9 @@ email ( throw NetworkError (_("No mail server configured in preferences")); } - BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) { + BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, kdms) { - if (i.front()->cinema()->emails.empty()) { + if (i.front()->emails().empty()) { continue; } @@ -223,13 +223,13 @@ email ( boost::algorithm::replace_all (subject, "$CPL_NAME", cpl_name); boost::algorithm::replace_all (subject, "$START_TIME", i.front()->get('b').get_value_or("")); boost::algorithm::replace_all (subject, "$END_TIME", i.front()->get('e').get_value_or("")); - boost::algorithm::replace_all (subject, "$CINEMA_NAME", i.front()->cinema()->name); + boost::algorithm::replace_all (subject, "$CINEMA_NAME", i.front()->get('c').get_value_or("")); string body = config->kdm_email().c_str(); boost::algorithm::replace_all (body, "$CPL_NAME", cpl_name); boost::algorithm::replace_all (body, "$START_TIME", i.front()->get('b').get_value_or("")); boost::algorithm::replace_all (body, "$END_TIME", i.front()->get('e').get_value_or("")); - boost::algorithm::replace_all (body, "$CINEMA_NAME", i.front()->cinema()->name); + boost::algorithm::replace_all (body, "$CINEMA_NAME", i.front()->get('c').get_value_or("")); string screens; BOOST_FOREACH (KDMWithMetadataPtr j, i) { @@ -240,7 +240,7 @@ email ( } boost::algorithm::replace_all (body, "$SCREENS", screens.substr (0, screens.length() - 2)); - Emailer email (config->kdm_from(), i.front()->cinema()->emails, subject, body); + Emailer email (config->kdm_from(), i.front()->emails(), subject, body); BOOST_FOREACH (string i, config->kdm_cc()) { email.add_cc (i); diff --git a/src/lib/kdm_with_metadata.h b/src/lib/kdm_with_metadata.h index 6b9ff23c7..b6bec1c4c 100644 --- a/src/lib/kdm_with_metadata.h +++ b/src/lib/kdm_with_metadata.h @@ -33,9 +33,10 @@ class Cinema; class KDMWithMetadata { public: - KDMWithMetadata (dcp::NameFormat::Map const& name_values, boost::shared_ptr<const Cinema> cinema) + KDMWithMetadata (dcp::NameFormat::Map const& name_values, void const* group, std::list<std::string> emails) : _name_values (name_values) - , _cinema (cinema) + , _group (group) + , _emails (emails) {} virtual ~KDMWithMetadata () {} @@ -49,13 +50,18 @@ public: boost::optional<std::string> get (char k) const; - boost::shared_ptr<const Cinema> cinema () const { - return _cinema; + void const* group () const { + return _group; + } + + std::list<std::string> emails () const { + return _emails; } private: dcp::NameFormat::Map _name_values; - boost::shared_ptr<const Cinema> _cinema; + void const* _group; + std::list<std::string> _emails; }; @@ -75,7 +81,7 @@ std::list<std::list<KDMWithMetadataPtr> > collect (std::list<KDMWithMetadataPtr> int write_directories ( - std::list<std::list<KDMWithMetadataPtr> > cinema_kdms, + std::list<std::list<KDMWithMetadataPtr> > kdms, boost::filesystem::path directory, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, @@ -84,7 +90,7 @@ int write_directories ( int write_zip_files ( - std::list<std::list<KDMWithMetadataPtr> > cinema_kdms, + std::list<std::list<KDMWithMetadataPtr> > kdms, boost::filesystem::path directory, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, @@ -93,7 +99,7 @@ int write_zip_files ( void email ( - std::list<std::list<KDMWithMetadataPtr> > cinema_kdms, + std::list<std::list<KDMWithMetadataPtr> > kdms, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, std::string cpl_name @@ -104,8 +110,8 @@ template <class T> class SpecialKDMWithMetadata : public KDMWithMetadata { public: - SpecialKDMWithMetadata (dcp::NameFormat::Map const& name_values, boost::shared_ptr<const Cinema> cinema, T k) - : KDMWithMetadata (name_values, cinema) + SpecialKDMWithMetadata (dcp::NameFormat::Map const& name_values, void const* group, std::list<std::string> emails, T k) + : KDMWithMetadata (name_values, group, emails) , kdm (k) {} diff --git a/src/lib/screen.cc b/src/lib/screen.cc index 2441efccb..61a27f2bc 100644 --- a/src/lib/screen.cc +++ b/src/lib/screen.cc @@ -29,6 +29,7 @@ using std::string; using std::vector; +using std::list; using boost::shared_ptr; using boost::optional; using namespace dcpomatic; @@ -106,6 +107,6 @@ kdm_for_screen ( name_values['e'] = end.date() + " " + end.time_of_day(true, false); name_values['i'] = kdm.cpl_id(); - return KDMWithMetadataPtr(new DCPKDMWithMetadata(name_values, cinema, kdm)); + return KDMWithMetadataPtr(new DCPKDMWithMetadata(name_values, cinema.get(), cinema ? cinema->emails : list<string>(), kdm)); } diff --git a/src/lib/send_kdm_email_job.cc b/src/lib/send_kdm_email_job.cc index 18f686717..55a171811 100644 --- a/src/lib/send_kdm_email_job.cc +++ b/src/lib/send_kdm_email_job.cc @@ -31,6 +31,24 @@ using std::list; using boost::shared_ptr; using boost::optional; +SendKDMEmailJob::SendKDMEmailJob ( + list<KDMWithMetadataPtr> kdms, + dcp::NameFormat container_name_format, + dcp::NameFormat filename_format, + string cpl_name + ) + : Job (shared_ptr<Film>()) + , _container_name_format (container_name_format) + , _filename_format (filename_format) + , _cpl_name (cpl_name) +{ + BOOST_FOREACH (KDMWithMetadataPtr i, kdms) { + list<KDMWithMetadataPtr> s; + s.push_back (i); + _kdms.push_back (s); + } +} + /** @param kdms KDMs to email. * @param container_name_format Format to ues for folders / ZIP files. * @param filename_format Format to use for filenames. diff --git a/src/lib/send_kdm_email_job.h b/src/lib/send_kdm_email_job.h index 452c76cee..fa409edaa 100644 --- a/src/lib/send_kdm_email_job.h +++ b/src/lib/send_kdm_email_job.h @@ -34,11 +34,19 @@ class SendKDMEmailJob : public Job { public: SendKDMEmailJob ( + std::list<KDMWithMetadataPtr> kdms, + dcp::NameFormat container_name_format, + dcp::NameFormat filename_format, + std::string cpl_name + ); + + SendKDMEmailJob ( std::list<std::list<KDMWithMetadataPtr> > kdms, dcp::NameFormat container_name_format, dcp::NameFormat filename_format, std::string cpl_name ); + ~SendKDMEmailJob (); std::string name () const; diff --git a/src/lib/wscript b/src/lib/wscript index 828f0290b..0f2a5d197 100644 --- a/src/lib/wscript +++ b/src/lib/wscript @@ -77,6 +77,7 @@ sources = """ decoder_part.cc decrypted_ecinema_kdm.cc digester.cc + dkdm_recipient.cc dkdm_wrapper.cc dolby_cp750.cc edid.cc |
