Extract common code out into kdm_for_screen()
[dcpomatic.git] / src / lib / spl.cc
index 74538aa990d9007e9728100cded052043d6a3804..ccf809f8bc5523f2e98dd81f4b9a84bfe40cb157 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)
 {
        _spl.clear ();
+       _missing = false;
        cxml::Document doc ("SPL");
        doc.read_file (path);
-       bool missing = false;
+       _id = doc.string_child("Id");
+       _name = doc.string_child("Name");
        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));
+                       add (SPLEntry(c));
                } else {
-                       missing = true;
+                       _missing = true;
                }
        }
-
-       _name = path.filename().string();
-       return missing;
 }
 
 void
@@ -53,6 +55,8 @@ SPL::write (boost::filesystem::path path) const
 {
        xmlpp::Document doc;
        xmlpp::Element* root = doc.create_root_node ("SPL");
+       root->add_child("Id")->add_child_text (_id);
+       root->add_child("Name")->add_child_text (_name);
        BOOST_FOREACH (SPLEntry i, _spl) {
                i.as_xml (root->add_child("Entry"));
        }