From fe03f00ba6aaed3363496117ebd5c3e9dc5d8924 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Thu, 14 Jan 2016 10:21:08 +0000 Subject: [PATCH] Multiple CC addresses for KDM emails (#785). --- ChangeLog | 4 ++++ src/lib/cinema_kdms.cc | 4 ++-- src/lib/config.cc | 12 +++++++++--- src/lib/config.h | 6 +++--- src/wx/config_dialog.cc | 32 ++++++++++++++++++-------------- 5 files changed, 36 insertions(+), 22 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0175c969e..1f5889a30 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2016-01-14 Carl Hetherington + + * Allow multiple CC addresses for KDM emails (#785). + 2016-01-13 Carl Hetherington * Fix incorrect fades when trim is being used. 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 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 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 _kdm_cc; std::string _kdm_bcc; std::string _kdm_email; boost::shared_ptr _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 + Copyright (C) 2012-2016 Carl Hetherington 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 columns; + columns.push_back (wx_to_std (_("Address"))); + add_label_to_sizer (table, _panel, _("CC addresses"), true); + _kdm_cc = new EditableList ( + _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* _kdm_cc; wxTextCtrl* _kdm_bcc; wxTextCtrl* _kdm_email; wxButton* _reset_kdm_email; -- 2.30.2