void
Cinema::remove_screen (shared_ptr<Screen> s)
{
- _screens.remove (s);
+ auto iter = std::find(_screens.begin(), _screens.end(), s);
+ if (iter != _screens.end()) {
+ _screens.erase(iter);
+ }
}
void
class Cinema : public std::enable_shared_from_this<Cinema>
{
public:
- Cinema (std::string const & name_, std::list<std::string> const & e, std::string notes_, int utc_offset_hour, int utc_offset_minute)
+ Cinema(std::string const & name_, std::vector<std::string> const & e, std::string notes_, int utc_offset_hour, int utc_offset_minute)
: name (name_)
, emails (e)
, notes (notes_)
void set_utc_offset_minute (int m);
std::string name;
- std::list<std::string> emails;
+ std::vector<std::string> emails;
std::string notes;
int utc_offset_hour () const {
return _utc_offset_minute;
}
- std::list<std::shared_ptr<dcpomatic::Screen>> screens () const {
+ std::vector<std::shared_ptr<dcpomatic::Screen>> screens() const {
return _screens;
}
private:
- std::list<std::shared_ptr<dcpomatic::Screen>> _screens;
+ std::vector<std::shared_ptr<dcpomatic::Screen>> _screens;
/** Offset such that the equivalent time in UTC can be determined
by subtracting the offset from the local time.
*/
std::string const& name_,
std::string const& notes_,
boost::optional<dcp::Certificate> recipient_,
- std::list<std::string> emails_,
+ std::vector<std::string> emails_,
int utc_offset_hour_,
int utc_offset_minute_
)
void as_xml (xmlpp::Element *) const override;
- std::list<std::string> emails;
+ std::vector<std::string> emails;
int utc_offset_hour;
int utc_offset_minute;
};
using std::cout;
-using std::list;
using std::min;
using std::pair;
using std::shared_ptr;
using std::string;
+using std::vector;
using dcp::ArrayData;
-Emailer::Emailer (string from, list<string> to, string subject, string body)
+Emailer::Emailer(string from, vector<string> to, string subject, string body)
: _from (from)
, _to (to)
, _subject (subject)
string
-Emailer::address_list (list<string> addresses)
+Emailer::address_list(vector<string> addresses)
{
string o;
for (auto i: addresses) {
class Emailer
{
public:
- Emailer (std::string from, std::list<std::string> to, std::string subject, std::string body);
+ Emailer(std::string from, std::vector<std::string> to, std::string subject, std::string body);
void add_cc (std::string cc);
void add_bcc (std::string bcc);
return _email;
}
- static std::string address_list (std::list<std::string> addresses);
+ static std::string address_list(std::vector<std::string> addresses);
private:
static std::string encode_rfc1342 (std::string subject);
std::string _from;
- std::list<std::string> _to;
+ std::vector<std::string> _to;
std::string _subject;
std::string _body;
- std::list<std::string> _cc;
- std::list<std::string> _bcc;
+ std::vector<std::string> _cc;
+ std::vector<std::string> _bcc;
struct Attachment {
boost::filesystem::path file;
std::string mime_type;
};
- std::list<Attachment> _attachments;
+ std::vector<Attachment> _attachments;
std::string _email;
size_t _offset;
std::string _notes;
static
void
from_film (
- list<shared_ptr<Screen>> screens,
+ vector<shared_ptr<Screen>> screens,
boost::filesystem::path film_dir,
bool verbose,
boost::filesystem::path output,
static
void
from_dkdm (
- list<shared_ptr<Screen>> screens,
+ vector<shared_ptr<Screen>> screens,
dcp::DecryptedKDM dkdm,
bool verbose,
boost::filesystem::path output,
name_values['e'] = end.date() + " " + end.time_of_day(true, false);
name_values['i'] = kdm.cpl_id();
- kdms.push_back (make_shared<KDMWithMetadata>(name_values, i->cinema.get(), i->cinema ? i->cinema->emails : list<string>(), kdm));
+ kdms.push_back(make_shared<KDMWithMetadata>(name_values, i->cinema.get(), i->cinema ? i->cinema->emails : vector<string>(), kdm));
}
write_files (kdms, zip, output, container_name_format, filename_format, verbose, out);
if (email) {
shared_ptr<Cinema> cinema;
optional<boost::filesystem::path> certificate;
optional<string> screen;
- list<shared_ptr<Screen>> screens;
+ vector<shared_ptr<Screen>> screens;
optional<dcp::EncryptedKDM> dkdm;
optional<boost::posix_time::ptime> valid_from;
optional<boost::posix_time::ptime> valid_to;
(for lookup) and by creating a Cinema which the next Screen will be added to.
*/
cinema_name = optarg;
- cinema = make_shared<Cinema>(optarg, list<string>(), "", 0, 0);
+ cinema = make_shared<Cinema>(optarg, vector<string>(), "", 0, 0);
break;
case 'S':
/* Similarly, this could be the name of a new (temporary) screen or the name of a screen
class KDMWithMetadata
{
public:
- KDMWithMetadata (dcp::NameFormat::Map const& name_values, void const* group, std::list<std::string> emails, dcp::EncryptedKDM kdm)
+ KDMWithMetadata(dcp::NameFormat::Map const& name_values, void const* group, std::vector<std::string> emails, dcp::EncryptedKDM kdm)
: _name_values (name_values)
, _group (group)
, _emails (emails)
return _group;
}
- std::list<std::string> emails () const {
+ std::vector<std::string> emails() const {
return _emails;
}
private:
dcp::NameFormat::Map _name_values;
void const* _group;
- std::list<std::string> _emails;
+ std::vector<std::string> _emails;
dcp::EncryptedKDM _kdm;
};
name_values['e'] = end.date() + " " + end.time_of_day(true, false);
name_values['i'] = kdm.cpl_id();
- return make_shared<KDMWithMetadata>(name_values, cinema.get(), cinema ? cinema->emails : list<string>(), kdm);
+ return make_shared<KDMWithMetadata>(name_values, cinema.get(), cinema ? cinema->emails : vector<string>(), kdm);
}
#include "config.h"
#include "emailer.h"
#include "compose.hpp"
-#include <list>
#include "i18n.h"
using std::string;
-using std::list;
using std::shared_ptr;
}
set_progress_unknown ();
- list<string> to;
- to.push_back (config->notification_to());
- Emailer email (config->notification_from(), to, config->notification_subject(), _body);
+ Emailer email (config->notification_from(), { config->notification_to() }, config->notification_subject(), _body);
for (auto i: config->notification_cc()) {
email.add_cc (i);
}
for (auto i: translations) {
body += i.first + "\n" + i.second + "\n\n";
}
- list<string> to = { "carl@dcpomatic.com" };
if (dialog.email().find("@") == string::npos) {
error_dialog (this, _("You must enter a valid email address when sending translations, "
"otherwise the DCP-o-matic maintainers cannot credit you or contact you with questions."));
} else {
- Emailer emailer(dialog.email(), to, "DCP-o-matic translations", body);
+ Emailer emailer(dialog.email(), { "carl@dcpomatic.com" }, "DCP-o-matic translations", body);
try {
emailer.send ("main.carlh.net", 2525, EmailProtocol::STARTTLS);
} catch (NetworkError& e) {
using std::back_inserter;
using std::copy;
using std::cout;
-using std::list;
using std::string;
using std::vector;
using boost::bind;
#endif
-CinemaDialog::CinemaDialog (wxWindow* parent, wxString title, string name, list<string> emails, string notes, int utc_offset_hour, int utc_offset_minute)
+CinemaDialog::CinemaDialog(wxWindow* parent, wxString title, string name, vector<string> emails, string notes, int utc_offset_hour, int utc_offset_minute)
: wxDialog (parent, wxID_ANY, title)
{
auto overall_sizer = new wxBoxSizer (wxVERTICAL);
vector<EditableListColumn> columns;
columns.push_back (EditableListColumn(_("Address"), 500, true));
_email_list = new EditableList<string, EmailDialog> (
- this, columns, bind (&CinemaDialog::get_emails, this), bind (&CinemaDialog::set_emails, this, _1), [](string s, int) {
+ this, columns, bind(&CinemaDialog::emails, this), bind (&CinemaDialog::set_emails, this, _1), [](string s, int) {
return s;
}, EditableListTitle::INVISIBLE, EditableListButton::NEW | EditableListButton::EDIT | EditableListButton::REMOVE
);
vector<string>
-CinemaDialog::get_emails () const
+CinemaDialog::emails() const
{
return _emails;
}
-list<string>
-CinemaDialog::emails () const
-{
- list<string> e;
- copy (_emails.begin(), _emails.end(), back_inserter(e));
- return e;
-}
-
-
int
CinemaDialog::utc_offset_hour () const
{
wxWindow *,
wxString,
std::string name = "",
- std::list<std::string> emails = std::list<std::string> (),
+ std::vector<std::string> emails = std::vector<std::string>(),
std::string notes = "",
int utc_offset_hour = 0,
int utc_offset_minute = 0
std::string name () const;
std::string notes () const;
- std::list<std::string> emails () const;
+ std::vector<std::string> emails () const;
int utc_offset_hour () const;
int utc_offset_minute () const;
private:
- std::vector<std::string> get_emails () const;
void set_emails (std::vector<std::string>);
wxTextCtrl* _name;
using std::cout;
-using std::list;
using std::string;
using std::vector;
using boost::bind;
RecipientDialog::RecipientDialog (
- wxWindow* parent, wxString title, string name, string notes, list<string> emails, int utc_offset_hour, int utc_offset_minute, optional<dcp::Certificate> recipient
+ wxWindow* parent, wxString title, string name, string notes, vector<string> emails, int utc_offset_hour, int utc_offset_minute, optional<dcp::Certificate> recipient
)
: wxDialog (parent, wxID_ANY, title)
, _recipient (recipient)
}
-list<string>
+vector<string>
RecipientDialog::emails () const
{
- list<string> e;
- copy (_emails.begin(), _emails.end(), back_inserter(e));
- return e;
+ return _emails;
}
wxString,
std::string name = "",
std::string notes = "",
- std::list<std::string> emails = std::list<std::string>(),
+ std::vector<std::string> emails = std::vector<std::string>(),
int utc_offset_hour = 0,
int utc_offset_minute = 0,
boost::optional<dcp::Certificate> c = boost::optional<dcp::Certificate>()
std::string name () const;
std::string notes () const;
boost::optional<dcp::Certificate> recipient () const;
- std::list<std::string> emails () const;
+ std::vector<std::string> emails () const;
int utc_offset_hour () const;
int utc_offset_minute () const;
#include <fstream>
-using std::list;
-using std::ofstream;
using std::make_shared;
+using std::ofstream;
using std::string;
+using std::vector;
using boost::optional;
Config::instance()->write();
- Config::instance()->add_cinema(make_shared<Cinema>("My Great Cinema", list<string>(), "", 0, 0));
+ Config::instance()->add_cinema(make_shared<Cinema>("My Great Cinema", vector<string>(), "", 0, 0));
Config::instance()->write();
boost::filesystem::copy_file (dir / "cinemas.xml", dir / "backup_for_test.xml");
#include <iostream>
-using std::list;
using std::string;
using std::vector;
using boost::optional;
auto config = Config::instance();
auto const cert = dcp::Certificate(dcp::file_to_string("test/data/cert.pem"));
- auto cinema_a = std::make_shared<Cinema>("Dean's Screens", list<string>(), "", 0, 0);
+ auto cinema_a = std::make_shared<Cinema>("Dean's Screens", vector<string>(), "", 0, 0);
cinema_a->add_screen(std::make_shared<dcpomatic::Screen>("Screen 1", "", cert, boost::none, std::vector<TrustedDevice>()));
cinema_a->add_screen(std::make_shared<dcpomatic::Screen>("Screen 2", "", cert, boost::none, std::vector<TrustedDevice>()));
cinema_a->add_screen(std::make_shared<dcpomatic::Screen>("Screen 3", "", cert, boost::none, std::vector<TrustedDevice>()));
config->add_cinema(cinema_a);
- auto cinema_b = std::make_shared<Cinema>("Floyd's Celluloid", list<string>(), "", 0, 0);
+ auto cinema_b = std::make_shared<Cinema>("Floyd's Celluloid", vector<string>(), "", 0, 0);
cinema_b->add_screen(std::make_shared<dcpomatic::Screen>("Foo", "", cert, boost::none, std::vector<TrustedDevice>()));
cinema_b->add_screen(std::make_shared<dcpomatic::Screen>("Bar", "", cert, boost::none, std::vector<TrustedDevice>()));
config->add_cinema(cinema_b);
auto crypt_cert = c->decryption_chain()->leaf();
/* Cinema A: UTC +4:30 */
- auto cinema_a = make_shared<Cinema>("Cinema A", list<string>(), "", 4, 30);
+ auto cinema_a = make_shared<Cinema>("Cinema A", vector<string>(), "", 4, 30);
cinema_a_screen_1 = std::make_shared<dcpomatic::Screen>("Screen 1", "", crypt_cert, boost::none, vector<TrustedDevice>());
cinema_a->add_screen (cinema_a_screen_1);
cinema_a_screen_2 = std::make_shared<dcpomatic::Screen>("Screen 2", "", crypt_cert, boost::none, vector<TrustedDevice>());
c->add_cinema (cinema_a);
/* Cinema B: UTC -1:00 */
- auto cinema_b = make_shared<Cinema>("Cinema B", list<string>(), "", -1, 0);
+ auto cinema_b = make_shared<Cinema>("Cinema B", vector<string>(), "", -1, 0);
cinema_b_screen_x = std::make_shared<dcpomatic::Screen>("Screen X", "", crypt_cert, boost::none, vector<TrustedDevice>());
cinema_b->add_screen (cinema_b_screen_x);
cinema_b_screen_y = std::make_shared<dcpomatic::Screen>("Screen Y", "", crypt_cert, boost::none, vector<TrustedDevice>());
string const from_string = from.date() + " " + from.time_of_day(true, false);
string const until_string = until.date() + " " + until.time_of_day(true, false);
- list<shared_ptr<dcpomatic::Screen>> screens = {
+ vector<shared_ptr<dcpomatic::Screen>> screens = {
cinema_a_screen_2, cinema_b_screen_x, cinema_a_screen_1, (cinema_b_screen_z)
};