summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2015-11-15 20:23:25 +0000
committerCarl Hetherington <cth@carlh.net>2015-11-15 20:23:25 +0000
commite170d9908c191180aefe71ff7cfa81a5ba08ed83 (patch)
treebfa566bcf3242500e030cc1bbed64a313846ffa8
parent3a67f024a614687a811ecb5c96a56fc664f04c3a (diff)
Save trusted devices.
-rw-r--r--src/lib/screen.cc9
-rw-r--r--src/lib/screen.h4
-rw-r--r--src/wx/screen_dialog.cc3
-rw-r--r--src/wx/screen_dialog.h15
-rw-r--r--src/wx/screens_panel.cc5
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 <libxml++/libxml++.h>
+#include <boost/foreach.hpp>
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<dcp::Certificate> rec)
+ Screen (std::string const & n, boost::optional<dcp::Certificate> rec, std::vector<dcp::Certificate> td)
: name (n)
, recipient (rec)
+ , trusted_devices (td)
{}
Screen (cxml::ConstNodePtr);
@@ -45,4 +46,5 @@ public:
boost::shared_ptr<Cinema> cinema;
std::string name;
boost::optional<dcp::Certificate> recipient;
+ std::vector<dcp::Certificate> 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<dcp::Certificate> recipient)
+ScreenDialog::ScreenDialog (wxWindow* parent, string title, string name, optional<dcp::Certificate> recipient, vector<dcp::Certificate> 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<dcp::Certificate> c = boost::optional<dcp::Certificate> ());
+ ScreenDialog (
+ wxWindow *,
+ std::string,
+ std::string name = "",
+ boost::optional<dcp::Certificate> c = boost::optional<dcp::Certificate> (),
+ std::vector<dcp::Certificate> d = std::vector<dcp::Certificate> ()
+ );
std::string name () const;
boost::optional<dcp::Certificate> recipient () const;
+ std::vector<dcp::Certificate> trusted_devices () {
+ return _trusted_devices;
+ }
private:
void get_recipient_from_file ();
@@ -41,10 +50,6 @@ private:
void setup_sensitivity ();
void set_recipient (boost::optional<dcp::Certificate>);
- std::vector<dcp::Certificate> trusted_devices () {
- return _trusted_devices;
- }
-
void set_trusted_devices (std::vector<dcp::Certificate> 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<Screen> s (new Screen (d->name(), d->recipient()));
+ shared_ptr<Screen> 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<wxTreeItemId, shared_ptr<Screen> > 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 ();
}