Allow changing colour conversion settings for multiple pieces of content at the same...
[dcpomatic.git] / src / lib / spl.cc
index 544706694c1face7981ae0d9eea23ca3289fa34f..e8e86f89ce227b401c4ade2210e176bdd45dec1d 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2018 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2018-2019 Carl Hetherington <cth@carlh.net>
 
     This file is part of DCP-o-matic.
 
 #include "spl.h"
 #include "content_store.h"
 #include <libcxml/cxml.h>
+#include <dcp/raw_convert.h>
 #include <libxml++/libxml++.h>
 #include <boost/foreach.hpp>
+#include <iostream>
 
+using std::cout;
+using std::string;
 using boost::shared_ptr;
+using dcp::raw_convert;
 
-bool
+void
 SPL::read (boost::filesystem::path path, ContentStore* store)
 {
+       _path = path;
+
        _spl.clear ();
+       _missing = false;
        cxml::Document doc ("SPL");
        doc.read_file (path);
-       bool missing = false;
+       _id = doc.string_child("Id");
        BOOST_FOREACH (cxml::ConstNodePtr i, doc.node_children("Entry")) {
                shared_ptr<Content> c = store->get(i->string_child("Digest"));
                if (c) {
                        add (SPLEntry(c, i));
                } else {
-                       missing = true;
+                       _missing = true;
                }
        }
 
-       _name = path.filename().string();
-       return missing;
+       _allowed_shows = doc.optional_number_child<int>("AllowedShows");
 }
 
 void
 SPL::write (boost::filesystem::path path) const
 {
+       _path = path;
+
        xmlpp::Document doc;
        xmlpp::Element* root = doc.create_root_node ("SPL");
+       root->add_child("Id")->add_child_text (_id);
        BOOST_FOREACH (SPLEntry i, _spl) {
                i.as_xml (root->add_child("Entry"));
        }
+       if (_allowed_shows) {
+               root->add_child("AllowedShows")->add_child_text(raw_convert<string>(*_allowed_shows));
+       }
        doc.write_to_file_formatted (path.string());
 }