Remove swaroop variant.
[dcpomatic.git] / src / tools / dcpomatic_kdm.cc
index bbaf5bad717d03b6b6eb12c3855251113fe23210..aa7cf8340ab6efce401580f4397bb6a3a18025e5 100644 (file)
 #include "lib/cinema.h"
 #include "lib/dkdm_wrapper.h"
 #include "lib/cross.h"
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-#include "lib/decrypted_ecinema_kdm.h"
-#endif
 #include <dcp/encrypted_kdm.h>
 #include <dcp/decrypted_kdm.h>
 #include <dcp/exceptions.h>
+#include "lib/warnings.h"
+DCPOMATIC_DISABLE_WARNINGS
 #include <wx/wx.h>
 #include <wx/preferences.h>
 #include <wx/splash.h>
 #include <wx/filepicker.h>
+DCPOMATIC_ENABLE_WARNINGS
 #ifdef __WXOSX__
 #include <ApplicationServices/ApplicationServices.h>
 #endif
@@ -76,6 +76,9 @@ using boost::bind;
 using boost::optional;
 using boost::ref;
 using boost::dynamic_pointer_cast;
+#if BOOST_VERSION >= 106100
+using namespace boost::placeholders;
+#endif
 using namespace dcpomatic;
 
 enum {
@@ -302,43 +305,9 @@ private:
                                return;
                        }
 
