Merge master.
[dcpomatic.git] / src / lib / dci_metadata.cc
index 2b4cc3ae710cf9314c7d691424edb06429383f82..c80d913056f578ff9c6760b8c48db9bb36f8e8a3 100644 (file)
@@ -1,5 +1,5 @@
 /*
-    Copyright (C) 2012 Carl Hetherington <cth@carlh.net>
+    Copyright (C) 2012-2014 Carl Hetherington <cth@carlh.net>
 
     This program is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
 */
 
 #include <iostream>
+#include <libcxml/cxml.h>
+#include <dcp/raw_convert.h>
 #include "dci_metadata.h"
 
-using namespace std;
+#include "i18n.h"
+
+using std::string;
+using boost::shared_ptr;
+using dcp::raw_convert;
+
+DCIMetadata::DCIMetadata (cxml::ConstNodePtr node)
+{
+       content_version = node->number_child<int> ("ContentVersion");
+       audio_language = node->string_child ("AudioLanguage");
+       subtitle_language = node->string_child ("SubtitleLanguage");
+       territory = node->string_child ("Territory");
+       rating = node->string_child ("Rating");
+       studio = node->string_child ("Studio");
+       facility = node->string_child ("Facility");
+       package_type = node->string_child ("PackageType");
+}
 
 void
-DCIMetadata::write (ostream& f) const
+DCIMetadata::as_xml (xmlpp::Node* root) const
 {
-       f << "audio_language " << audio_language << "\n";
-       f << "subtitle_language " << subtitle_language << "\n";
-       f << "territory " << territory << "\n";
-       f << "rating " << rating << "\n";
-       f << "studio " << studio << "\n";
-       f << "facility " << facility << "\n";
-       f << "package_type " << package_type << "\n";
+       root->add_child("ContentVersion")->add_child_text (raw_convert<string> (content_version));
+       root->add_child("AudioLanguage")->add_child_text (audio_language);
+       root->add_child("SubtitleLanguage")->add_child_text (subtitle_language);
+       root->add_child("Territory")->add_child_text (territory);
+       root->add_child("Rating")->add_child_text (rating);
+       root->add_child("Studio")->add_child_text (studio);
+       root->add_child("Facility")->add_child_text (facility);
+       root->add_child("PackageType")->add_child_text (package_type);
 }
 
 void
-DCIMetadata::read (string k, string v)
+DCIMetadata::read_old_metadata (string k, string v)
 {
-       if (k == "audio_language") {
+       if (k == N_("audio_language")) {
                audio_language = v;
-       } else if (k == "subtitle_language") {
+       } else if (k == N_("subtitle_language")) {
                subtitle_language = v;
-       } else if (k == "territory") {
+       } else if (k == N_("territory")) {
                territory = v;
-       } else if (k == "rating") {
+       } else if (k == N_("rating")) {
                rating = v;
-       } else if (k == "studio") {
+       } else if (k == N_("studio")) {
                studio = v;
-       } else if (k == "facility") {
+       } else if (k == N_("facility")) {
                facility = v;
-       } else if (k == "package_type") {
+       } else if (k == N_("package_type")) {
                package_type = v;
        }
 }