summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2020-05-07 00:00:40 +0200
committerCarl Hetherington <cth@carlh.net>2020-05-07 00:00:40 +0200
commit581797d640af1572f884ddf4395924894b745b3a (patch)
tree2b34f05ffe9ad73c49225e82d91a8dede9f3d6de /src/lib
parent2d8599e4277f1a357ed0f7101777ca9b18e3876a (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.cc28
-rw-r--r--src/lib/kdm_with_metadata.h26
-rw-r--r--src/lib/screen.cc3
-rw-r--r--src/lib/send_kdm_email_job.cc18
-rw-r--r--src/lib/send_kdm_email_job.h8
-rw-r--r--src/lib/wscript1
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