summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2016-01-14 10:21:08 +0000
committerCarl Hetherington <cth@carlh.net>2016-01-14 10:21:08 +0000
commitfe03f00ba6aaed3363496117ebd5c3e9dc5d8924 (patch)
treee10b2802be61bc05e4bbad6c20f6f3b98652faae /src
parent65328f6e751fd8121edc248f158c234ebe2160ed (diff)
Multiple CC addresses for KDM emails (#785).
Diffstat (limited to 'src')
-rw-r--r--src/lib/cinema_kdms.cc4
-rw-r--r--src/lib/config.cc12
-rw-r--r--src/lib/config.h6
-rw-r--r--src/wx/config_dialog.cc32
4 files changed, 32 insertions, 22 deletions
diff --git a/src/lib/cinema_kdms.cc b/src/lib/cinema_kdms.cc
index 9b106a011..9fda6e2e9 100644
--- a/src/lib/cinema_kdms.cc
+++ b/src/lib/cinema_kdms.cc
@@ -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 ());
diff --git a/src/lib/config.cc b/src/lib/config.cc
index 54d42a1b9..81acd9f62 100644
--- a/src/lib/config.cc
+++ b/src/lib/config.cc
@@ -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);
diff --git a/src/lib/config.h b/src/lib/config.h
index 6b1f3fb87..049b3663c 100644
--- a/src/lib/config.h
+++ b/src/lib/config.h
@@ -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;
diff --git a/src/wx/config_dialog.cc b/src/wx/config_dialog.cc
index f503af4f4..9836703bd 100644
--- a/src/wx/config_dialog.cc
+++ b/src/wx/config_dialog.cc
@@ -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;