-                       list<KDMWithMetadataPtr> screen_kdms;
+                       list<KDMWithMetadataPtr> kdms;
                        string title;
 
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-                       shared_ptr<ECinemaDKDM> ecinema_dkdm = boost::dynamic_pointer_cast<ECinemaDKDM> (dkdm_base);
-                       if (ecinema_dkdm) {
-                               DecryptedECinemaKDM decrypted (ecinema_dkdm->dkdm(), Config::instance()->decryption_chain()->key().get());
-                               title = decrypted.name ();
-
-                               BOOST_FOREACH (shared_ptr<Screen> i, _screens->screens()) {
-
-                                       if (!i->recipient) {
-                                               continue;
-                                       }
-
-                                       DecryptedECinemaKDM kdm (
-                                               decrypted.id(),
-                                               decrypted.name(),
-                                               decrypted.key(),
-                                               dcp::LocalTime (_timing->from(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
-                                               dcp::LocalTime (_timing->until(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute())
-                                               );
-
-                                       dcp::NameFormat::Map name_values;
-                                       name_values['c'] = i->cinema->name;
-                                       name_values['s'] = i->name;
-
-                                       /* Encrypt */
-                                       screen_kdms.push_back (
-                                               KDMWithMetadataPtr(
-                                                       new ECinemaKDMWithMetadata(name_values, i->cinema, kdm.encrypt(i->recipient.get()))
-                                                       )
-                                               );
-                               }
-                       }
-#endif
-
                        shared_ptr<DKDM> dkdm = boost::dynamic_pointer_cast<DKDM> (dkdm_base);
                        if (dkdm) {
 
@@ -358,10 +327,13 @@ private:
                                                continue;
                                        }
 
+                                       dcp::LocalTime begin(_timing->from(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute());
+                                       dcp::LocalTime end(_timing->until(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute());
+
                                        /* Make an empty KDM */
                                        dcp::DecryptedKDM kdm (
-                                               dcp::LocalTime (_timing->from(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
-                                               dcp::LocalTime (_timing->until(), i->cinema->utc_offset_hour(), i->cinema->utc_offset_minute()),
+                                               begin,
+                                               end,
                                                decrypted.annotation_text().get_value_or (""),
                                                decrypted.content_title_text(),
                                                dcp::LocalTime().as_string()
@@ -372,32 +344,34 @@ private:
                                                kdm.add_key (j);
                                        }
 
+                                       dcp::EncryptedKDM const encrypted = kdm.encrypt(
+                                                       signer, i->recipient.get(), i->trusted_device_thumbprints(), _output->formulation(),
+                                                       !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0
+                                                       );
+
                                        dcp::NameFormat::Map name_values;
                                        name_values['c'] = i->cinema->name;
                                        name_values['s'] = i->name;
+                                       name_values['f'] = title;
+                                       name_values['b'] = begin.date() + " " + begin.time_of_day(true, false);
+                                       name_values['e'] = end.date() + " " + end.time_of_day(true, false);
+                                       name_values['i'] = encrypted.cpl_id ();
 
                                        /* Encrypt */
-                                       screen_kdms.push_back (
+                                       kdms.push_back (
                                                KDMWithMetadataPtr(
-                                                       new DCPKDMWithMetadata(
-                                                               name_values,
-                                                               i->cinema,
-                                                               kdm.encrypt(
-                                                                       signer, i->recipient.get(), i->trusted_device_thumbprints(), _output->formulation(),
-                                                                       !_output->forensic_mark_video(), _output->forensic_mark_audio() ? boost::optional<int>() : 0
-                                                                       )
-                                                               )
+                                                       new KDMWithMetadata(name_values, i->cinema.get(), i->cinema->emails, encrypted)
                                                        )
                                                );
                                }
                        }
 
-                       if (screen_kdms.empty()) {
+                       if (kdms.empty()) {
                                return;
                        }
 
                        pair<shared_ptr<Job>, int> result = _output->make (
-                               screen_kdms, title, _timing, bind (&DOMFrame::confirm_overwrite, this, _1)
+                               kdms, title, bind (&DOMFrame::confirm_overwrite, this, _1)
                                );
 
                        if (result.first) {
@@ -476,44 +450,6 @@ private:
                        shared_ptr<const dcp::CertificateChain> chain = Config::instance()->decryption_chain();
                        DCPOMATIC_ASSERT (chain->key());
 
-#ifdef DCPOMATIC_VARIANT_SWAROOP
-                       try {
-                               cxml::Document test_doc;
-                               string const xml_string = dcp::file_to_string (wx_to_std(d->GetPath()), MAX_KDM_SIZE);
-                               test_doc.read_string (xml_string);
-                               if (test_doc.root_name() == "ECinemaSecurityMessage") {
-                                       EncryptedECinemaKDM ekdm(xml_string);
-                                       /* Decrypt the DKDM to make sure that we can */
-                                       DecryptedECinemaKDM dkdm(ekdm, chain->key().get());
-
-                                       shared_ptr<DKDMBase> new_dkdm(new ECinemaDKDM(ekdm));
-                                       shared_ptr<DKDMGroup> group = dynamic_pointer_cast<DKDMGroup> (selected_dkdm());
-                                       if (!group) {
-                                               group = Config::instance()->dkdms();
-                                       }
-                                       add_dkdm_model (new_dkdm, group);
-                                       add_dkdm_view (new_dkdm);
-                                       d->Destroy ();
-                                       return;
-                               }
-                       } catch (KDMError& e) {
-                               error_dialog (
-                                       this, "Could not read file as a KDM.  Perhaps it is badly formatted, created with the wrong certificate, or not a KDM at all.",
-                                       std_to_wx(e.what())
-                                       );
-                               d->Destroy ();
-                               return;
-                       } catch (dcp::MiscError& e) {
-                               error_dialog (
-                                       this,
-                                       _("Could not read file as a KDM.  It is much too large.  Make sure you are loading a DKDM (XML) file."),
-                                       std_to_wx(e.what())
-                                       );
-                               d->Destroy ();
-                               return;
-                       }
-#endif
-
                        try {
                                dcp::EncryptedKDM ekdm(dcp::file_to_string (wx_to_std (d->GetPath ()), MAX_KDM_SIZE));
                                /* Decrypt the DKDM to make sure that we can */
@@ -706,10 +642,8 @@ private:
                        unsetenv ("UBUNTU_MENUPROXY");
 #endif
 
-#ifdef __WXOSX__
-                       ProcessSerialNumber serial;
-                       GetCurrentProcess (&serial);
-                       TransformProcessType (&serial, kProcessTransformToForegroundApplication);
+#ifdef DCPOMATIC_OSX
+                       make_foreground_application ();
 #endif
 
                        dcpomatic_setup_path_encoding ();