From e170d9908c191180aefe71ff7cfa81a5ba08ed83 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 15 Nov 2015 20:23:25 +0000 Subject: [PATCH] Save trusted devices. --- src/lib/screen.cc | 9 +++++++++ src/lib/screen.h | 4 +++- src/wx/screen_dialog.cc | 3 ++- src/wx/screen_dialog.h | 15 ++++++++++----- src/wx/screens_panel.cc | 5 +++-- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/src/lib/screen.cc b/src/lib/screen.cc index 0876e770b..159c4326b 100644 --- a/src/lib/screen.cc +++ b/src/lib/screen.cc @@ -19,6 +19,7 @@ #include "screen.h" #include +#include Screen::Screen (cxml::ConstNodePtr node) : name (node->string_child ("Name")) @@ -28,6 +29,10 @@ Screen::Screen (cxml::ConstNodePtr node) } else if (node->optional_string_child ("Recipient")) { recipient = dcp::Certificate (node->string_child ("Recipient")); } + + BOOST_FOREACH (cxml::ConstNodePtr i, node->node_children ("TrustedDevice")) { + trusted_devices.push_back (dcp::Certificate (i->content ())); + } } void @@ -37,4 +42,8 @@ Screen::as_xml (xmlpp::Element* parent) const if (recipient) { parent->add_child("Recipient")->add_child_text (recipient->certificate (true)); } + + BOOST_FOREACH (dcp::Certificate const & i, trusted_devices) { + parent->add_child("TrustedDevice")->add_child_text (i.certificate (true)); + } } diff --git a/src/lib/screen.h b/src/lib/screen.h index 6e3b8b01d..0ae483544 100644 --- a/src/lib/screen.h +++ b/src/lib/screen.h @@ -33,9 +33,10 @@ class Cinema; class Screen { public: - Screen (std::string const & n, boost::optional rec) + Screen (std::string const & n, boost::optional rec, std::vector td) : name (n) , recipient (rec) + , trusted_devices (td) {} Screen (cxml::ConstNodePtr); @@ -45,4 +46,5 @@ public: boost::shared_ptr cinema; std::string name; boost::optional recipient; + std::vector trusted_devices; }; diff --git a/src/wx/screen_dialog.cc b/src/wx/screen_dialog.cc index a8cb1cbed..bec531879 100644 --- a/src/wx/screen_dialog.cc +++ b/src/wx/screen_dialog.cc @@ -71,9 +71,10 @@ column (dcp::Certificate c) return c.thumbprint (); } -ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, optional recipient) +ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, optional recipient, vector trusted_devices) : wxDialog (parent, wxID_ANY, std_to_wx (title)) , _recipient (recipient) + , _trusted_devices (trusted_devices) { wxBoxSizer* overall_sizer = new wxBoxSizer (wxVERTICAL); SetSizer (overall_sizer); diff --git a/src/wx/screen_dialog.h b/src/wx/screen_dialog.h index edfb619b5..2985516c4 100644 --- a/src/wx/screen_dialog.h +++ b/src/wx/screen_dialog.h @@ -29,10 +29,19 @@ class FileDialogWrapper; class ScreenDialog : public wxDialog { public: - ScreenDialog (wxWindow *, std::string, std::string name = "", boost::optional c = boost::optional ()); + ScreenDialog ( + wxWindow *, + std::string, + std::string name = "", + boost::optional c = boost::optional (), + std::vector d = std::vector () + ); std::string name () const; boost::optional recipient () const; + std::vector trusted_devices () { + return _trusted_devices; + } private: void get_recipient_from_file (); @@ -41,10 +50,6 @@ private: void setup_sensitivity (); void set_recipient (boost::optional); - std::vector trusted_devices () { - return _trusted_devices; - } - void set_trusted_devices (std::vector d) { _trusted_devices = d; } diff --git a/src/wx/screens_panel.cc b/src/wx/screens_panel.cc index a8138a893..3328fe61e 100644 --- a/src/wx/screens_panel.cc +++ b/src/wx/screens_panel.cc @@ -226,7 +226,7 @@ ScreensPanel::add_screen_clicked () return; } - shared_ptr s (new Screen (d->name(), d->recipient())); + shared_ptr s (new Screen (d->name(), d->recipient(), d->trusted_devices())); c->add_screen (s); add_screen (c, s); @@ -244,10 +244,11 @@ ScreensPanel::edit_screen_clicked () pair > s = selected_screens().front(); - ScreenDialog* d = new ScreenDialog (this, "Edit screen", s.second->name, s.second->recipient); + ScreenDialog* d = new ScreenDialog (this, "Edit screen", s.second->name, s.second->recipient, s.second->trusted_devices); if (d->ShowModal () == wxID_OK) { s.second->name = d->name (); s.second->recipient = d->recipient (); + s.second->trusted_devices = d->trusted_devices (); _targets->SetItemText (s.first, std_to_wx (d->name())); Config::instance()->changed (); } -- 2.30.2