Basics of metadata dialog - ratings.
[dcpomatic.git] / src / lib / film.cc
index 6d7f77746312123bc278372f4164384d21495d83..6df0373167a58a9ec3252d24e169897e697b1210 100644 (file)
@@ -408,6 +408,9 @@ Film::metadata (bool with_content_paths) const
                m->set_attribute("Type", dcp::marker_to_string(i->first));
                m->add_child_text(raw_convert<string>(i->second.get()));
        }
+       BOOST_FOREACH (dcp::Rating i, _ratings) {
+               i.as_xml (root->add_child("Rating"));
+       }
        _playlist->as_xml (root->add_child ("Playlist"), with_content_paths);
 
        return doc;
@@ -546,6 +549,10 @@ Film::read_metadata (optional<boost::filesystem::path> path)
                _markers[dcp::marker_from_string(i->string_attribute("Type"))] = DCPTime(dcp::raw_convert<DCPTime::Type>(i->content()));
        }
 
+       BOOST_FOREACH (cxml::ConstNodePtr i, f.node_children("Rating")) {
+               _ratings.push_back (dcp::Rating(i));
+       }
+
        list<string> notes;
        /* This method is the only one that can return notes (so far) */
        _playlist->set_from_xml (shared_from_this(), f.node_child ("Playlist"), _state_version, notes);
@@ -1705,6 +1712,13 @@ Film::unset_marker (dcp::Marker type)
        _markers.erase (type);
 }
 
+void
+Film::set_ratings (vector<dcp::Rating> r)
+{
+       ChangeSignaller<Film> ch (this, RATINGS);
+       _ratings = r;
+}
+
 optional<DCPTime>
 Film::marker (dcp::Marker type) const
 {