Multiple CC addresses for KDM emails (#785).
authorCarl Hetherington <cth@carlh.net>
Thu, 14 Jan 2016 10:21:08 +0000 (10:21 +0000)
committerCarl Hetherington <cth@carlh.net>
Thu, 14 Jan 2016 10:21:08 +0000 (10:21 +0000)
ChangeLog
src/lib/cinema_kdms.cc
src/lib/config.cc
src/lib/config.h
src/wx/config_dialog.cc

index 0175c969e631713713bbee5e404b810353d86bbc..1f5889a30d89357e8f3fa497d3bba279ada27597 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2016-01-14  Carl Hetherington  <cth@carlh.net>
+
+       * Allow multiple CC addresses for KDM emails (#785).
+
 2016-01-13  Carl Hetherington  <cth@carlh.net>
 
        * Fix incorrect fades when trim is being used.
index 9b106a0111285b87ceee289ffba88f4344049c15..9fda6e2e9ca8132a711194580b785e6247f18054 100644 (file)
@@ -158,8 +158,8 @@ CinemaKDMs::email (
 
                Emailer email (config->kdm_from(), i.cinema->emails, subject, body);
 
-               if (!config->kdm_cc().empty ()) {
-                       email.add_cc (config->kdm_cc ());
+               BOOST_FOREACH (string i, config->kdm_cc()) {
+                       email.add_cc (i);
                }
                if (!config->kdm_bcc().empty ()) {
                        email.add_bcc (config->kdm_bcc ());
index 54d42a1b94899b405759673d4acf6e5db01f53f2..81acd9f624389c02f2be9370ef9d53d25eb70085 100644 (file)
@@ -92,7 +92,7 @@ Config::set_defaults ()
        _mail_user = "";
        _mail_password = "";
        _kdm_from = "";
-       _kdm_cc = "";
+       _kdm_cc.clear ();
        _kdm_bcc = "";
        _check_for_updates = false;
        _check_for_test_updates = false;
@@ -238,7 +238,11 @@ Config::read ()
        _mail_password = f.optional_string_child("MailPassword").get_value_or ("");
        _kdm_subject = f.optional_string_child ("KDMSubject").get_value_or (_("KDM delivery: $CPL_NAME"));
        _kdm_from = f.string_child ("KDMFrom");
-       _kdm_cc = f.optional_string_child ("KDMCC").get_value_or ("");
+       BOOST_FOREACH (cxml::ConstNodePtr i, f.node_children("KDMCC")) {
+               if (!i->content().empty()) {
+                       _kdm_cc.push_back (i->content ());
+               }
+       }
        _kdm_bcc = f.optional_string_child ("KDMBCC").get_value_or ("");
        _kdm_email = f.string_child ("KDMEmail");
 
@@ -391,7 +395,9 @@ Config::write () const
        root->add_child("MailPassword")->add_child_text (_mail_password);
        root->add_child("KDMSubject")->add_child_text (_kdm_subject);
        root->add_child("KDMFrom")->add_child_text (_kdm_from);
-       root->add_child("KDMCC")->add_child_text (_kdm_cc);
+       BOOST_FOREACH (string i, _kdm_cc) {
+               root->add_child("KDMCC")->add_child_text (i);
+       }
        root->add_child("KDMBCC")->add_child_text (_kdm_bcc);
        root->add_child("KDMEmail")->add_child_text (_kdm_email);
 
index 6b1f3fb874e16cb13d858e4fa3302ed8bb256733..049b3663c70b416f1144cc786301cceba0638bd5 100644 (file)
@@ -195,7 +195,7 @@ public:
                return _kdm_from;
        }
 
-       std::string kdm_cc () const {
+       std::vector<std::string> kdm_cc () const {
                return _kdm_cc;
        }
 
@@ -386,7 +386,7 @@ public:
                maybe_set (_kdm_from, f);
        }
 
-       void set_kdm_cc (std::string f) {
+       void set_kdm_cc (std::vector<std::string> f) {
                maybe_set (_kdm_cc, f);
        }
 
@@ -523,7 +523,7 @@ private:
        std::string _mail_password;
        std::string _kdm_subject;
        std::string _kdm_from;
-       std::string _kdm_cc;
+       std::vector<std::string> _kdm_cc;
        std::string _kdm_bcc;
        std::string _kdm_email;
        boost::shared_ptr<const dcp::CertificateChain> _signer_chain;
index f503af4f47d1f502e9b6986d7372775d5ec43419..9836703bdb193259e1145274ab9340220bf6934c 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012-2015 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2016 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
@@ -29,6 +29,7 @@
 #include "isdcf_metadata_dialog.h"
 #include "server_dialog.h"
 #include "make_chain_dialog.h"
+#include "email_dialog.h"
 #include "lib/config.h"
 #include "lib/ratio.h"
 #include "lib/filter.h"
@@ -1134,6 +1135,12 @@ private:
        wxTextCtrl* _tms_password;
 };
 
+static string
+column (string s)
+{
+       return s;
+}
+
 class KDMEmailPage : public StandardPage
 {
 public:
@@ -1143,7 +1150,7 @@ public:
                /* We have to force both width and height of this one */
                : StandardPage (wxSize (480, 128), border)
 #else
-                : StandardPage (panel_size, border)
+               : StandardPage (panel_size, border)
 #endif
        {}
 
@@ -1194,16 +1201,20 @@ private:
                _kdm_from = new wxTextCtrl (_panel, wxID_ANY);
                table->Add (_kdm_from, 1, wxEXPAND | wxALL);
 
-               add_label_to_sizer (table, _panel, _("CC address"), true);
-               _kdm_cc = new wxTextCtrl (_panel, wxID_ANY);
+               vector<string> columns;
+               columns.push_back (wx_to_std (_("Address")));
+               add_label_to_sizer (table, _panel, _("CC addresses"), true);
+               _kdm_cc = new EditableList<string, EmailDialog> (
+                       _panel, columns, bind (&Config::kdm_cc, Config::instance()), bind (&Config::set_kdm_cc, Config::instance(), _1), bind (&column, _1)
+                       );
                table->Add (_kdm_cc, 1, wxEXPAND | wxALL);
 
                add_label_to_sizer (table, _panel, _("BCC address"), true);
                _kdm_bcc = new wxTextCtrl (_panel, wxID_ANY);
                table->Add (_kdm_bcc, 1, wxEXPAND | wxALL);
 
-               _kdm_email = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (480, 128), wxTE_MULTILINE);
-               _panel->GetSizer()->Add (_kdm_email, 1, wxEXPAND | wxALL, _border);
+               _kdm_email = new wxTextCtrl (_panel, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize (-1, 200), wxTE_MULTILINE);
+               _panel->GetSizer()->Add (_kdm_email, 0, wxEXPAND | wxALL, _border);
 
                _reset_kdm_email = new wxButton (_panel, wxID_ANY, _("Reset to default subject and text"));
                _panel->GetSizer()->Add (_reset_kdm_email, 0, wxEXPAND | wxALL, _border);
@@ -1214,7 +1225,6 @@ private:
                _mail_password->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::mail_password_changed, this));
                _kdm_subject->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_subject_changed, this));
                _kdm_from->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_from_changed, this));
-               _kdm_cc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_cc_changed, this));
                _kdm_bcc->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_bcc_changed, this));
                _kdm_email->Bind (wxEVT_COMMAND_TEXT_UPDATED, boost::bind (&KDMEmailPage::kdm_email_changed, this));
                _reset_kdm_email->Bind (wxEVT_COMMAND_BUTTON_CLICKED, boost::bind (&KDMEmailPage::reset_kdm_email, this));
@@ -1230,7 +1240,6 @@ private:
                checked_set (_mail_password, config->mail_password ());
                checked_set (_kdm_subject, config->kdm_subject ());
                checked_set (_kdm_from, config->kdm_from ());
-               checked_set (_kdm_cc, config->kdm_cc ());
                checked_set (_kdm_bcc, config->kdm_bcc ());
                checked_set (_kdm_email, Config::instance()->kdm_email ());
        }
@@ -1265,11 +1274,6 @@ private:
                Config::instance()->set_kdm_from (wx_to_std (_kdm_from->GetValue ()));
        }
 
-       void kdm_cc_changed ()
-       {
-               Config::instance()->set_kdm_cc (wx_to_std (_kdm_cc->GetValue ()));
-       }
-
        void kdm_bcc_changed ()
        {
                Config::instance()->set_kdm_bcc (wx_to_std (_kdm_bcc->GetValue ()));
@@ -1298,7 +1302,7 @@ private:
        wxTextCtrl* _mail_password;
        wxTextCtrl* _kdm_subject;
        wxTextCtrl* _kdm_from;
-       wxTextCtrl* _kdm_cc;
+       EditableList<string, EmailDialog>* _kdm_cc;
        wxTextCtrl* _kdm_bcc;
        wxTextCtrl* _kdm_email;
        wxButton* _reset_kdm_email;